《测试基地实训指导》:第 6 章 JMeter 测试工具的测试结果分析
第 6 章 JMeter 测试工具
JMeter 是100%纯 Java 桌面应用程序,是用来测试 B/S 结构的软件(如 Web 应用程序)。它可以用来测试包括基于静态和动态资源程序的性能,例如 Java Servlets、Java 对象、数据库、FTP 服务器等。JMeter 可以用来模拟一个在服务器、网络或者某一对象上大的负载,来测试或者分析在不同的负载类型下的全面性能。另外,JMeter 能够让我们用断言创造测试脚本来验证应用程序是否返回了期望的结果,从而帮助使用者对程序进行回归测试。
6.1 实验目的
使用 JMeter 测试 网站的负载性能,对该网站进行的性能测试主要是压力测试和疲劳测试。
6.2 实验准备
安装版本:apache-jmeter-5.1.1,JDK1.8
6.2.1 JDK 安装
(1)安装
点击下载的「jdk-8u261-windows-x64.exe」,选择安装的路径即可。
(2)设置环境变量
新建用户变量 CLASSPATH,变量值中输入:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
新建用户变量 JAVA_HOME,变量值中输入:D:\javaweb\Java\jdk1.8.0
修改系统变量 PATH,添加:%JAVA_HOME%\bin;
(3)检查 JDK 安装是否成功
点击「开始」/「运行」,输入命令 cmd 进入 DOS 操作界面,输入命令:java,出现如图 6-1 所示界面则 JDK 安装成功。
6.2.2 JMeter 安装
(1)安装
解压文件「apache-jmeter-5.1.1.zip」到安装目录。
(2)设置环境变量
新建用户变量 JMETER_HOME,变量值中输入JMeter 安装目录:
D:\javaweb\apache-jmeter-5.1.1
修改环境变量 CLASSPATH,变量值中添加如下值:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
修改环境变量 PATH,变量值中添加如下值:
%JMETER_HOME%\bin;
(3)检查 JMeter 安装是否成功
进入 JMeter 目录下的 bin 文件夹,双击打开运行「JMeter.bat」,查看页面显示,如果能显示 JMeter 操作页面则安装成功。
6.3 实验内容
6.3.1 参数配置
(1)进入 JMeter 软件包,进行参数设置,打开 bin\jmeter.properties。如图 6-2~ 图 6-4 所示。
remote_hosts=169.254.201.146:1099,169.254.201.148:1099,169.254.201.152:1099
需要注意的是,这一步一定要在「remote_hosts=」后面添加上要控制的电脑的 IP 地址,格式如「IP:1090」。若要控制多个电脑,则多个电脑的 IP 都要添加,用逗号隔开,本次测试添加的 IP 包括本机。
(2)打开所有要控制的电脑上的 JMeter 软件包里的文件「jmeter-server.bat」,如图 6-5 和图 6-6 所示。
(3)打开「JMeter」,点击「jmeter.bat」即可,如图 6-7 和图 6-8 所示。
6.3.2 使用 JMeter 进行测试
(1)右击「测试计划」,在添加选项中,选「Threads(Users)」,选择「线程组」,如图 6-9 和图 6-10 所示。
图 6-9 添加脚本
图 6-10 线程组参数
(2)右击「线程组」,在添加选项中选「监听器」,选择「图形结果」(第 2 个),用同样的方法再添加一个「聚合报告」,如图 6-11 和图 6-12 所示。
(3)右击「工作台」,在添加选项中选择「非测试元件」选「HTTP 代理服务器」,如图 6-13 所示。
(4)在线程组中设置线程数、循环次数和 Ramp-Up Period(in seconds)
- 在「线程数」处填入该线程组一共开启的线程数量,线程数代表发送请求的用户数目。
- Ramp-up Period(in seconds)表示设定的线程在该时间内建立,即每个请求发生的总时间间隔的值,单位是 s。如果请求数目是 5,而这个参数是 10,那么每个请求之间的间隔就是 10/5,也就是 2 s。如果设置为 0 就代表并发请求。
- Loop Count 代表请求发生的重复次数;如果选择后面的 forever (默认),那么请求将一直继续;如果不选择 forever,而在输入框中输入数字,那么请求将重复指定的次数;如果输入 0,那么请求将执行一次。
在此次实验中,将线程数设置为 25,Ramp-up Period(insecond)设置为 0,循环次数设置为 1。如图 6-14 所示。
(5)对 HTTP 代理服务器进行设置,在目标控制器一栏中选择「测试计划 > 线程组」,在分组中选择每个组放入一个新的控制器,如图 6-15 和图 6-16 所示。
(6)打开 IE 浏览器,在工具一栏选择「Internet 选项」,在连接选项中点开局域网设置,设置代理服务器,地址为 localhost,端口为 8080,并选中对于本地地址不使用代理服务器,JMeter HTTP 代理服务器的端口和浏览器设置的端口要一致,如图 6-17 和图 6-18 所示。
(7)启动 HTTP 代理服务器,点击「启动」,如图 6-19 所示。
(8)在 IE 浏览器中输入测试对象网址 http://www.buptsse.cn/SPM/SPM.jsp,出现主界面,进行一些功能点操作,这时脚本录制成功,如图 6-20 所示。
(9)在 IE 浏览器关闭代理服务器,如图 6-21 所示。
(10)设置分布式环境
在被远程控制的客户端安装文件中打开「jmeter-server.bat」,以保证 slave 和 master 之间是互相关联的,如图 6-22 所示。
(11)执行测试,设置好以后开始测试,点击「双绿箭头」远程全部启动,另存为后等待结束,如图 6-23 所示。
(12)点击测试计划下的图形结果,如图 6-24 所示。
图像的结果可以在编辑栏中通过「Save Node As Image」或「Save Screen As Image」来保存,两者的区别在于前者是保存图形结果,后者是把整个界面都保存下来。
图表底部参数的含义如下:样本数目即为总共发送到服务器的请求数;新样本是代表时间的数字,是服务器响应最后一个请求的时间;吞吐量代表服务器每分钟处理的请求数;平均值代表总运行时间除以发送到服务器的请求数;中间值代表时间的数字,通常有一半的服务器响应时间低于该值而另一半高于该值;偏离表示服务器响应时间变化、离散程度测量值的大小,换句话说,就是数据的分布。图像的横坐标为样本数,纵坐标为时间。如图 6-25 所示。
6.3.3 测试结果分析
图 10-12 聚合报告的结果
Label:每个 JMeter 的 element (例如 HTTP 请求)都有一个 Name 属性,这里显示的就是 Name 属性的值;
#Samples:表示这次测试中一共发出了多少个请求;如果模拟 10 个用户,每个用户迭代 10 次,那么这里显示 100;
Average:平均响应时间,默认情况下是单个 Request 的平均响应时间;
Median:中位数,也就是 50% 用户的响应时间;
90% Line:90% 用户的响应时间。
99% Line:99% 用户的响应时间。
Min:最小响应时间;
Max:最大响应时间;
Error%:本次测试中出现错误的请求的数量 /请求的总数;
Throughput:吞吐量,默认情况下表示每秒完成的请求数(Request per Second);
Received KB/Sec:每秒从服务器端接收到的数据量,相当于 LoadRunner 中的 Throughput/Sec 。
Sent KB/sec:每秒发送请求的数据量。
一般情况下,当用户能够在 2s 以内得到响应时,会感觉系统的响应非常快;当用户在 2~5s 之间得到响应时,会感觉系统的响应速度不错;当用户在 5~10s 以内得到响应时,会感觉系统的响应速度非常慢,不过还能接受;而当用户在超过 10s 后仍然无法得到响应时,会感觉系统糟透了,或认为系统已失去响应,而选择离开这个 Web 站点,或发起第二次请求。所以 90%line 应该控制在 5s 以内。
聚合报告的数据解读完毕以后,我们要及时将测试数据和结果记录下来,以便进一步对系统的性能进行分析。在界面的下方可以点「Save Table Data」来直接保存聚合报告的结果。
6.4 实验作业
使用 JMeter 对搜狐网测试响应时间,并提交测试结果。