压测工具Jmeter学习

压测工具Jmeter

Jmeter介绍

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等。
除了Jmeter外,其它常用的压测工具还有:

  1. Apache的ab压力测试
  2. Nginter 韩国研发
  3. PAS 阿里测试工具
  4. MeterSphere :国内持续测试的开源平台

下载安装

去官网下载安装即可。首页左侧有相关下载的链接。
压测工具Jmeter学习_第1张图片

使用

一般情况下,Jmeter的使用流程如下:

  1. 创建测试计划
  2. 配置线程组、http请求、断言、结果监听器
  3. 执行测试
  4. 查看测试结果,分析测试结果

1、创建测试计划
压测工具Jmeter学习_第2张图片
2、配置线程组

  • 线程数:用来发送http请求的线程的数量
    • 线程组常用来模拟一组用户访问系统资源(API接口)
    • 假如客户机没有足够的能力来模拟较重的负载,可以使用JMeter的分布式测试功能,通过一
      个JMeter的Master来远程控制多个JMeter的Salve完成测试
  • 循环次数:循环执行多少次操作
    • 循环次数表示了循环执行多少次操作!循环次数直接决定整个测试单个线程的执行时间,和整体测试执行时间
    • 单线程执行时间 = 单请求平均响应时间 * 循环次数
    • 整个测试耗时 = 单线程执行时间 + (Ramp-Up - Ramp-Up / 线程数)
  • Ramp-Up:建立全部线程耗时
    • Ramp-Up Period (in-seconds) 代表隔多长时间执行,默认值是0,0代表同时并发。用于告知JMeter 要在多长时间内建立全部的线程
      压测工具Jmeter学习_第3张图片

线程属性说明:

  • 线程数:20, 线程数量,这里设置了20个线程
  • ramp-up:表示在指定时间之内把这些线程全部启动起来。 如果n=1,那就表示要在1s以内把50个线程全部启动起来
  • 循环次数:2000,表示把 20 thread 循环2000次,也就是说让每一个请求接口循环调用接口2000次

3、设置Http请求
压测工具Jmeter学习_第4张图片
设置请求协议、端口、路径等信息。
压测工具Jmeter学习_第5张图片

4、设置断言
JMeter断言常用有两种,一种是响应断言,一种是响应时间断言,如果响应内容不满足断言的配置,则认为这次的请求是失败的。

  • 响应断言:判断响应内容是否包含指定的字符信息,用于判断api接口返回内容是否正确
  • 响应时间断言:判断响应时间,是否超过预期的时间,用于判断api接口返回时间是否超过预期
    压测工具Jmeter学习_第6张图片
    接口返回包含"code":0则认为返回内容正确
    压测工具Jmeter学习_第7张图片

设置请求接口时间超过3毫秒,则认为请求失败
压测工具Jmeter学习_第8张图片

5、设置结果监听
压测工具Jmeter学习_第9张图片
配置监听器:监听压测结果,聚合报告和汇总结果很类似,看一个就行

  1. 聚合报告:查询结果信息聚合汇总,例如样本、平均值、通吐量、最大值、最小值…
  2. 察看结果树:记录每一次压测请求
  3. 图像结果:分析了所有请求的平均值、终止、偏离值和通吐量之间的关系。
  4. 汇总结果:汇总压测结果
  5. 汇总图:将压测结果以图像形式展示

聚合报告相关结果解释如下:

  • 样本(sample): 发送请求的总样本数量
  • 响应时间【单位ms】:
    • 平均值(average):平均的响应时间
    • 中位数(median): 中位数的响应时间,50%请求的响应时间
    • 90%百分位(90% Line): 90%的请求的响应时间,意思就是说90%的请求是<=1765ms返回,另外10%的请求是大于等于1765ms返回的。
    • 95%百分位(95% Line): 95%的请求的响应时间,95%的请求都落在1920ms之内返回的
    • 99%百分位(99% Line): 99%的请求的响应时间
    • 最小值(min):请求返回的最小时间,其中一个用时最少的请求
    • 最大值(max):请求返回的最大时间,其中一个用时最大的请求
    • 异常(error): 出现错误的百分比,错误率=错误的请求的数量/请求的总数
    • 吞吐量TPS(throughout): 吞吐能力,最重要的就是这个了
    • Received KB/sec----每秒从服务器端接收到的数据量
    • Sent KB/sec----每秒从客户端发送的请求的数量
      压测工具Jmeter学习_第10张图片

结果树
压测工具Jmeter学习_第11张图片

汇总报告相关结果解释如下,和聚合报告很类似。

  • 样本(sample): 发送请求的总样本数量
  • 响应时间【单位ms】:
    • 平均值(average):平均的响应时间
    • 最小值(min):请求返回的最小时间,其中一个用时最少的请求
    • 最大值(max):请求返回的最大时间,其中一个用时最大的请求
    • 标准偏差:度量响应时间分布的分散程度的标准,衡量响应时间值偏离平均响应时间的程度。
      标准偏差越小,偏离越少,反之亦然。
  • 异常(error): 出现错误的百分比,错误率=错误的请求的数量/请求的总数
  • 吞吐量TPS(throughout): 吞吐能力,这个才是我们需要的并发数
  • 每秒接收 KB/sec----每秒从服务器端接收到的数据量
  • 每秒发送KB/sec----每秒从客户端发送的请求的数量
  • 平均字节数
    压测工具Jmeter学习_第12张图片
    除了上面的这些步骤以外,由于某些情况下回涉及到登录以后对接口进行测试,所以需要添加HttpCookie管理器,这样才能正请求成功压测工具Jmeter学习_第13张图片压测工具Jmeter学习_第14张图片

最后Jmeter如何设置中文,找到对应内容加上第一句和最后一句。

goto remove_language_reset_bug_4.0
if not defined JMETER_LANGUAGE (
    rem Set language
    rem Default to en_EN
    set JMETER_LANGUAGE=-Duser.language="en" -Duser.region="EN"
)
:remove_language_reset_bug_4.0

参考

  1. Jmeter中文网
  2. Jmeter官网

你可能感兴趣的:(JavaEE,jmeter,学习,java)