俗话说的好:不依赖工具,但要重视工具。压测工具是压测理论的产物,学习好工具,可以帮助更加理解性能测试的基础知识。
性能测试,简而言之,就是模拟大量用户同时访问,测试服务是否满足性能要求。
1、选择合适的工具
选择工具之前,首先了解一下,我们平常做性能测试,对性能工具的需求有哪些:
- 经常测试的对象:Http(s)协议、WebSocket (网络通信协议)、TCP/IP(测试Mysql、Redis)
- 扩展性好:支持分布式部署
- 使用成本低:文档多、支持UI界面操作、插件全
下面,我们从工具功能和性能两个角度,来横向对比。
性能测试工具功能对比:
性能测试工具性能对比:
综上,考虑到免费、开源、支持多协议、分布式扩展、脚本开发方式、平台支持和性能表现,选择Jmeter作为我们主要的性能测试工具。
2、了解Jmeter
(1)安装
- Jdk安装
- Jmeter.zip下载
- 解压后,运行Jmeter.bat或Jmeter.sh即可
启动后界面:
这里的线程组,可以理解为一个用户模型。
(2)线程组
线程组可以理解为用户模型。
线程组控制面板包括:
- 线程组名称
- 线程数(正在测试的用户数)
- 加速(Ramp-up)时间:从0增加到线程数的时间
- 循环计数:循环测试的次数
- 调度器:
- 持续时间:表示脚本持续运行的时间,以秒为单位,比如如果你要让用户持续不断登录1个小时,你可以在文本框中填写3600。这样就会在1小时内循环执行。
- 启动延迟:表示脚本延迟启动的时间,在点击启动后,如果启动时间已经到达,但是还没有到启动延迟的时间,那么,启动延迟将会覆盖启动时间,等到启动延迟的时间到达后,再运行系统。
(3)测试Http服务
下面以开发一个Http脚本为例,来熟悉性能测试中常用的功能和插件。
A. http脚本开发
如图中所示,界面中一目了然,协议、域名、Method、Url、参数分别填到对应位置即可。
如果请求需要header,可以添加Http信息头管理器,添加header信息。
B. 参数化
总所周知,性能测试接口必须进行参数化,如果是固定数据,可能导致所有请求全部访问了缓存,这样就无法评估服务真实性能。
Jmeter参数化有3种常用方法:用户自定义变量、csv数据文