文章目录
- 一、常用的Jmeter元件
- 二、性能测试环境准备
- 三、编写Jmeter脚本
- 四、执行测试脚本
一、常用的Jmeter元件
- 取样器-HTTP请求
作用:发送HTTP请求 - 配置原件-HTTP请求默认值
作用:设置HTTP请求的默认参数 - 配置原件-用户定义的变量
作用:定义变量,可以供后面引用 - 后置处理器-JSON提取器
作用:提取JSON相应结果中的内容 - 断言-响应断言
作用:对响应结果进行断言 - 断言-JSON断言
作用:对响应结果进行断言 - 监听器-查看结果树
作用:用于Jmeter脚本调试时查看运行日志 - 监听器-聚合报告
作用:用于Jmeter性能测试时查看运行结果
二、性能测试环境准备
-
特点
(1)性能测试环境独立使用,其他测试人员不可使用该环境。
(2)性能测试的环境要求与用户真实使用的环境完全一致。
(3)硬件环境:硬件服务器的台数、硬件服务器的配置、网络环境。
(4)软件环境:所有的操作系统、数据库、被测程序、第三方软件等软件。
(5)使用场景的一致性:数据量和发送请求的负载量与用户环境一致。 -
如何达成环境一致
(1)硬件环境:找运维人员申请。
(2)软件环境:所有软件版本和配置找开发人员要,然后安装。
(3)测试数据:通过python脚本构造相同数量级的数据
(4)业务场景:通过需求分析和运营数据获取主要的业务操作和对应的并发指标。 -
测试数据的准备
如下构造用户数据。在性能测试时需要模拟不同的用户进行登录操作,因此需要提前构造用户数据。
#导包
import pymysql
#创建连接
conn = pymysql.connect(host="192.168.65.129",user="litemall",password="litemall123456",database="litemall",port=3306,charset='utf8')
#创建游标
cursor = conn.cursor()
#添加用户的SQL语句
user_sql = "INSERT INTO `litemall`.`litemall_user` (`id`, `username`, `password`, `gender`, `birthday`, `last_login_time`, `last_login_ip`, `user_level`, `nickname`, `mobile`, `avatar`, `weixin_openid`, `session_key`, `status`, `add_time`, `update_time`, `deleted`) VALUES ('{}', '{}', '$2a$10$SrnVvS/D6N0XNd4MHNjQR.W3VUfJhOdBylPC3Ika0zTvmxyiJ52AS', '0', NULL, '2020-08-14 12:00:58', '192.168.91.1', '0', 'xiaoh', '{}', 'https://yanxuan.nosdn.127.net/80841d741d7fa3073e0ae27bf487339f.jpg?imageView&quality=90&thumbnail=64x64', '', '', '0', '2020-08-12 14:14:37', '2020-08-14 12:00:58', '0');"
#循环插入数据
user_start = 100000
for i in range(100000):
user_id = user_start + i
username = "test" + str(user_id)
mobile = "13012" + str(user_id)
print("插入第{}条数据ID为{}".format(i+1,user_id))
sql = user_sql.format(user_id,username,mobile)
cursor.execute(sql)
conn.commit()
#关闭游标
cursor.close()
#关闭连接
conn.close()
三、编写Jmeter脚本
-
HTTP信息头管理器
-
HTTP请求默认值
写法:写入协议、域名、端口、编码格式,在HTTP请求取样器中只需要写入路径、请求方法、参数即可。
优点:在测试时,如果换了测试环境,直接修改HTTP请求默认值即可,不需要修改所有脚本。
-
独立线程组
(1)线程组名称建议修改为用例名称。
(2)HTTP请求取样器的名称修改为用户名称。
(3)每个HTTP请求需要添加断言。
(4)如果请求URL中的参数可能为中文,建议将参数放入到下面参数列表中,并将中文参数勾选“编码”。
例一: 简单测试用例——登录
HTTP请求——登录:
JSON断言:
响应断言:
例二:复杂测试用例——业务流程1
JSON提取器:
HTTP信息头管理器:
-
聚合报告:
-
jp@gc - PerfMon Metrics Collector
四、执行测试脚本
-
执行测试脚本的测试机
执行性能测试前,需要根据要模拟的业务负载量来选择适当的测试机。
(1)单机执行
windows:图形化界面、操作简单;资源使用低,能模拟的并发数低。
linux:命令行操作,操作难度高;资源使用率高,能模拟的并发数高。
(2)分布式执行
如果单台测试机(无论windows或linux)都无法满足负载量要求时,需要使用分布式的方法,使用多台测试机一起来模拟特定负载量的业务。 -
根据性能测试用例,模拟用户并发执行,记录对应的性能指标