JMeter & ab 使用简介

AB(Apache Benchmark)

Apache Benchmark 是一个简单易用的,可以帮助理解HTTP服务器如何处理大量流量的工具。该工具预装在MacOS上,Linux发行版可使用任何包管理工具进行安装。要阅读更多关于Apache Benchmark的信息并了解它能做的事情,可键入 ”man ab“。

我们可以使用AB在特定的端口上出发特定数量的请求。我们还可以控制其他参数,例如并发(它会同时触发多少个请求)。

执行命令:
ab -c 100 -n 1000000 -H ‘host:RateLimitingWebServer’ ‘http://127.0.0.1:4140/api/v1/limiting/tryAcquire?resource=jg-app_demo-HelloWorld&key=testKey’

JMeter

相对于Apache Benchmark,JMeter是一个更加强大的工具,允许对流量触发方式有更具体的指定。例如,使用Jmeter可以实现”在1分钟之内发送1000个请求“,这更符合实际。他是可配置的,提供了一个GUI来帮助使用者设置测试。

图形界面主要用于创建、调试测试脚本,然后再在服务器端用命令行模式执行脚本,得出结果。

本地UI界面生成jmx脚本文件,上传至服务器

  1. 测试计划中添加线程组,一个Test Plan下可添加多个 Thread Group 以进行多个接口的混合测试。(注意多个接口测试的情况,需要将HTTP名称设置不同的名字,否则测试报告中将无法区分)
    Thread Group节点有三个常用配置项:
  • Number of Threads(users):用于配置并发用户数,类似于ab中的-c参数
  • Ramp-up period(seconds):用于配置启动并发用户数的时间段,比如Number of Threads配置为10,而Ramp-up period配置为5s,则每秒钟启动2个线程,该参数可用于程序的预热。
  • Loop Count:设置循环次数,比如配置为10,Number of Threads配置为5,则总的请求数为50。这个配置项也能勾选”Infinite“复选框,表示无限循环执行测试,需要手动停止测试执行。
    JMeter & ab 使用简介_第1张图片
  1. 线程组下添加测试样例,可根据不同接口协议选择不同种类,以HTTP Request为例,添加后可配置HTTP Request的各种属性
    (Thread Group下也可添加一些Config Element,包括针对不同协议的其他配置设置,比如HTTP Header Manager配置请求头中的一些参数)

JMeter & ab 使用简介_第2张图片

注:在Header中指定”host“属性时,需要在其值中添加端口信息,否则发起请求时默认将Request中的端口附加到host属性值上。可以在host属性值后添加”:80“端口,提交请求时,该80端口会被忽略。

  1. 添加Listener监听结果,可以尝试不同的Listener,查看具体结果或统计信息。
    JMeter & ab 使用简介_第3张图片

  2. 服务端命令行模式执行测试脚本
    https://jmeter.apache.org/usermanual/get-started.html#non_gui

./bin/jmeter -n -t flowControl.jmx -l log-u100.jtl
  • -n:CLI模式
  • -t:指定脚本文件
  • -l:生成结果日志
  1. 下载结果日志到本地,根据结果生成报告;也可以在服务器端生成报告后下载到本地。
    https://jmeter.apache.org/usermanual/generating-dashboard.html#report
./bin/jmeter -g log-u100.jtl -o ./report-u100 
  • -g:指定结果日志
  • -o:指定报告生成地址目录

也可以在JMeter图形界面中使用某个Listener导入结果日志,可看到汇总信息。

参考文章:
https://medium.com/@harrietty/load-testing-an-api-with-apache-benchmark-or-jmeter-24cfe39d3a23
JMeter最佳实践:https://jmeter.apache.org/usermanual/best-practices.html

你可能感兴趣的:(测试)