下面通过一个简单的实践来学习性能测试的基本知识。首先需要明确这次性能测试的场景及指标。
测试场景:50个用户同时访问百度页面,每个用户访问10次。
线程数 | Ramp-Up时间 | 循环次数 |
---|---|---|
50 | 10s | 10 |
测试指标:响应时间、错误率。
-
首先打开Jmeter,在测试计划下创建线程组,该线程组设置线程数50、Ramp-Up时间10、循环次数10。
创建线程组 -
在线程组下添加HTTP请求取样器,主要用于向服务器发送HTTP请求。
添加方式 - 设置HTTP请求取样器
添加HTTP请求取样器,下面对该取样器常用的配置做一个大体地介绍。
名称:用于标识取样器,建议取个有意义的名称。
注释:该取样器备注信息,增强可读性的文本。
协议:向服务器发送HTTP请求的协议,http或者https。默认为http。
服务器名称或IP:要发送http请求的目标服务器的服务器名称或IP地址。
端口号:请求服务器的端口号。
方法:发送请求的方法。包括GET、POST、DELETE、PUT、PATCH、OPTIONS、HEAD等。
内容编码:发送内容的编码方式。
路径:除服务器地址或ip外的路径部分。
自动重定向:当发送HTTP请求后得到的响应是301或者302时,Jmeter自动重定向到新的页面。但是JMeter是不记录重定向过程内容的(A重定向到B,此时只记录B的内容不记录A的内容,A的响应内容我们暂时且叫过程内容)。
跟随重定向:与自动重定向大体相似,唯一不同的是,JMeter会记录重定向过程中的所有请求响应,在查看结果树时可以看到服务器返回的内容。
使用KeepAlive:Jmeter和目标服务器之间将以Keep-Alive方式进行通信。
对post使用multipart/form-data:当发送POST请求时,使用multipart/form-data方式发送请求数据。
同请求一起发送参数:在请求中发送的URL参数,请求时会带入URL,形式如?key1=value1&key2=value2
同请求一起发送文件:在请求中发送文件。
了解了相关参数的作用,我们进行如下设置:
名称:访问百度
协议:https
服务器名称或IP:www.baidu.com
端口号:443
(https的默认端口为443)
其它配置保持默认即可。
- 添加监听器
当JMeter运行时,监听器可以提供访问JMeter所收集的关于测试用例的信息。这里需要用到两个监听器:查看结果树
和聚合报告
。查看结果树
作用是以树的形式显示每次请求的结果,“聚合报告”作用是对测试结果做一个简要分析并绘制成表格。
4.1 在线程组下添加“查看结果树”监听器:
添加“查看结果树”监听器
4.2 在线程组下添加“聚合报告”监听器:
添加“聚合报告”监听器
5.点击工具栏“启动”图标启动测试
启动测试
执行结束后,查看结果树
监听器会记录每次请求的信息,包括请求和响应可以方便查阅每次请求的具体情况。
聚合报告
监听器会分析此次测试,并作出统计。聚合报告相关字段介绍:
label:HTTP请求名称
# 样本:此次测试共发出的请求数
平均值:平均响应时间毫秒数,默认是request平均响应时间,当使用事务控制器时,也可以以事务为单位显示平均响应时长。
中位数:50%用户的响应时长都在哪个值内。
90%百分位(90% Line):表示90%用户的响应时长都在哪个值内。
99%百分位(99% Line):表示99%用户的响应时长都在哪个值内。
最小值:访问页面并得到响应的最小时长
最大值:访问页面并得到响应的最大时长
异常%(Error%):错误率
吞吐量:默认为每秒完成的请求数,当使用事务控制器时也可表示每秒完成的事务数
KB/sec:每秒从服务器接收到的数据量。
另外百分位数根据百科给出的解释:
统计学术语,如果将一组数据从大到小排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列如,处于p%位置的值称第p百分位数。