1 .测试范例选择最常见的百度搜索界面
1.1接口地址: http://www.baidu.com/s? ie=utf-8wd=jmeter性能测试
http://www.baidu.com/s? ie=utf-8wd=jmeter性能测试
1.2请求参数
缺省情况下,ie:编码将使用utf-8wd:搜索词1.3返回结果。 搜索结果可以通过搜索词wd是否包含在搜索结果中来判断这次请求的成功或失败
2. JMeter脚本编写附加线程组:线程数、准备时间、循环数、调度程序等附加HTTP请求:协议HTTP/ftp、服务器名、方法GET/POST、查看参数附加结果树: http
2.1添加线程组右键单击“测试计划”-“添加”-“线程(用户)”-“线程组”
您可以在此设定线程组名称、线程数、准备时间(ramp-upperiod(inseconds ) ) )周期数和调度程序等参数。
线程组参数详解:
1 .线程数:虚拟用户数。 虚拟用户占用进程或线程。 设置多少个虚拟用户,这里是设置多少个线程。
2 .映射持续时间(第二阶段)准备时间)设置的所有虚拟用户需要多长时间才能启动? 如果线程数为10且准备时间为2,则必须在2秒内启动10个线程,即每秒启动5个线程。
3 .循环次数:每个线程发送请求的次数。 如果线程数为10,循环数为100,则每个线程发送100次请求。 请求总数为10*100=1000。 如果选中“永远”,则所有线程都将继续发送请求,并选择停止脚本运行。
4.delaythreadcreationuntilneeded :根据需要延迟线程的创建。
5 .调度程序:设置线程组启动的开始时间和结束时间。 (配置调度程序时,必须检查循环次数是否为永久。 )
持续时间(秒)测试持续时间涵盖结束时间
启动延迟(秒)测试延迟启动时间并涵盖启动时间
启动时间:测试启动时间。 启动延迟将涵盖这一点。 启动时间过后,只需手动测试即可覆盖当前时间。
结束时间:测试结束时间、持续时间涵盖它。
因为需要调试接口,所以我们暂时使用默认设置,并在以后实际运行性能测试时返回配置。
2.2添加HTTP请求线程组-添加-右键单击sampler http请求
我们的接口http://www.baidu.com/s? ie=utf-8wd=jmeter性能测试请参考下图进行填写。
Http请求主要参数详解:
1 .网络服务器
协议:向目标服务器发送HTTP请求协议。 可以是HTTP或HTTPS,默认值为HTTP
服务器名称或IP :发送http请求的目标服务器名称或IP
端口号:目标服务器的端口号。 默认值为80
2.Http请求
如何:如何发送HTTP请求? 可用的方法有GET、POST、HEAD、PUT、OPTIONS、TRACE和DELETE等。
路径:目标URL的路径(URL中除服务器地址、端口和参数之外的其余部分) )。
内容编码:编码方式。 默认值为ISO-8859-1编码,在此配置为utf-8
3 .随请求发送参数
对于在请求中发送的URL参数,用户可以在此表中设置URL中的所有参数。 表中的每一行都有一个参数。 对应于URL中的name=value。 请注意,当参数传递给中文时,必须检查“编码”
2.3添加结果树右键单击线程组-添加-监听程序-显示结果树
此时,请运行Http请求并将响应数据格式更改为“Http源格式”。 可以看到这次搜索结果页面的标题是“jmeter性能测试_百度搜索”。
2.4添加用户定义的变量可以添加用户定义的变量以参数化Http请求。 “线程组”-“添加”-“组件设置”-右键单击“用户定义的变量”。
添加存储搜索词的参数wd :
在Http请求中使用此参数。 型号为${wd}
2.5添加断言响应HTTP请求-添加-断言-右键单击响应断言
确定返回的文本是否包含搜索词
,添加参数${wd}到要测试的模式中: 2.6 添加断言结果右键点击“HTTP请求” -> “添加”-> “监听器” -> “断言结果”
这时,我们再运行一次就可以看到断言结果成功
当在2.5中,将断言从${wd}更改为${wd}1234时,
断言结果失败
2.7 添加聚合报告右键点击“线程组” -> “添加” -> “监听器” -> “聚合报告”,用以存放性能测试报告
这样,我们就完成了一个完整Http接口的JMeter性能测试脚本编写
3. 执行性能测试 3.1 配置线程组点击线程组,配置本次性能测试相关参数:线程数,循环次数,持续时间等,这里我们配置并发用户数为10,持续时间为60s
3.2 执行测试点击绿色小箭头按钮即可启动测试,测试之前需要点击小扫把按钮清除之前的调试结果。
4. 分析测试报告待性能测试执行完成后,打开聚合报告可以看到:
聚合报告参数详解:
1. Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
2. #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
3. Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
4. Median:中位数,也就是 50% 用户的响应时间
5. 90% Line:90% 用户的响应时间
6. Min:最小响应时间
7. Max:最大响应时间
8. Error%:错误率——错误请求数/请求总数
9. Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
10. KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
一般而言,性能测试中我们需要重点关注的数据有:
#Samples 请求数Average 平均响应时间Min 最小响应时间Max 最大响应时间Error% 错误率Throughput 吞吐量