压力测试概念
- 压力测试即在一定的硬件条件下,模拟大批量用户对软件系统进行高负荷测试,测试出软件的负荷极限,进而重新优化应用性能或在实际的应用环境中控制风险。
- 常见压力测试工具
(1)Apache JMeter
JMeter作为一款广为流传的开源压力测试产品,JMeter可以用于测试静态和动态资源,如静态文件、java服务器程序、数据库、FTP服务器等,也允许使用正则表达式创建断言,这里介绍JMeter4.0
(2)Loadrunner
Loadrunner是一种预测系统行为和性能的负载测试工具,通过模拟实际用户的操作行为进行实时性能监测,来帮助测试人员更快地查找和发现问题
(3)NeoLoad
NeoLoad是Neotys出品的一种负载和性能测试工具,可真实地模拟用户活动并监视基础架构运行状态从而消除所以web和移动应用程序中的瓶颈。NeoLoad通过使用无脚本GUI和一系列自动化功能,可让测试设计速度提高5~10倍。
使用JMeter进行高并发测试
-
下载并按照JMeter
下载Jmeter4.0,并将下载后的apache-jmeter-4.0.zip解压到固定目录,如D盘
注意:JMeter运行需要依赖于JDK环境,在安装JMeter前,需要先确认安装机器的JDK环境已具备。JMeter4.0需依赖JDK1.8及以上版本。 -
配置JMeter环境
在环境变量中,新增或修改以下配置
(1)添加变量JMETER_HOME,设定其值为“D:\environment\apache-jmeter-4.0”(JMeter实际解压路径(bin的上一层))

(2)修改Path变量,追加以下内容(新增的内容和原来Path变量的值以“,”相隔)。%JMETER_HOME%\bin;

(3)添加或修改CLASSPATH变量,添加如下内容
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;
%JMETER_HOME%\lib\jorphan.jar;(这个好像不用也可以)

(4)打开命令提示符窗口,输入“jmeter”命令启动JMeter(以管理员身份运行)

(5)设置JMeter语言为简体中文

使用JMeter进行抢购项目测试
1.添加测试计划
修改测试计划名称为“测试抢购”项目,并点击保存图标,保存测试计划

2.添加线程组

3.设置线程组参数
(1)线程数:要启动的线程数目
(2)Ramp-Up Period(in seconds):线程启动时间间隔,如果为0,则代表同事启动对应的线程数的线程,即并发数
(3)循环次数:请求执行次数。

4.添加HTTP请求,然后保存

5.设置HTTP请求相关参数,并保存(如果是80端口可不设置)

6.添加“察看结果树”监听器,并点击“保存”图标

注意:监听器用来监听请求的执行结果,“察看结果树”为最常用的监听器之一
7.启动测试计划

8.查看测试结果

9.(1添加配置元件“计数器”)并点击保存图标进行保存

设置计数器的相关参数,其中Starting value为初始值、递增为每次循环增量、引用名称为计数器被使用时需要指定的名称

(2.引用计数器)
使用 引 用 名 称 引 用 对 应 计 数 器 , 图 中 包 含 两 个 参 数 t o k e n 、 g o o d s I d , 其 值 分 别 为 “ t o k e n : {引用名称}引用对应计数器,图中包含两个参数token、goodsId,其值分别为“token: 引用名称引用对应计数器,图中包含两个参数token、goodsId,其值分别为“token:{token}”和“1”

10.并发测试
通过以上步骤我们已经完成了“抢购”接口高并发测试的配置,点击运行接口即可测试,开发人员还可以不断调整并发线程数来测试系统的抗压极限。
使用JMeter生成测试报告
1.生成测试报告
使用管理员打开命令提示符输入以下命令
jmeter -n -t d://qg.jmx -l d://result.jtl -e -o d://result
其中d://qg.jmx为测试计划的实际保存路径,d://result.jtl为测试结果的实际保存路径,d://result为生成HTML格式图形化报告的实际存储路径
注意:jtl文件为JMeter测试结果文件,用来保存实际的测试结果。
当命令窗口打印出“end of run”的时候,代表生成报告成功。index。html页面为报告的入口。
分析测试报告
开发人员不需要了解并发测试报告中的所有项,下面列出一下开发人员需要重点关注的测试项。
1.APDEX性能指数
APDEX是一个国际通用标准,是用户对应用性能满意度的量化值。
(1)T(Toleration threshold,用户容忍阈值):指的是用户可以容忍应用响应的最大时间,响应时间小于该阈值则用户体验越愉悦,大于该阈值则用户体验很一般,但是可以容忍,还没达到用户要放弃应用的程度。
(2)F(Frustration threshold,用户挫折阈值):指的是用户放弃应用的临界值,响应时间超过该值表示用户可能决定放弃该应用。
请求响应的详细时间分布可以通过点击Charts->Response Times–>Response Time Overview进行查询
2.Requests Summary(请求摘要)
表示执行成功和失败的请求数目的具体占比,OK表示执行成功,KO表示执行失败。JMeter主要是以HTTP状态码是否为200来判断请求的成功和失败。
3.Statistics(综合统计图)
Statistics为综合性的请求响应时间及响应状态的统计图,包含了请求数、请求失败数、请求错误比例,平均响应时间、最小响应时间、最大响应时间等。
4.Errors(错误统计图)
Errors为并发测试中的请求错误统计图。



















