9.5执行顺序
(1)首先创建一个jml文件,包括类似于GUI方式的“测试计划”,“线程组”,“smpt sampler ” 等对应的标签。
如图:
<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="2.6" jmeter="2.11 r1554548"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="测试计划" 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="变量" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="线程组" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="控制器" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1392779267000</longProp> <longProp name="ThreadGroup.end_time">1392779267000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true"> <stringProp name="SMTPSampler.server">smtp.126.com</stringProp> <stringProp name="SMTPSampler.serverPort">25</stringProp> <stringProp name="SMTPSampler.mailFrom">[email protected]</stringProp> <stringProp name="SMTPSampler.replyTo"></stringProp> <stringProp name="SMTPSampler.receiverTo">[email protected]</stringProp> <stringProp name="SMTPSampler.receiverCC"></stringProp> <stringProp name="SMTPSampler.receiverBCC"></stringProp> <stringProp name="SMTPSampler.subject">test</stringProp> <stringProp name="SMTPSampler.suppressSubject">false</stringProp> <stringProp name="SMTPSampler.include_timestamp">false</stringProp> <stringProp name="SMTPSampler.message">我是一个测试邮件</stringProp> <stringProp name="SMTPSampler.plainBody">false</stringProp> <stringProp name="SMTPSampler.attachFile"></stringProp> <stringProp name="SMTPSampler.useSSL">false</stringProp> <stringProp name="SMTPSampler.useStartTLS">false</stringProp> <stringProp name="SMTPSampler.trustAllCerts">false</stringProp> <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp> <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp> <stringProp name="SMTPSampler.trustStoreToUse"></stringProp> <boolProp name="SMTPSampler.use_eml">false</boolProp> <stringProp name="SMTPSampler.emlMessageToSend"></stringProp> <stringProp name="SMTPSampler.useAuth">true</stringProp> <stringProp name="SMTPSampler.password">532</stringProp> <stringProp name="SMTPSampler.username">zhangzhiga</stringProp> <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp> <stringProp name="SMTPSampler.enableDebug">false</stringProp> <collectionProp name="SMTPSampler.headerFields"/> </SmtpSampler> <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" 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>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </hashTree> </jmeterTestPlan>
<stringProp name="LoopController.loops">1</stringProp>:配置循环次数
<stringProp name="ThreadGroup.num_threads">1</stringProp>:配置线程数
<stringProp name="ThreadGroup.ramp_time">1</stringProp>:配置ramp up
<longProp name="ThreadGroup.start_time">1392779267000</longProp>:开始时间
<longProp name="ThreadGroup.end_time">1392779267000</longProp>:结束时间
<stringProp name="SMTPSampler.server">smtp.126.com</stringProp>
:服务器地址
<stringProp name="SMTPSampler.serverPort">25</stringProp>
:服务器端口
<stringProp name="SMTPSampler.mailFrom">[email protected]</stringProp>
:发送地址
<stringProp name="SMTPSampler.receiverTo">[email protected]</stringProp>
:接收地址
<stringProp name="SMTPSampler.subject">test</stringProp>
:邮件主题
<stringProp name="SMTPSampler.message">我是一个测试邮件</stringProp>
:邮件内容
<stringProp name="SMTPSampler.password">5321</stringProp>
:邮件服务器登陆密码
<stringProp name="SMTPSampler.username">[email protected]</stringProp>
:邮件服务器登陆账号
(2)配置好上面的文件以后,执行下面的命令即可。
Jmeter -n -t c:/smtp.jxm -l c:/log.jtl
-h, --help 打印使用信息并退出
-v, --version 打印版本信息并推出
-p, --propfile {argument} 使用的JMeter属性文件
-q, --addprop {argument} 附加的属性文件
-t, --testfile {argument} 运行的JMeter测试文件(.jmx)
-l, --logfile {argument} 日志取样文件
-n, --nongui 非用户界面运行JMeter
-s, --server 运行JMeter服务器
-H, --proxyHost {argument} 设置JMeter使用的代理服务器
-P, --proxyPort {argument} 设置JMeter使用的代理服务器端口
-u, --username {argument} 设置JMeter使用的代理服务器用户名
-a, --password {argument} 设置JMeter使用的代理服务器密码
-J, --jmeterproperty {argument}={value} 定义附加的 JMeter 属性
-D, --systemproperty {argument}={value} 定义附加的 System 属性 -S, --systemPropertyFile {filename} 一个属性文件被做为系统属性添加 -L, --loglevel {argument}={value} 定义日志等级: [category=]level 例 如 jorphan=INFO or jmeter.util=DEBUG
-r, --runremote从非用户界面模式启动远程服务器
-d, --homedir {argument} 使用的JMeter目录
(3)运行成功的显示结果:
输出的文件:
(4)pop3测试的JML文件如下:
<?xml version="1.0" encoding="UTF-8"?> <jmeterTestPlan version="1.2" properties="2.6" jmeter="2.11 r1554548"> <hashTree> <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="测试计划" 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="用户定义的变量" enabled="true"> <collectionProp name="Arguments.arguments"/> </elementProp> <stringProp name="TestPlan.user_define_classpath"></stringProp> </TestPlan> <hashTree> <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="线程组" enabled="true"> <stringProp name="ThreadGroup.on_sample_error">continue</stringProp> <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true"> <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> <stringProp name="ThreadGroup.num_threads">1</stringProp> <stringProp name="ThreadGroup.ramp_time">1</stringProp> <longProp name="ThreadGroup.start_time">1392781456000</longProp> <longProp name="ThreadGroup.end_time">1392781456000</longProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> </ThreadGroup> <hashTree> <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true"> <stringProp name="host_type">pop3</stringProp> <stringProp name="folder">INBOX</stringProp> <stringProp name="host">pop.126.com</stringProp> <stringProp name="port">110</stringProp> <stringProp name="username">[email protected]</stringProp> <stringProp name="password">5321225zzggdj</stringProp> <intProp name="num_messages">-1</intProp> <boolProp name="delete">false</boolProp> <stringProp name="SMTPSampler.useSSL">false</stringProp> <stringProp name="SMTPSampler.useStartTLS">false</stringProp> <stringProp name="SMTPSampler.trustAllCerts">false</stringProp> <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp> <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp> <stringProp name="SMTPSampler.trustStoreToUse"></stringProp> </MailReaderSampler> <hashTree/> <ResultCollector guiclass="ViewResultsFullVisualizer" 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>false</fieldNames> <responseHeaders>false</responseHeaders> <requestHeaders>false</requestHeaders> <responseDataOnError>false</responseDataOnError> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage> <assertionsResultsToSave>0</assertionsResultsToSave> <bytes>true</bytes> </value> </objProp> <stringProp name="filename"></stringProp> </ResultCollector> <hashTree/> </hashTree> </hashTree> </hashTree> </jmeterTestPlan>
说明:
<stringProp name="host_type">pop3</stringProp>:协议
<stringProp name="host">pop.126.com</stringProp>:服务器地址
<stringProp name="port">110</stringProp>:服务器开放端口
<stringProp name="username">[email protected]</stringProp>
:接收邮件的用户账号
<stringProp name="password">5321</stringProp>
:接收账号的服务器密码
(5)pop3测试结果:
注:此时处于等待接收,如果有邮件接收到会有提示。
(1)首先下载javamail,然后打开lib复制用到的jar包,例如pop3.jar等。
(2)配置smtp服务器,创建点击测试计划创建线程组
(3)配置smtp服务器,创建smpt sampler 如图:
插曲:
首先点击创建好的smpt sampler,然后添加如图:
Csv文件配置器:用来配置多条独立文件,可以在测试的时候使用多个账号同时测试。
配置如下:
看test.txt文件:
回到smpt sampler配置:
(4)配置smtp服务器,添加查看结果树:
(5)运行run:结果如图下:
到邮箱看看:
(6)配置POP3服务:创建线程组(创建过程同上,如果需要,记得配置“线程属性”)
(7)配置POP3服务:创建mail reader sampler:
配置如下:
(8)配置POP3服务:创建表格分析数据:添加->监听器-.>查看结果树
图:看第(9)步骤
(9)运行接收邮件测试
如图:
8元件介绍
线程数:为设置发送请求的用户数目,如设置为5,则有5个用户发送请求。
Ramp-up period: 所有线程数对应的请求发生的总时间间隔,单位是秒。比如你的请求数目是5,而这个参数是10,那么每个请求之间的间隔就是10/5,也就是2秒,即每个请求都要在之前的那个请求发生后10秒启动。如果设置为0,则请求并发执行。
循环次数:请求发生的重复次数,如果选择后面的“永远”(默认),那么 请求将一直继续,如果不选择“永远”,而在输入框中输入数字,那么请求将重复指定的次数,如果输入0,那么请求将执行一次。
JMeter有两种控制器:取样器和逻辑控制器。
取样器告诉JMeter发送请求到服务器。例如,如果你要JMeter发送一个HTTP请求添加一个HTTP请求取样器。你也可以通过添加一个或者多个配置元件到一个取样器来定制一个请求。更多信息,见取样器。
逻辑控制器让你定制当发送请求时JMeter使用的判断逻辑。例如,你可以添加交替控制器来在两个HTTP请求取样器之间交替 。更多信息,见逻辑控制器。
JMeter取样器包括:
FTP 请求
HTTP 请求
JDBC 请求
Java object 请求
LDAP 请求
SOAP/XML-RPC 请求
WebService (SOAP) 请求
每个取样器有一些你可以设置的属性。你可以通过添加一个或多个配置元件到取样器来进一步定制它。注意JMeter发送请求按照取样器出现在树中的顺序。 如果你想发送多个相同类型的请求(例如,HTTP Request)到相同的服务器,可以考虑使用一个默认配置元件。每个控制器有一个或者多个默认配置元件(见下)。
记得添加一个监听器到线程组来查看/保存你的请求结果到磁盘。
如果你对使用JMeter平台的基础验证器到你的请求响应感兴趣,添加一个断言到请求控制器。例如, 在压力测试一个web程序时,服务器会返回一个成功的HTTP响应代码,但是这个页面有错误或者被忽略部分。你可以添加断言来检查某个HTML标签,一些 错误字符串,等等。JMeter允许你使用正则表达式创建断言。
JMeter 內建取样器
逻辑控制器让你定制当发送请求时JMeter使用的判断逻辑。逻辑控制器还可以作为下列任何元件的子元件:取样器(请求)、配置元件、和其他逻辑控制器。
监听器提供访问JMeter收集当JMeter运行的关于测试计划的信息。 图形结果监听器在一张图上绘制响应时间。
"查看结果树"监听器显示了请求和响应取样器的细节,并且以基础的HTML和XML显示响应表现。
其他监听器提供了摘要或者集合信息。
另外,监听器可以指导它们收集的数据到一个文件供以后用。在JMeter中每一个监听器提供一个域来指出存储数据的文件。
在测试中监听器可以添加到任何位置。它们仅仅会从它们等级或者它们以下等级的元件收集数据。
伴随JMeter有很多有趣的监听器
默认,JMeter线程发送请求时不在请求间暂停。我们建议你通过添加一个可用的定时器到你的线程组来指定一个延迟。如果你不添加延迟,JMeter会在短时间内产生太多请求,可能会压倒你的服务。
定时器会使JMeter在一个线程开始每个请求间延迟一段时间。
如果你选择添加多于一个定时器到一个线程组,JMeter会在执行取样器前获得定时器数量并暂停那个时间量。
1. 配额制元件
2. 前置处理器
3. 定时器
4. 取样器
5. 后置处理器 (如果SampleResult不为空)
6. 断言 (如果SampleResult不为空)
7. 监听器 (如果SampleResult不为空)