Hello Milamber, But don't you find the "simple" test plan is really too simple to be realistic ? and might be misleading as is ?
I see in previous one lots of common misuse: - No pause - No response checks - No variabilisation - No example of regexp which is almost always necessary I agree we should update manual anyway. Regards Philippe On Sat, Aug 3, 2013 at 3:25 PM, Milamber <[email protected]> wrote: > > Le 03/08/2013 12:41, [email protected] a ecrit : > > Author: pmouawad >> Date: Sat Aug 3 12:41:36 2013 >> New Revision: 1509971 >> >> URL: http://svn.apache.org/r1509971 >> Log: >> Bug 55085 - UX Improvement : Ability to create New Test Plan from >> Templates >> Add Webservice Template (not using deprecated Webservice Sampler) >> Enhance web test plan to show more features >> > > Perhaps, we must keep the "simple" web test plan template (in sync with > the docs), and add an advanced web test plan template. > Otherwise, you must update the user's manual section to build a web test > plan to match with your jmx file. > > Milamber > > > > Bugzilla Id: 55085 >> >> Added: >> jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx >> Modified: >> jmeter/trunk/bin/templates/**build-web-test-plan.jmx >> jmeter/trunk/bin/templates/**templates.xml >> >> Modified: jmeter/trunk/bin/templates/**build-web-test-plan.jmx >> URL: http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/** >> build-web-test-plan.jmx?rev=**1509971&r1=1509970&r2=1509971&**view=diff<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-web-test-plan.jmx?rev=1509971&r1=1509970&r2=1509971&view=diff> >> ==============================**==============================** >> ================== >> --- jmeter/trunk/bin/templates/**build-web-test-plan.jmx (original) >> +++ jmeter/trunk/bin/templates/**build-web-test-plan.jmx Sat Aug 3 >> 12:41:36 2013 >> @@ -11,13 +11,77 @@ >> <stringProp name="TestPlan.user_define_**classpath"></stringProp> >> </TestPlan> >> <hashTree> >> + <Arguments guiclass="ArgumentsPanel" testclass="Arguments" >> testname="User Defined Variables" enabled="true"> >> + <collectionProp name="Arguments.arguments"> >> + <elementProp name="resources_folder" elementType="Argument"> >> + <stringProp name="Argument.name">** >> resources_folder</stringProp> >> + <stringProp name="Argument.value">${__P(**resources_folder, >> CHANGE_FOLDER)}</stringProp> >> + <stringProp name="Argument.desc">Change this value to folder >> containing your CSV files</stringProp> >> + <stringProp name="Argument.metadata">=</**stringProp> >> + </elementProp> >> + <elementProp name="host" elementType="Argument"> >> + <stringProp name="Argument.name">host</**stringProp> >> + <stringProp >> name="Argument.value">jmeter.**apache.org<http://jmeter.apache.org> >> </stringProp> >> + <stringProp name="Argument.metadata">=</**stringProp> >> + </elementProp> >> + <elementProp name="bugzilla_host" elementType="Argument"> >> + <stringProp name="Argument.name">bugzilla_** >> host</stringProp> >> + <stringProp >> name="Argument.value">issues.**apache.org<http://issues.apache.org> >> </stringProp> >> + <stringProp name="Argument.metadata">=</**stringProp> >> + </elementProp> >> + </collectionProp> >> + </Arguments> >> + <hashTree/> >> + <CookieManager guiclass="CookiePanel" testclass="CookieManager" >> testname="HTTP Cookie Manager" enabled="true"> >> + <collectionProp name="CookieManager.cookies"/> >> + <boolProp name="CookieManager.**clearEachIteration">true</** >> boolProp> >> + <stringProp name="CookieManager.**implementation">org.apache.** >> jmeter.protocol.http.control.**HC4CookieHandler</stringProp> >> + </CookieManager> >> + <hashTree/> >> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" >> testname="HTTP Header Manager" enabled="true"> >> + <collectionProp name="HeaderManager.headers"> >> + <elementProp name="User-Agent" elementType="Header"> >> + <stringProp name="Header.name">User-Agent<**/stringProp> >> + <stringProp name="Header.value">Mozilla/5.**0 (Macintosh; >> Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0</stringProp> >> + </elementProp> >> + <elementProp name="Connection" elementType="Header"> >> + <stringProp name="Header.name">Connection<**/stringProp> >> + <stringProp name="Header.value">keep-**alive</stringProp> >> + </elementProp> >> + <elementProp name="Accept-Language" elementType="Header"> >> + <stringProp name="Header.name">Accept-** >> Language</stringProp> >> + <stringProp name="Header.value">fr,en;q=0.** >> 8,fr-fr;q=0.5,en-us;q=0.3</**stringProp> >> + </elementProp> >> + <elementProp name="Accept-Encoding" elementType="Header"> >> + <stringProp name="Header.name">Accept-** >> Encoding</stringProp> >> + <stringProp name="Header.value">gzip, deflate</stringProp> >> + </elementProp> >> + <elementProp name="Accept" elementType="Header"> >> + <stringProp name="Header.name">Accept</**stringProp> >> + <stringProp name="Header.value">text/html,** >> application/xhtml+xml,**application/xml;q=0.9,*/*;q=0.**8</stringProp> >> + </elementProp> >> + </collectionProp> >> + </HeaderManager> >> + <hashTree/> >> + <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" >> testname="loginData" enabled="true"> >> + <stringProp name="TestPlan.comments">CSV file that must contains >> rows with 2 columns separated by comma, first column will be mapped to >> login, second one to password</stringProp> >> + <stringProp name="delimiter">,</**stringProp> >> + <stringProp name="fileEncoding">UTF-8</**stringProp> >> + <stringProp name="filename">${resources_** >> folder}/login.csv</stringProp> >> + <boolProp name="quotedData">false</**boolProp> >> + <boolProp name="recycle">true</boolProp> >> + <stringProp name="shareMode">All threads</stringProp> >> + <boolProp name="stopThread">false</**boolProp> >> + <stringProp name="variableNames">login,**password</stringProp> >> + </CSVDataSet> >> + <hashTree/> >> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" >> testname="JMeter Users" enabled="true"> >> <stringProp name="ThreadGroup.on_sample_** >> error">continue</stringProp> >> <elementProp name="ThreadGroup.main_**controller" >> elementType="LoopController" guiclass="LoopControlPanel" >> testclass="LoopController" testname="Loop Controller" enabled="true"> >> <boolProp name="LoopController.continue_** >> forever">false</boolProp> >> <stringProp name="LoopController.loops">2<**/stringProp> >> </elementProp> >> - <stringProp name="ThreadGroup.num_threads"**>5</stringProp> >> + <stringProp name="ThreadGroup.num_threads"**>1</stringProp> >> <stringProp name="ThreadGroup.ramp_time">**5</stringProp> >> <longProp name="ThreadGroup.start_time">** >> 1373789594000</longProp> >> <longProp name="ThreadGroup.end_time">** >> 1373789594000</longProp> >> @@ -30,16 +94,27 @@ >> <elementProp name="HTTPsampler.Arguments" >> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" >> testname="User Defined Variables" enabled="true"> >> <collectionProp name="Arguments.arguments"/> >> </elementProp> >> - <stringProp >> name="HTTPSampler.domain">jmet**er.apache.org<http://jmeter.apache.org> >> </stringProp> >> + <stringProp name="HTTPSampler.domain">${**host}</stringProp> >> <stringProp name="HTTPSampler.port"></**stringProp> >> <stringProp name="HTTPSampler.connect_** >> timeout"></stringProp> >> <stringProp name="HTTPSampler.response_** >> timeout"></stringProp> >> <stringProp name="HTTPSampler.protocol"></**stringProp> >> <stringProp name="HTTPSampler.** >> contentEncoding"></stringProp> >> <stringProp name="HTTPSampler.path"></**stringProp> >> + <stringProp name="TestPlan.comments">Shows how to set defaults >> on page</stringProp> >> <stringProp name="HTTPSampler.** >> concurrentPool">4</stringProp> >> </ConfigTestElement> >> <hashTree/> >> + <ResponseAssertion guiclass="AssertionGui" >> testclass="ResponseAssertion" testname="**CheckResponseCode200" >> enabled="true"> >> + <collectionProp name="Asserion.test_strings"> >> + <stringProp name="49586">200</stringProp> >> + </collectionProp> >> + <stringProp name="TestPlan.comments">Check Response code for >> all children samplers of JMeter Users Thread Group</stringProp> >> + <stringProp name="Assertion.test_field">** >> Assertion.response_code</**stringProp> >> + <boolProp name="Assertion.assume_**success">false</boolProp> >> + <intProp name="Assertion.test_type">8</**intProp> >> + </ResponseAssertion> >> + <hashTree/> >> <HTTPSamplerProxy guiclass="HttpTestSampleGui" >> testclass="HTTPSamplerProxy" testname="Home Page" enabled="true"> >> <elementProp name="HTTPsampler.Arguments" >> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" >> testname="Variables pré-définies" enabled="true"> >> <collectionProp name="Arguments.arguments"/> >> @@ -59,7 +134,18 @@ >> <boolProp name="HTTPSampler.monitor">**false</boolProp> >> <stringProp name="HTTPSampler.embedded_** >> url_re"></stringProp> >> </HTTPSamplerProxy> >> - <hashTree/> >> + <hashTree> >> + <ResponseAssertion guiclass="AssertionGui" >> testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> >> + <collectionProp name="Asserion.test_strings"> >> + <stringProp name="605898121"><title>**Apache JMeter >> - Apache JMeter&trade;</title&**gt;</stringProp> >> + </collectionProp> >> + <stringProp name="TestPlan.comments">We check page contains >> some text</stringProp> >> + <stringProp name="Assertion.test_field">** >> Assertion.response_data</**stringProp> >> + <boolProp name="Assertion.assume_**success">false</boolProp> >> + <intProp name="Assertion.test_type">16<**/intProp> >> + </ResponseAssertion> >> + <hashTree/> >> + </hashTree> >> <HTTPSamplerProxy guiclass="HttpTestSampleGui" >> testclass="HTTPSamplerProxy" testname="Changes" enabled="true"> >> <elementProp name="HTTPsampler.Arguments" >> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" >> testname="Variables pré-définies" enabled="true"> >> <collectionProp name="Arguments.arguments"/> >> @@ -79,52 +165,83 @@ >> <boolProp name="HTTPSampler.monitor">**false</boolProp> >> <stringProp name="HTTPSampler.embedded_** >> url_re"></stringProp> >> </HTTPSamplerProxy> >> - <hashTree/> >> - <ResultCollector guiclass="GraphVisualizer" >> testclass="ResultCollector" testname="Graph Results" enabled="true"> >> - <boolProp name="ResultCollector.error_** >> logging">false</boolProp> >> - <objProp> >> - <name>saveConfig</name> >> - <value class="**SampleSaveConfiguration"> >> - <time>true</time> >> - <latency>true</latency> >> - <timestamp>true</timestamp> >> - <success>true</success> >> - <label>true</label> >> - <code>true</code> >> - <message>true</message> >> - <threadName>true</threadName> >> - <dataType>true</dataType> >> - <encoding>false</encoding> >> - <assertions>true</assertions> >> - <subresults>true</subresults> >> - <responseData>false</**responseData> >> - <samplerData>false</**samplerData> >> - <xml>false</xml> >> - <fieldNames>false</fieldNames> >> - <responseHeaders>false</**responseHeaders> >> - <requestHeaders>false</**requestHeaders> >> - <responseDataOnError>false</**responseDataOnError> >> - <**saveAssertionResultsFailureMes**sage>false</** >> saveAssertionResultsFailureMes**sage> >> - <assertionsResultsToSave>0</**assertionsResultsToSave> >> - <bytes>true</bytes> >> - </value> >> - </objProp> >> - <stringProp name="filename"></stringProp> >> - </ResultCollector> >> - <hashTree/> >> + <hashTree> >> + <GaussianRandomTimer guiclass="**GaussianRandomTimerGui" >> testclass="**GaussianRandomTimer" testname="Wait5s Before Page" >> enabled="true"> >> + <stringProp name="ConstantTimer.delay">**5000</stringProp> >> + <stringProp name="RandomTimer.range">500.**0</stringProp> >> + </GaussianRandomTimer> >> + <hashTree/> >> + <ResponseAssertion guiclass="AssertionGui" >> testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> >> + <collectionProp name="Asserion.test_strings"> >> + <stringProp name="-420601512"><title&**gt;Apache >> JMeter - Changes</title></**stringProp> >> + </collectionProp> >> + <stringProp name="TestPlan.comments">We check page contains >> some text</stringProp> >> + <stringProp name="Assertion.test_field">** >> Assertion.response_data</**stringProp> >> + <boolProp name="Assertion.assume_**success">false</boolProp> >> + <intProp name="Assertion.test_type">16<**/intProp> >> + </ResponseAssertion> >> + <hashTree/> >> + <RegexExtractor guiclass="RegexExtractorGui" >> testclass="RegexExtractor" testname="**randomBugIdExtractor" >> enabled="true"> >> + <stringProp name="TestPlan.comments">Shows how to extract >> bug id from a link in response</stringProp> >> + <stringProp name="RegexExtractor.** >> useHeaders">false</stringProp> >> + <stringProp name="RegexExtractor.refname">** >> bugId</stringProp> >> + <stringProp name="RegexExtractor.regex">ht** >> tps://issues.apache.org/**bugzilla/show_bug.cgi\?id=([<https://issues.apache.org/bugzilla/show_bug.cgi%5C?id=([> >> ^&**quot;]+?)"</stringProp> >> + <stringProp name="RegexExtractor.template"** >> >$1$</stringProp> >> + <stringProp name="RegexExtractor.default">** >> nv_bugId</stringProp> >> + <stringProp name="RegexExtractor.match_** >> number">0</stringProp> >> + </RegexExtractor> >> + <hashTree/> >> + </hashTree> >> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" >> testclass="HTTPSamplerProxy" testname="BugDetail Page" enabled="true"> >> + <elementProp name="HTTPsampler.Arguments" >> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" >> testname="Variables pré-définies" enabled="true"> >> + <collectionProp name="Arguments.arguments"/> >> + </elementProp> >> + <stringProp name="HTTPSampler.domain">${** >> bugzilla_host}</stringProp> >> + <stringProp name="HTTPSampler.port"></**stringProp> >> + <stringProp name="HTTPSampler.connect_**timeout"></stringProp> >> + <stringProp name="HTTPSampler.response_** >> timeout"></stringProp> >> + <stringProp name="HTTPSampler.protocol">**https</stringProp> >> + <stringProp name="HTTPSampler.**contentEncoding"></stringProp> >> + <stringProp name="HTTPSampler.path">/** >> bugzilla/show_bug.cgi?id=${**bugId}</stringProp> >> + <stringProp name="HTTPSampler.method">GET<**/stringProp> >> + <boolProp name="HTTPSampler.follow_** >> redirects">true</boolProp> >> + <boolProp name="HTTPSampler.auto_**redirects">false</boolProp> >> + <boolProp name="HTTPSampler.use_**keepalive">true</boolProp> >> + <boolProp name="HTTPSampler.DO_**MULTIPART_POST">false</** >> boolProp> >> + <boolProp name="HTTPSampler.monitor">**false</boolProp> >> + <stringProp name="HTTPSampler.embedded_**url_re"></stringProp> >> + <stringProp name="TestPlan.comments">We use bugId variable >> extracted in Changes by randomBugIdExtractor</**stringProp> >> + </HTTPSamplerProxy> >> + <hashTree> >> + <GaussianRandomTimer guiclass="**GaussianRandomTimerGui" >> testclass="**GaussianRandomTimer" testname="Wait5s Before BugDetail >> Page" enabled="true"> >> + <stringProp name="ConstantTimer.delay">**5000</stringProp> >> + <stringProp name="RandomTimer.range">500.**0</stringProp> >> + </GaussianRandomTimer> >> + <hashTree/> >> + <ResponseAssertion guiclass="AssertionGui" >> testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> >> + <collectionProp name="Asserion.test_strings"> >> + <stringProp name="-1440480625">This is <b>ASF >> Bugzilla</b>: the Apache Software Foundation bug system</stringProp> >> + </collectionProp> >> + <stringProp name="TestPlan.comments">We check page contains >> some text</stringProp> >> + <stringProp name="Assertion.test_field">** >> Assertion.response_data</**stringProp> >> + <boolProp name="Assertion.assume_**success">false</boolProp> >> + <intProp name="Assertion.test_type">16<**/intProp> >> + </ResponseAssertion> >> + <hashTree/> >> + </hashTree> >> <HTTPSamplerProxy guiclass="HttpTestSampleGui" >> testclass="HTTPSamplerProxy" testname="Login" enabled="false"> >> <elementProp name="HTTPsampler.Arguments" >> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" >> testname="Variables pré-définies" enabled="true"> >> <collectionProp name="Arguments.arguments"> >> <elementProp name="username" elementType="HTTPArgument"> >> <boolProp name="HTTPArgument.always_** >> encode">true</boolProp> >> - <stringProp name="Argument.value">johndoe<**/stringProp> >> + <stringProp name="Argument.value">${login}** >> </stringProp> >> <stringProp name="Argument.metadata">=</**stringProp> >> <boolProp name="HTTPArgument.use_equals"** >> >true</boolProp> >> <stringProp name="Argument.name">username<** >> /stringProp> >> </elementProp> >> <elementProp name="password" elementType="HTTPArgument"> >> <boolProp name="HTTPArgument.always_** >> encode">true</boolProp> >> - <stringProp name="Argument.value">secret</**stringProp> >> + <stringProp name="Argument.value">${** >> password}</stringProp> >> <stringProp name="Argument.metadata">=</**stringProp> >> <boolProp name="HTTPArgument.use_equals"** >> >true</boolProp> >> <stringProp name="Argument.name">password<** >> /stringProp> >> @@ -145,9 +262,151 @@ >> <boolProp name="HTTPSampler.DO_**MULTIPART_POST">false</** >> boolProp> >> <boolProp name="HTTPSampler.monitor">**false</boolProp> >> <stringProp name="HTTPSampler.embedded_** >> url_re"></stringProp> >> + <stringProp name="TestPlan.comments">We use here data from >> loginData CSV DataSet</stringProp> >> </HTTPSamplerProxy> >> <hashTree/> >> </hashTree> >> + <ResultCollector guiclass="StatGraphVisualizer" >> testclass="ResultCollector" testname="Aggregate Graph" enabled="true"> >> + <boolProp name="ResultCollector.error_** >> logging">false</boolProp> >> + <objProp> >> + <name>saveConfig</name> >> + <value class="**SampleSaveConfiguration"> >> + <time>true</time> >> + <latency>true</latency> >> + <timestamp>true</timestamp> >> + <success>true</success> >> + <label>true</label> >> + <code>true</code> >> + <message>true</message> >> + <threadName>true</threadName> >> + <dataType>false</dataType> >> + <encoding>false</encoding> >> + <assertions>true</assertions> >> + <subresults>false</subresults> >> + <responseData>false</**responseData> >> + <samplerData>false</**samplerData> >> + <xml>false</xml> >> + <fieldNames>true</fieldNames> >> + <responseHeaders>false</**responseHeaders> >> + <requestHeaders>false</**requestHeaders> >> + <responseDataOnError>true</**responseDataOnError> >> + <**saveAssertionResultsFailureMes**sage>true</** >> saveAssertionResultsFailureMes**sage> >> + <assertionsResultsToSave>0</**assertionsResultsToSave> >> + <bytes>true</bytes> >> + <hostname>true</hostname> >> + <threadCounts>true</**threadCounts> >> + <sampleCount>true</**sampleCount> >> + </value> >> + </objProp> >> + <stringProp name="filename"></stringProp> >> + </ResultCollector> >> + <hashTree/> >> + <ResultCollector guiclass="**RespTimeGraphVisualizer" >> testclass="ResultCollector" testname="Response Time Graph" enabled="true"> >> + <boolProp name="ResultCollector.error_** >> logging">false</boolProp> >> + <objProp> >> + <name>saveConfig</name> >> + <value class="**SampleSaveConfiguration"> >> + <time>true</time> >> + <latency>true</latency> >> + <timestamp>true</timestamp> >> + <success>true</success> >> + <label>true</label> >> + <code>true</code> >> + <message>true</message> >> + <threadName>true</threadName> >> + <dataType>false</dataType> >> + <encoding>false</encoding> >> + <assertions>true</assertions> >> + <subresults>false</subresults> >> + <responseData>false</**responseData> >> + <samplerData>false</**samplerData> >> + <xml>false</xml> >> + <fieldNames>true</fieldNames> >> + <responseHeaders>false</**responseHeaders> >> + <requestHeaders>false</**requestHeaders> >> + <responseDataOnError>true</**responseDataOnError> >> + <**saveAssertionResultsFailureMes**sage>true</** >> saveAssertionResultsFailureMes**sage> >> + <assertionsResultsToSave>0</**assertionsResultsToSave> >> + <bytes>true</bytes> >> + <hostname>true</hostname> >> + <threadCounts>true</**threadCounts> >> + <sampleCount>true</**sampleCount> >> + </value> >> + </objProp> >> + <stringProp name="filename"></stringProp> >> + </ResultCollector> >> + <hashTree/> >> + <ResultCollector guiclass="GraphVisualizer" >> testclass="ResultCollector" testname="Graph Results" enabled="false"> >> + <boolProp name="ResultCollector.error_** >> logging">false</boolProp> >> + <objProp> >> + <name>saveConfig</name> >> + <value class="**SampleSaveConfiguration"> >> + <time>true</time> >> + <latency>true</latency> >> + <timestamp>true</timestamp> >> + <success>true</success> >> + <label>true</label> >> + <code>true</code> >> + <message>true</message> >> + <threadName>true</threadName> >> + <dataType>true</dataType> >> + <encoding>false</encoding> >> + <assertions>true</assertions> >> + <subresults>true</subresults> >> + <responseData>false</**responseData> >> + <samplerData>false</**samplerData> >> + <xml>false</xml> >> + <fieldNames>false</fieldNames> >> + <responseHeaders>false</**responseHeaders> >> + <requestHeaders>false</**requestHeaders> >> + <responseDataOnError>false</**responseDataOnError> >> + <**saveAssertionResultsFailureMes**sage>false</** >> saveAssertionResultsFailureMes**sage> >> + <assertionsResultsToSave>0</**assertionsResultsToSave> >> + <bytes>true</bytes> >> + <hostname>true</hostname> >> + <threadCounts>true</**threadCounts> >> + <sampleCount>true</**sampleCount> >> + </value> >> + </objProp> >> + <stringProp name="filename"></stringProp> >> + </ResultCollector> >> + <hashTree/> >> + <ResultCollector guiclass="**ViewResultsFullVisualizer" >> testclass="ResultCollector" testname="View Results Tree" enabled="true"> >> + <boolProp name="ResultCollector.error_** >> logging">false</boolProp> >> + <objProp> >> + <name>saveConfig</name> >> + <value class="**SampleSaveConfiguration"> >> + <time>true</time> >> + <latency>true</latency> >> + <timestamp>true</timestamp> >> + <success>true</success> >> + <label>true</label> >> + <code>true</code> >> + <message>true</message> >> + <threadName>true</threadName> >> + <dataType>false</dataType> >> + <encoding>false</encoding> >> + <assertions>true</assertions> >> + <subresults>false</subresults> >> + <responseData>false</**responseData> >> + <samplerData>false</**samplerData> >> + <xml>false</xml> >> + <fieldNames>true</fieldNames> >> + <responseHeaders>false</**responseHeaders> >> + <requestHeaders>false</**requestHeaders> >> + <responseDataOnError>true</**responseDataOnError> >> + <**saveAssertionResultsFailureMes**sage>true</** >> saveAssertionResultsFailureMes**sage> >> + <assertionsResultsToSave>0</**assertionsResultsToSave> >> + <bytes>true</bytes> >> + <hostname>true</hostname> >> + <threadCounts>true</**threadCounts> >> + <sampleCount>true</**sampleCount> >> + </value> >> + </objProp> >> + <stringProp name="TestPlan.comments">Use only during debug of >> script</stringProp> >> + <stringProp name="filename"></stringProp> >> + </ResultCollector> >> + <hashTree/> >> </hashTree> >> </hashTree> >> </jmeterTestPlan> >> >> Added: jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx >> URL: http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/** >> build-webservice-test-plan.**jmx?rev=1509971&view=auto<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-webservice-test-plan.jmx?rev=1509971&view=auto> >> ==============================**==============================** >> ================== >> --- jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx (added) >> +++ jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx Sat Aug >> 3 12:41:36 2013 >> @@ -0,0 +1,184 @@ >> +<?xml version="1.0" encoding="UTF-8"?> >> +<jmeterTestPlan version="1.2" properties="2.5" jmeter="2.10-SNAPSHOT.** >> 20130803"> >> + <hashTree> >> + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test >> Plan" enabled="true"> >> + <stringProp name="TestPlan.comments"></**stringProp> >> + <boolProp name="TestPlan.functional_**mode">false</boolProp> >> + <boolProp name="TestPlan.serialize_** >> threadgroups">false</boolProp> >> + <elementProp name="TestPlan.user_defined_**variables" >> elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" >> testname="User Defined Variables" enabled="true"> >> + <collectionProp name="Arguments.arguments"/> >> + </elementProp> >> + <stringProp name="TestPlan.user_define_**classpath"></stringProp> >> + </TestPlan> >> + <hashTree> >> + <Arguments guiclass="ArgumentsPanel" testclass="Arguments" >> testname="User Defined Variables" enabled="true"> >> + <collectionProp name="Arguments.arguments"> >> + <elementProp name="host" elementType="Argument"> >> + <stringProp name="Argument.name">host</**stringProp> >> + <stringProp >> name="Argument.value">wsf.**cdyne.com<http://wsf.cdyne.com> >> </stringProp> >> + <stringProp name="Argument.metadata">=</**stringProp> >> + <stringProp name="Argument.desc">Host of >> Webservice</stringProp> >> + </elementProp> >> + </collectionProp> >> + </Arguments> >> + <hashTree/> >> + <ConfigTestElement guiclass="HttpDefaultsGui" >> testclass="ConfigTestElement" testname="HTTP Request Defaults" >> enabled="true"> >> + <elementProp name="HTTPsampler.Arguments" >> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" >> testname="User Defined Variables" enabled="true"> >> + <collectionProp name="Arguments.arguments"/> >> + </elementProp> >> + <stringProp name="HTTPSampler.domain">${**host}</stringProp> >> + <stringProp name="HTTPSampler.port"></**stringProp> >> + <stringProp name="HTTPSampler.connect_**timeout"></stringProp> >> + <stringProp name="HTTPSampler.response_**timeout"></stringProp> >> + <stringProp name="HTTPSampler.protocol"></**stringProp> >> + <stringProp name="HTTPSampler.**contentEncoding"></stringProp> >> + <stringProp name="HTTPSampler.path"></**stringProp> >> + <stringProp name="HTTPSampler.**concurrentPool">4</stringProp> >> + </ConfigTestElement> >> + <hashTree/> >> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" >> testname="Number of Users" enabled="true"> >> + <stringProp name="ThreadGroup.on_sample_** >> error">continue</stringProp> >> + <elementProp name="ThreadGroup.main_**controller" >> elementType="LoopController" guiclass="LoopControlPanel" >> testclass="LoopController" testname="Loop Controller" enabled="true"> >> + <boolProp name="LoopController.continue_** >> forever">false</boolProp> >> + <stringProp name="LoopController.loops">2<**/stringProp> >> + </elementProp> >> + <stringProp name="ThreadGroup.num_threads"**>5</stringProp> >> + <stringProp name="ThreadGroup.ramp_time">**5</stringProp> >> + <longProp name="ThreadGroup.start_time">** >> 1375525852000</longProp> >> + <longProp name="ThreadGroup.end_time">**1375525852000</longProp> >> + <boolProp name="ThreadGroup.scheduler">**false</boolProp> >> + <stringProp name="ThreadGroup.duration"></**stringProp> >> + <stringProp name="ThreadGroup.delay"></**stringProp> >> + </ThreadGroup> >> + <hashTree> >> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" >> testclass="HTTPSamplerProxy" testname="Soap Request" enabled="true"> >> + <boolProp name="HTTPSampler.postBodyRaw"**>true</boolProp> >> + <elementProp name="HTTPsampler.Arguments" >> elementType="Arguments"> >> + <collectionProp name="Arguments.arguments"> >> + <elementProp name="" elementType="HTTPArgument"> >> + <boolProp name="HTTPArgument.always_** >> encode">false</boolProp> >> + <stringProp name="Argument.value"><**soap:Envelope >> xmlns:xsi="http://www.w3.**org/2001/XMLSchema-instance&**quot<http://www.w3.org/2001/XMLSchema-instance">; >> xmlns:xsd="http://www.w3.**org/2001/XMLSchema"<http://www.w3.org/2001/XMLSchema">; >> xmlns:soap="http://**schemas.xmlsoap.org/soap/** >> envelope/">
 <http://schemas.xmlsoap.org/soap/envelope/">
> >> ; >> + <soap:Body>
 >> + <GetCityForecastByZIP xmlns="http://ws.cdyne.** >> com/WeatherWS/">
 <http://ws.cdyne.com/WeatherWS/">
>; >> + <ZIP>60601</ZIP>&#**xd; >> + </GetCityForecastByZIP>&**#xd; >> + </soap:Body>
 >> +</soap:Envelope></**stringProp> >> + <stringProp name="Argument.metadata">=</**stringProp> >> + </elementProp> >> + </collectionProp> >> + </elementProp> >> + <stringProp name="HTTPSampler.domain"></**stringProp> >> + <stringProp name="HTTPSampler.port"></**stringProp> >> + <stringProp name="HTTPSampler.connect_**timeout"></stringProp> >> + <stringProp name="HTTPSampler.response_** >> timeout"></stringProp> >> + <stringProp name="HTTPSampler.protocol"></**stringProp> >> + <stringProp name="HTTPSampler.**contentEncoding"></stringProp> >> + <stringProp name="HTTPSampler.path">/** >> WeatherWS/Weather.asmx</**stringProp> >> + <stringProp name="HTTPSampler.method">**POST</stringProp> >> + <boolProp name="HTTPSampler.follow_** >> redirects">true</boolProp> >> + <boolProp name="HTTPSampler.auto_**redirects">false</boolProp> >> + <boolProp name="HTTPSampler.use_**keepalive">true</boolProp> >> + <boolProp name="HTTPSampler.DO_**MULTIPART_POST">false</** >> boolProp> >> + <boolProp name="HTTPSampler.monitor">**false</boolProp> >> + <stringProp name="HTTPSampler.embedded_**url_re"></stringProp> >> + </HTTPSamplerProxy> >> + <hashTree> >> + <HeaderManager guiclass="HeaderPanel" >> testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> >> + <collectionProp name="HeaderManager.headers"> >> + <elementProp name="" elementType="Header"> >> + <stringProp name="Header.name">Content-** >> Type</stringProp> >> + <stringProp name="Header.value">text/xml; >> charset=utf-8</stringProp> >> + </elementProp> >> + <elementProp name="" elementType="Header"> >> + <stringProp name="Header.name">SOAPAction<**/stringProp> >> + <stringProp name="Header.value">"http** >> ://ws.cdyne.com/WeatherWS/**GetCityForecastByZIP"<http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP"> >> ;</**stringProp> >> + </elementProp> >> + </collectionProp> >> + </HeaderManager> >> + <hashTree/> >> + <ResponseAssertion guiclass="AssertionGui" >> testclass="ResponseAssertion" testname="Response Assertion" enabled="true"> >> + <collectionProp name="Asserion.test_strings"> >> + <stringProp name="130046656"></** >> GetCityForecastByZIPResult>**</stringProp> >> + </collectionProp> >> + <stringProp name="TestPlan.comments">**Verify content in >> response</stringProp> >> + <stringProp name="Assertion.test_field">** >> Assertion.response_data</**stringProp> >> + <boolProp name="Assertion.assume_**success">false</boolProp> >> + <intProp name="Assertion.test_type">16<**/intProp> >> + </ResponseAssertion> >> + <hashTree/> >> + </hashTree> >> + </hashTree> >> + <ResultCollector guiclass="**ViewResultsFullVisualizer" >> testclass="ResultCollector" testname="View Results Tree" enabled="false"> >> + <boolProp name="ResultCollector.error_** >> logging">false</boolProp> >> + <objProp> >> + <name>saveConfig</name> >> + <value class="**SampleSaveConfiguration"> >> + <time>true</time> >> + <latency>true</latency> >> + <timestamp>true</timestamp> >> + <success>true</success> >> + <label>true</label> >> + <code>true</code> >> + <message>true</message> >> + <threadName>true</threadName> >> + <dataType>false</dataType> >> + <encoding>false</encoding> >> + <assertions>true</assertions> >> + <subresults>false</subresults> >> + <responseData>false</**responseData> >> + <samplerData>false</**samplerData> >> + <xml>false</xml> >> + <fieldNames>true</fieldNames> >> + <responseHeaders>false</**responseHeaders> >> + <requestHeaders>false</**requestHeaders> >> + <responseDataOnError>true</**responseDataOnError> >> + <**saveAssertionResultsFailureMes**sage>true</** >> saveAssertionResultsFailureMes**sage> >> + <assertionsResultsToSave>0</**assertionsResultsToSave> >> + <bytes>true</bytes> >> + <hostname>true</hostname> >> + <threadCounts>true</**threadCounts> >> + <sampleCount>true</**sampleCount> >> + </value> >> + </objProp> >> + <stringProp name="filename"></stringProp> >> + </ResultCollector> >> + <hashTree/> >> + <ResultCollector guiclass="StatGraphVisualizer" >> testclass="ResultCollector" testname="Aggregate Graph" enabled="true"> >> + <boolProp name="ResultCollector.error_** >> logging">false</boolProp> >> + <objProp> >> + <name>saveConfig</name> >> + <value class="**SampleSaveConfiguration"> >> + <time>true</time> >> + <latency>true</latency> >> + <timestamp>true</timestamp> >> + <success>true</success> >> + <label>true</label> >> + <code>true</code> >> + <message>true</message> >> + <threadName>true</threadName> >> + <dataType>false</dataType> >> + <encoding>false</encoding> >> + <assertions>true</assertions> >> + <subresults>false</subresults> >> + <responseData>false</**responseData> >> + <samplerData>false</**samplerData> >> + <xml>false</xml> >> + <fieldNames>true</fieldNames> >> + <responseHeaders>false</**responseHeaders> >> + <requestHeaders>false</**requestHeaders> >> + <responseDataOnError>true</**responseDataOnError> >> + <**saveAssertionResultsFailureMes**sage>true</** >> saveAssertionResultsFailureMes**sage> >> + <assertionsResultsToSave>0</**assertionsResultsToSave> >> + <bytes>true</bytes> >> + <hostname>true</hostname> >> + <threadCounts>true</**threadCounts> >> + <sampleCount>true</**sampleCount> >> + </value> >> + </objProp> >> + <stringProp name="filename"></stringProp> >> + </ResultCollector> >> + <hashTree/> >> + </hashTree> >> + </hashTree> >> +</jmeterTestPlan> >> >> Modified: jmeter/trunk/bin/templates/**templates.xml >> URL: http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/** >> templates.xml?rev=1509971&r1=**1509970&r2=1509971&view=diff<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/templates.xml?rev=1509971&r1=1509970&r2=1509971&view=diff> >> ==============================**==============================** >> ================== >> --- jmeter/trunk/bin/templates/**templates.xml (original) >> +++ jmeter/trunk/bin/templates/**templates.xml Sat Aug 3 12:41:36 2013 >> @@ -106,6 +106,12 @@ >> <fileName>/bin/templates/**build-web-test-plan.jmx</**fileName> >> <description><![CDATA[ >> <h1>Test plan from Building a Web Test Plan section in user's >> manual</h1> >> + <h2>Configuration</h2> >> + <p>In order to run the login sample inside plan, create a CSV >> file following description in <b>loginData</b> sample and put it in a >> folder of your choice and test running JMeter with:<br/> >> + <ul> >> + <li><b>jmeter -Jresources_folder=FOLDER TO >> CHANGE</b></li> >> + </ul> >> + </p> >> <h2>Useful link</h2> >> <ul> >> <li><a href="http://jmeter.apache.** >> org/usermanual/build-web-test-**plan.html<http://jmeter.apache.org/usermanual/build-web-test-plan.html>" >> >http://jmeter.apache.org/**usermanual/build-web-test-**plan.html<http://jmeter.apache.org/usermanual/build-web-test-plan.html> >> </a></li> >> @@ -113,6 +119,21 @@ >> ]]></description> >> </template> >> <template isTestPlan="true"> >> + <name>Building a WebService Test Plan</name> >> + <fileName>/bin/templates/**build-webservice-test-plan.** >> jmx</fileName> >> + <description><![CDATA[ >> + <h1>Test plan showing how to create a SOAP Webservice Test Plan >> </h1> >> + <h2>Useful link</h2> >> + <ul> >> + <li><a href="http://jmeter.apache.** >> org/usermanual/component_**reference.html#User_Defined_**Variables<http://jmeter.apache.org/usermanual/component_reference.html#User_Defined_Variables>" >> >User Defined Variables</a></li> >> + <li><a href="http://jmeter.apache.** >> org/usermanual/component_**reference.html#HTTP_Request_**Defaults<http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request_Defaults>" >> >User Defined Variables</a></li> >> + <li><a href="http://jmeter.apache.** >> org/usermanual/component_**reference.html#HTTP_Request<http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request>" >> >HTTP Request</a></li> >> + <li><a href="http://jmeter.apache.** >> org/usermanual/component_**reference.html#Response_**Assertion<http://jmeter.apache.org/usermanual/component_reference.html#Response_Assertion>">Response >> Assertion</a></li> >> + <li><a href="http://jmeter.apache.** >> org/usermanual/component_**reference.html#HTTP_Header_**Manager<http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Header_Manager>">HTTP >> Header Manager</a></li> >> + </ul> >> + ]]></description> >> + </template> >> + <template isTestPlan="true"> >> <name>Building an FTP Test Plan </name> >> <fileName>/bin/templates/**build-ftp-test-plan.jmx</**fileName> >> <description><