Agree. But no computer access these days, will do as soon as I have one. Regards
On Monday, August 5, 2013, Milamber wrote: > > Le 03/08/2013 13:27, Philippe Mouawad a ecrit : > >> Hello Milamber, >> But don't you find the "simple" test plan is really too simple to be >> realistic ? and might be misleading as is ? >> > > Yes and no. This simple test is a 'simple' introduction to web test plan, > it's not perfect but allow to the beginner to see how JMeter works. > Your advanced test plan may be to complex for a beginner for the first > time (a very lot of things to understand: cookies, assertion, header, > timers, regexp, CSV file, command line with parameter, etc.!) > > I thinks it will be better to have 2 templates : > * Building a (simple) web test plan (same as the doc) > * Building an advanced web test plan (your test plan, with some comments > in elements (why you should use this element? see this link, etc.) and/or > an update of the section 6 Building an Advanced Web Test Plan in User's > manual. > > If your are agree, please revert the simple test plan and and your > advanced test plan in templates folder. > > > > >> I see in previous one lots of common misuse: >> > > Perhaps, add some warning/sentences in the section 6 in user's manual to > prevent these not optimal usages for a test plan in common conditions > > Milamber > > >> - 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/**<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<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 <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 <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 <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/> >>>> + <Respon >>> >>> -- Cordialement. Philippe Mouawad.
