JMeter性能测试
使用 jmeter 一般用于以下两种类型的性能测试
- 负载测试:通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。
- 压力测试:测试系统能承受的最大负载能力。目的在于发挖掘出目标服务系统可以处理的最大负载。
基本过程
JMeter进行性能测试的基本过程:
执行简单的压力测试实例
选择两个不同的网站,如百度和淘宝,同一时间多个用户进行并发访问该页面,然后对结果做一些简单的分析:
百度网页测试
用百度的网页(www.bai.com)测试200个用户在十秒之内同时访问百度的网页,每个用户只访问一次
依次添加线程组、HTTP默认的请求值、HTTP请求、聚合报告,查看结果树,用表格查看结果:
线程组:
HTTP默认的请求值:
HTTP请求:
聚合报告,查看结果树,用表格查看结果:
对结果进行分析:
通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过。
Thread Name:线程组名称
Sample Start: 启动开始时间
Load time:加载时长
Latency:等待时长
Size in bytes:发送的数据总大小
Headers size in bytes:发送数据的其余部分大小
Sample Count:发送统计
Error Count:交互错误统计
Response code:返回码
Response message:返回信息
Response headers:返回的头部信息
这里绿色的就说明请求是通过的,返回值是200,如果出现红色的×就说明请求失败,这时候可以通过右边的取样器结果和响应数据来查看结果。
聚合报告分析:
这里可以看到很多数据,相关名词解释如下:
Sample:本次测试场景共运行多少线程;
Average:平均响应时间;
Median:统计意义上的响应时间中值;
90% line:所有线程中90%的线程响应时间都小于xx的值;
Min:响应最小时间;
Max:响应最大时间;
Error:出错率;
Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”来衡量。 时间单位已经被选取为second,所以,显示速率至少是1.0,即每秒1个请求。 当吞吐量被保存到CVS文件时,采用的是requests/second,所以30.0 requests/second 在CVS中被保存为0.5Kb/sec - 以Kilobytes/seond来衡量的吞吐量
200个用户在10秒中同时访问百度的页面,平均响应时间是351毫秒,最大的响应时间1836毫秒,最小的响应时间是129毫秒,错误率为0,说明百度网页 的性能还是不错的,每个页面都能很快的得到响应。
用表格查看结果分析:
名词解释如下:
Sample:每个请求的序号
Start Time:每个请求开始时间
Thread Name:每个线程的名称
Label:Http请求名称
Sample Time:每个请求所花时间,单位毫秒
Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
Bytes:请求的字节数
样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数
平均:每个线程请求的平均时间
最新样本:表示服务器响应最后一个请求的时间
偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
在这里面可以看到,线程组名称,每个线程响应时间,返回结果是否成功,字节数等。
淘宝网页测试
重复上面的过程,只需要把IP地址更换为淘宝地址,我是新建了一个线程组,如下图所示:
运行的结果:
200个用户在10秒中同时访问淘宝的页面,平均响应时间是374毫秒,最大的响应时间928毫秒,最小的响应时间是264毫秒,错误率为0。
Hub网页测试
修改IP地址,重复上面的步骤,查看结果只添加了聚合报告
200个用户在10秒中同时访问Hub的页面,平均响应时间是1119毫秒,最大的响应时间3154毫秒,最小的响应时间是762毫秒,错误率为0。
网页测试结果对比
200个用户在10秒中百度和淘宝页面对比表
| 平均响应时间 (毫秒) | 最大响应时间 (毫秒) | 最小响应时间 (毫秒) | 错误率 |
百度网页 | 351 | 1836 | 129 | 0 |
淘宝网页 | 374 | 928 | 264 | 0 |
Hub页面 | 1119 | 3154 | 762 | 0 |
从结果来看,我们公司的Hub性能与百度和淘宝都有较大的差距,有待提高。
上面的内容就是一个压力测试的实例,只是简单的一个同时访问的网页的性能测试。