一. Apache Jmeter介绍
官网地址:https://jmeter.apache.org/
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
基于Java,自带GUI界面工具,可直接在window下当做桌面软件运行。
一. 使用样例
2.1启动JMeter
编辑apache-jmeter\bin\jmeter.properties文件,修改两处:
sampleresult.default.encoding=UTF-8
language=zh_CN
windows操作系统下,双击apache-jmeter\bin\jmeter.bat,启动软件桌面

测试任务可以保存为 jmx格式配置文件,下次打开配置文件可重新载入任务
2.2模拟简单请求
这里说明最简单的get请求 -> 运行 -> 生成报告的方案
1. 添加线程组


线程数:10 启动10个线程
Ramp-Up时间:5 5秒内启动所有线程(这里10个)。为0时同时启动所有线程
循环次数:100 线程组的执行次数,这里为执行100次线程数为10的线程组
2. 添加HTTP请求

现在要测试访问的地址为:http://x.x.x.x:9382/sms2/acegilogin.jsp,http请求参数填写如下:

3. 添加 查看结果树、聚合报告、汇总报告

4. 运行测试,查看结果

执行结果查看:

5. 导出报告
将以上项目设置保存为: test.jmx 文件
例如放到: d:\xx\test.jmx
建立输出报告文件的文件夹: d:\xx\outputFile\test
在命令提示行(cmd)下进入: d:\xx\apache-jmeter\bin目录
执行:
jmeter -n -t d:\xx\test.jmx -l d:\xx\test.txt -e -o d:\xx\outputFile\test
基本命令格式: jmeter -n -t (test JMX file) -l (test log file) -e -o (Path to output folder)
执行完毕后看到报告
2.3模拟登录并执行业务
1. 添加Http默认请求头
由于本次测试涉及多个url,所以可以把服务器请求信息添加“默认请求值”。

测试的地址为:http://x.x.x.x:9382/sms2/

2. 加入Http Cookie管理器
本次请求是登录后再访问全局参数管理栏目页面,期间需要使用Cookie进行状态传递,需要加入Http Cookie管理器进行cookie状态管理

无额外的cookie设置的话,使用默认设置就可以。
3.添加 setup线程组
线程组:这个就是我们通常添加运行的线程。通俗的讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。
setup线程组:一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。线程执行测试开始前进行定期线程组的执行,测试开始前进行初始化工作。
teardown线程组:一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。线程执行测试结束后行定期线程组的执行,测试结束时进行回收工作。


4.添加登录请求

登录请求配置中,可以设置登录是的参数信息(j_username/j_password),此处默认所有线程使用admin / 123456 账号进行登录
--------------------------------------------------------------------------------------------------------------------------
问题:在测试并发访问时,需要多个不同的账号进行登录处理,怎么解决?
通过 配置元件 CSV Data set config 记录多个登录账号密码
CSV Data set config 可以有多个,但所有的变量名称不能重复


建立文件:E:/xx/登录账号密码.txt
填写内容:
admin1,123456
admin2,123456
文本的内容格式注意要跟配置中的一致,例如”,”分隔列,列顺序为username,password
重新配置登录请求:

格式为${参数名字},参数名字与CVS数据文件中的配置一致
要注意的问题:CVS数据文件中的账号数量要少于线程组设置的线程数量。
因为线程组中每个线程相相当于一个浏览器,如果CVS的账号数量多于线程数量,那么多出来的账号实际上没有登录成功。
1. 添加全局设置栏目请求

2. 添加 查看结果树、聚合报告 、汇总报告
3. 运行测试,查看结果
4. 导出报告
2.4 基础概念说明
1.配置元件
1.Http Cookie 管理器 作用域所有线程组所有线程
2.CSV Data set Config 可以有多个,但所有变量名称不能重复,所有线程组都可以使用
2.线程组中每一个线程都是独立的浏览器实例,使用独立的Http Cookie管理器实例。
3.线程中的单个线程会从上往下按照顺序执行线程中定义的取样器(如HTTP请求)/处理器(如JSON提取器),并将结果放入监听器(如各种报告)。