web性能测试工具

由于项目需要,最近对产品的性能做了简单的性能测试,调研了常用的几款性能测试工具。

- LoadRunner Jmeter Locust
授权方式 商业收费 开源免费 开源免费
开发语言 C/Java Java Python
测试脚本形式 C/Java GUI Python
并发机制 进程/线程 线程 协程
单机并发能力
资源监控 支持 不支持 不支持
报告与分析 完善 简单图表 简单图表
支持二次开发 不支持 支持 支持
分布式压力 支持 支持 支持
测试平台 控制端只能是window,压测端可以是window/linx window/linux window/linux

本地测试环境

部署环境 MacBook Pro
内存 8 GB
处理器 2.7 GHz Intel Core i5

Jmeter

Jmeter是Apache提供的一款功能比较齐全的性能测试工具。用例既可以通过GUI进行编写,也可以通过录制脚本的方式创建。另外,Jmeter也可以作为应用的功能/回归测试,通过设定结果断言,脚本会自动判断请求是否返回了正确结果。

Jmeter GUI是Jmeter的图形模式,提供可视化的编辑方式,多样的监听器,适合于创建测试计划以及脚本调试。
下图是以Jmeter GUI方式配置压力


然而,GUI方式需要耗费较多的系统资源(尤其是脚本中的监听器),从而影响里Jmeter单机性能。因此在大压力场景下CLI方式较为合适,此外,CLI方式可以生成HTML测试报告。
参考命令

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
  • jmx file:测试计划的文件名称

  • result file:输出文件路径,可以是结果日志名称

  • Path to output folder:要保存的report文件路径

  • -n:非GUI模式执行JMeter

  • -t:执行测试文件所在的位置

  • -l:保存测试结果的文件,jtl文件格式

  • -e:测试结束后,生成测试报告

  • -o:指定测试报告的存放位置

  • -H:帮助

使用方式:

  1. 直接生成HTML报告
jmeter -n -t /Users/zhang/Desktop/worksapce/***/***.jmx -e -l test.txt -o  test.html
  1. 根据已有的jtl类型文件生成HTML
jmeter -g test.txt -o  test1.html

ref:
线程组内并发参数设置(JMeter之Ramp-up Period(in seconds)说明)

LoadRunner

成熟的商业软件,价格极其昂贵,功能最为丰富和全面,网上的学习资料较多。目前只支持windows平台,单机难以产生较高的并发压力,linux&docker可以作物负载发生器

Locust

采用多线程/多进程来模拟多用户时,线程数会随着并发数的增加而增加,而线程之间上下文的的切换损耗资源的,IO的阻塞和线程的sleep会不可避免的导致并发效率下降;正因如此,LoadRunner和Jmeter这类采用进程和线程的测试工具,都很难在单机上模拟出较高的并发压力。
Locust采用python脚本编写,使用了协程(gevent)机制并发。由于协程自身特点,避免了并发场景下由于多线程/多进程切换造成的资源开销,极大提高了系统资源利用率,大大提高了单机并发效率。

此外Locust的代码结构清晰,核心代码量也只有几百行,可扩展性也非常不错。

性能指标监控和测试报告图表方面比较缺失,数据统计不如LoadRunner及Jmeter完备。
统计报表页面


  • Type: 请求的类型,例如GET/POST。
  • Name:请求的路径。
  • request:当前请求的数量。
  • fails:当前请求失败的数量。
  • Median:中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值。
  • Average:平均值,单位毫秒,所有请求的平均响应时间。
  • Min:请求的最小服务器响应时间,单位毫秒。
  • Max:请求的最大服务器响应时间,单位毫秒。
  • Content Size:单个请求的大小,单位字节。
  • reqs/sec:是每秒钟请求的个数。

同样的Locust也有no-web方式,以减少客户端资源消耗

locust -f load_test.py --host=https://www.baidu.com --no-web -c 10 -r 2 -t 1m

启动参数:
--no-web 表示不使用Web界面运行测试。
-c 设置虚拟用户数。
-r 设置每秒启动虚拟用户数。
-t 设置设置运行时间。

ab

ab 测试工具是 Apache 提供的一款测试工具,具有简单易上手的特点,适合于单接口测试,实际项目中比较鸡肋。
具有基本性能统计数据,无统计报表


你可能感兴趣的:(web性能测试工具)