| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415 |
- <?xml version="1.0" encoding="UTF-8"?>
- <jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.3">
- <hashTree>
- <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="账单性能测试v3" enabled="true">
- <boolProp name="TestPlan.functional_mode">false</boolProp>
- <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
- <elementProp name="TestPlan.user_defined_variables" elementType="Arguments">
- <collectionProp name="Arguments.arguments">
- <elementProp name="base_url" elementType="Argument">
- <stringProp name="Argument.name">base_url</stringProp>
- <stringProp name="Argument.value">${__P(base_url,127.0.0.1)}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- <elementProp name="port" elementType="Argument">
- <stringProp name="Argument.name">port</stringProp>
- <stringProp name="Argument.value">${__P(port,8010)}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- <elementProp name="protocol" elementType="Argument">
- <stringProp name="Argument.name">protocol</stringProp>
- <stringProp name="Argument.value">${__P(protocol,http)}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- <elementProp name="thread_count" elementType="Argument">
- <stringProp name="Argument.name">thread_count</stringProp>
- <stringProp name="Argument.value">${__P(thread_count,10)}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- <elementProp name="ramp_up" elementType="Argument">
- <stringProp name="Argument.name">ramp_up</stringProp>
- <stringProp name="Argument.value">${__P(ramp_up,10)}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- <elementProp name="duration" elementType="Argument">
- <stringProp name="Argument.name">duration</stringProp>
- <stringProp name="Argument.value">${__P(duration,120)}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- </collectionProp>
- </elementProp>
- </TestPlan>
- <hashTree>
- <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP默认配置" enabled="true">
- <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
- <collectionProp name="Arguments.arguments"/>
- </elementProp>
- <stringProp name="HTTPSampler.domain">${base_url}</stringProp>
- <stringProp name="HTTPSampler.port">${port}</stringProp>
- <stringProp name="HTTPSampler.protocol">${protocol}</stringProp>
- <stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
- <stringProp name="HTTPSampler.connect_timeout">10000</stringProp>
- <stringProp name="HTTPSampler.response_timeout">30000</stringProp>
- </ConfigTestElement>
- <hashTree/>
- <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="全局Header" enabled="true">
- <collectionProp name="HeaderManager.headers">
- <elementProp name="" elementType="Header">
- <stringProp name="Header.name">Content-Type</stringProp>
- <stringProp name="Header.value">application/json</stringProp>
- </elementProp>
- </collectionProp>
- </HeaderManager>
- <hashTree/>
- <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="用户数据" enabled="true">
- <stringProp name="filename">../../backend/test_users.csv</stringProp>
- <stringProp name="fileEncoding">UTF-8</stringProp>
- <stringProp name="variableNames">username,password,email,apikey,user_id</stringProp>
- <boolProp name="ignoreFirstLine">true</boolProp>
- <stringProp name="delimiter">,</stringProp>
- <boolProp name="recycle">true</boolProp>
- <boolProp name="stopThread">false</boolProp>
- <stringProp name="shareMode">shareMode.all</stringProp>
- </CSVDataSet>
- <hashTree/>
- <!-- ============================================================ -->
- <!-- 场景1:账单列表 -->
- <!-- Once Only Controller 保证每个线程只登录一次,token 线程内复用 -->
- <!-- ============================================================ -->
- <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="场景1-账单列表" enabled="true">
- <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
- <elementProp name="ThreadGroup.main_controller" elementType="LoopController">
- <boolProp name="LoopController.continue_forever">false</boolProp>
- <intProp name="LoopController.loops">-1</intProp>
- </elementProp>
- <stringProp name="ThreadGroup.num_threads">${thread_count}</stringProp>
- <stringProp name="ThreadGroup.ramp_time">${ramp_up}</stringProp>
- <boolProp name="ThreadGroup.scheduler">true</boolProp>
- <stringProp name="ThreadGroup.duration">${duration}</stringProp>
- <stringProp name="ThreadGroup.delay">0</stringProp>
- </ThreadGroup>
- <hashTree>
- <!-- 每个线程只登录一次 -->
- <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="只登录一次" enabled="true"/>
- <hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="登录-账单列表" 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">{"username":"${username}","password":"${password}","encrypted":false}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- </collectionProp>
- </elementProp>
- <stringProp name="HTTPSampler.path">/api/auth/login</stringProp>
- <stringProp name="HTTPSampler.method">POST</stringProp>
- <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
- <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
- </HTTPSamplerProxy>
- <hashTree>
- <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="提取token" enabled="true">
- <stringProp name="RegexExtractor.useHeaders">false</stringProp>
- <stringProp name="RegexExtractor.refname">token1</stringProp>
- <stringProp name="RegexExtractor.regex">"access_token":"([^"]+)"</stringProp>
- <stringProp name="RegexExtractor.template">$1$</stringProp>
- <stringProp name="RegexExtractor.default">TOKEN_NOT_FOUND</stringProp>
- <stringProp name="RegexExtractor.match_no">1</stringProp>
- </RegexExtractor>
- <hashTree/>
- </hashTree>
- </hashTree>
- <!-- 业务请求 -->
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="GET-账单列表" enabled="true">
- <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
- <collectionProp name="Arguments.arguments"/>
- </elementProp>
- <stringProp name="HTTPSampler.path">/api/billing/records?page=1&page_size=10</stringProp>
- <stringProp name="HTTPSampler.method">GET</stringProp>
- <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
- <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
- </HTTPSamplerProxy>
- <hashTree>
- <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="Auth" enabled="true">
- <collectionProp name="HeaderManager.headers">
- <elementProp name="" elementType="Header">
- <stringProp name="Header.name">Authorization</stringProp>
- <stringProp name="Header.value">Bearer ${token1}</stringProp>
- </elementProp>
- </collectionProp>
- </HeaderManager>
- <hashTree/>
- <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="断言200" enabled="true">
- <collectionProp name="Asserion.test_strings"><stringProp name="49586">200</stringProp></collectionProp>
- <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/>
- </hashTree>
- <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="思考时间" enabled="true">
- <stringProp name="ConstantTimer.delay">200</stringProp>
- </ConstantTimer>
- <hashTree/>
- </hashTree>
- <!-- 场景2:账单汇总 -->
- <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="场景2-账单汇总" enabled="true">
- <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
- <elementProp name="ThreadGroup.main_controller" elementType="LoopController">
- <boolProp name="LoopController.continue_forever">false</boolProp>
- <intProp name="LoopController.loops">-1</intProp>
- </elementProp>
- <stringProp name="ThreadGroup.num_threads">${thread_count}</stringProp>
- <stringProp name="ThreadGroup.ramp_time">${ramp_up}</stringProp>
- <boolProp name="ThreadGroup.scheduler">true</boolProp>
- <stringProp name="ThreadGroup.duration">${duration}</stringProp>
- <stringProp name="ThreadGroup.delay">0</stringProp>
- </ThreadGroup>
- <hashTree>
- <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="只登录一次" enabled="true"/>
- <hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="登录-账单汇总" 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">{"username":"${username}","password":"${password}","encrypted":false}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- </collectionProp>
- </elementProp>
- <stringProp name="HTTPSampler.path">/api/auth/login</stringProp>
- <stringProp name="HTTPSampler.method">POST</stringProp>
- <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
- <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
- </HTTPSamplerProxy>
- <hashTree>
- <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="提取token" enabled="true">
- <stringProp name="RegexExtractor.useHeaders">false</stringProp>
- <stringProp name="RegexExtractor.refname">token2</stringProp>
- <stringProp name="RegexExtractor.regex">"access_token":"([^"]+)"</stringProp>
- <stringProp name="RegexExtractor.template">$1$</stringProp>
- <stringProp name="RegexExtractor.default">TOKEN_NOT_FOUND</stringProp>
- <stringProp name="RegexExtractor.match_no">1</stringProp>
- </RegexExtractor>
- <hashTree/>
- </hashTree>
- </hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="GET-账单汇总" enabled="true">
- <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
- <collectionProp name="Arguments.arguments"/>
- </elementProp>
- <stringProp name="HTTPSampler.path">/api/billing/summary</stringProp>
- <stringProp name="HTTPSampler.method">GET</stringProp>
- <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
- <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
- </HTTPSamplerProxy>
- <hashTree>
- <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="Auth" enabled="true">
- <collectionProp name="HeaderManager.headers">
- <elementProp name="" elementType="Header">
- <stringProp name="Header.name">Authorization</stringProp>
- <stringProp name="Header.value">Bearer ${token2}</stringProp>
- </elementProp>
- </collectionProp>
- </HeaderManager>
- <hashTree/>
- <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="断言200" enabled="true">
- <collectionProp name="Asserion.test_strings"><stringProp name="49586">200</stringProp></collectionProp>
- <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/>
- </hashTree>
- <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="思考时间" enabled="true">
- <stringProp name="ConstantTimer.delay">200</stringProp>
- </ConstantTimer>
- <hashTree/>
- </hashTree>
- <!-- 场景3:余额查询 -->
- <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="场景3-余额查询" enabled="true">
- <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
- <elementProp name="ThreadGroup.main_controller" elementType="LoopController">
- <boolProp name="LoopController.continue_forever">false</boolProp>
- <intProp name="LoopController.loops">-1</intProp>
- </elementProp>
- <stringProp name="ThreadGroup.num_threads">${thread_count}</stringProp>
- <stringProp name="ThreadGroup.ramp_time">${ramp_up}</stringProp>
- <boolProp name="ThreadGroup.scheduler">true</boolProp>
- <stringProp name="ThreadGroup.duration">${duration}</stringProp>
- <stringProp name="ThreadGroup.delay">0</stringProp>
- </ThreadGroup>
- <hashTree>
- <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="只登录一次" enabled="true"/>
- <hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="登录-余额查询" 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">{"username":"${username}","password":"${password}","encrypted":false}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- </collectionProp>
- </elementProp>
- <stringProp name="HTTPSampler.path">/api/auth/login</stringProp>
- <stringProp name="HTTPSampler.method">POST</stringProp>
- <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
- <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
- </HTTPSamplerProxy>
- <hashTree>
- <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="提取token" enabled="true">
- <stringProp name="RegexExtractor.useHeaders">false</stringProp>
- <stringProp name="RegexExtractor.refname">token3</stringProp>
- <stringProp name="RegexExtractor.regex">"access_token":"([^"]+)"</stringProp>
- <stringProp name="RegexExtractor.template">$1$</stringProp>
- <stringProp name="RegexExtractor.default">TOKEN_NOT_FOUND</stringProp>
- <stringProp name="RegexExtractor.match_no">1</stringProp>
- </RegexExtractor>
- <hashTree/>
- </hashTree>
- </hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="GET-余额查询" enabled="true">
- <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
- <collectionProp name="Arguments.arguments"/>
- </elementProp>
- <stringProp name="HTTPSampler.path">/api/billing/balance</stringProp>
- <stringProp name="HTTPSampler.method">GET</stringProp>
- <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
- <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
- </HTTPSamplerProxy>
- <hashTree>
- <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="Auth" enabled="true">
- <collectionProp name="HeaderManager.headers">
- <elementProp name="" elementType="Header">
- <stringProp name="Header.name">Authorization</stringProp>
- <stringProp name="Header.value">Bearer ${token3}</stringProp>
- </elementProp>
- </collectionProp>
- </HeaderManager>
- <hashTree/>
- <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="断言200" enabled="true">
- <collectionProp name="Asserion.test_strings"><stringProp name="49586">200</stringProp></collectionProp>
- <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/>
- </hashTree>
- <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="思考时间" enabled="true">
- <stringProp name="ConstantTimer.delay">200</stringProp>
- </ConstantTimer>
- <hashTree/>
- </hashTree>
- <!-- 场景4:消费流水 -->
- <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="场景4-消费流水" enabled="true">
- <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
- <elementProp name="ThreadGroup.main_controller" elementType="LoopController">
- <boolProp name="LoopController.continue_forever">false</boolProp>
- <intProp name="LoopController.loops">-1</intProp>
- </elementProp>
- <stringProp name="ThreadGroup.num_threads">${thread_count}</stringProp>
- <stringProp name="ThreadGroup.ramp_time">${ramp_up}</stringProp>
- <boolProp name="ThreadGroup.scheduler">true</boolProp>
- <stringProp name="ThreadGroup.duration">${duration}</stringProp>
- <stringProp name="ThreadGroup.delay">0</stringProp>
- </ThreadGroup>
- <hashTree>
- <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="只登录一次" enabled="true"/>
- <hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="登录-消费流水" 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">{"username":"${username}","password":"${password}","encrypted":false}</stringProp>
- <stringProp name="Argument.metadata">=</stringProp>
- </elementProp>
- </collectionProp>
- </elementProp>
- <stringProp name="HTTPSampler.path">/api/auth/login</stringProp>
- <stringProp name="HTTPSampler.method">POST</stringProp>
- <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
- <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
- </HTTPSamplerProxy>
- <hashTree>
- <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="提取token" enabled="true">
- <stringProp name="RegexExtractor.useHeaders">false</stringProp>
- <stringProp name="RegexExtractor.refname">token4</stringProp>
- <stringProp name="RegexExtractor.regex">"access_token":"([^"]+)"</stringProp>
- <stringProp name="RegexExtractor.template">$1$</stringProp>
- <stringProp name="RegexExtractor.default">TOKEN_NOT_FOUND</stringProp>
- <stringProp name="RegexExtractor.match_no">1</stringProp>
- </RegexExtractor>
- <hashTree/>
- </hashTree>
- </hashTree>
- <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="GET-消费流水" enabled="true">
- <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
- <collectionProp name="Arguments.arguments"/>
- </elementProp>
- <stringProp name="HTTPSampler.path">/api/billing/consumption-logs?page=1&page_size=10</stringProp>
- <stringProp name="HTTPSampler.method">GET</stringProp>
- <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
- <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
- </HTTPSamplerProxy>
- <hashTree>
- <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="Auth" enabled="true">
- <collectionProp name="HeaderManager.headers">
- <elementProp name="" elementType="Header">
- <stringProp name="Header.name">Authorization</stringProp>
- <stringProp name="Header.value">Bearer ${token4}</stringProp>
- </elementProp>
- </collectionProp>
- </HeaderManager>
- <hashTree/>
- <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="断言200" enabled="true">
- <collectionProp name="Asserion.test_strings"><stringProp name="49586">200</stringProp></collectionProp>
- <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/>
- </hashTree>
- <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="思考时间" enabled="true">
- <stringProp name="ConstantTimer.delay">200</stringProp>
- </ConstantTimer>
- <hashTree/>
- </hashTree>
- <!-- 结果收集 -->
- <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="聚合报告" 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>true</fieldNames>
- <responseHeaders>false</responseHeaders><requestHeaders>false</requestHeaders>
- <responseDataOnError>false</responseDataOnError>
- <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
- <bytes>true</bytes><sentBytes>true</sentBytes><url>true</url>
- <threadCounts>true</threadCounts><idleTime>true</idleTime><connectTime>true</connectTime>
- </value>
- </objProp>
- <stringProp name="filename">results/billing_v3.jtl</stringProp>
- </ResultCollector>
- <hashTree/>
- </hashTree>
- </hashTree>
- </jmeterTestPlan>
|