Jmeter 操作使用

Jmeter -测试计划的页面

jmeter设置系统操作前的语言(中文)设置

使用记事本打开文件 jmeter.properties》文件中搜索:language ,添加language=zh_CN文件中搜索:encoding,在encoding最后一行的改为 #sampleresult.default.encoding=UTF-8》保存,即可


测试范围:
由于后台系统为内部人员使用,性能测试优先级较低,故本次性能测试范围只限于前台系统


一、服务器端性能测试

  • 性能需求分析,指定测试计划

  • 设计、编写测试用例

  • 搭建环境,准备数据——准备数据——访问数据库,创建存储过程

创建数据(使用php造数据)

#SQL语句中不用缩进,不用"" ,主键不能重复、用户名不能重复

create procedure createuser()
begin
declare i int default 1;   #这里i是个变量  #declare声名变量为int整型
while i<=50000 do         #while条件,操作50000次循环,必须加入set递进
insert into  `ecs_users` VALUES
(10000+i,concat('user',10000+i,'@1.com'),concat('user',10000+i),'1dde592c59b28160ccd55bb70746f190','','',0,'0000-00-00',  
#从10000次开始                         #concat函数用于连接
0.00,0.00,0,0,4,1681870085,1682284331,'0000-00-00 00:00:00','0.0.0.0',147,0,0,'9094','0',0,0,
'','000000','1044265594','000000','000000','000000',0,0.00,NULL,NULL);
set i=i+1;          #set表示递进
end while;
end

下图是造的数据内容:

 

调用数据

 

调用完成后,可以在相应的ecs_users表中查看‘数据浏览’,即有显示user_id从10001到60000的数明细,共计50000条数据

call createuser();

测试脚本——采用录制+编写,生成脚本

  •   录制——工具1:badboy

 录制——使用工具:badboy,该工具一般用于web端的测试,app端不适用

  •   录制——工具2:jmeter:http代理服务器

  •  录制——工具3:fiddler抓包,转化为脚本》 headers》 Content-Type: application/x-www-form-urlencoded


关于Fiddler的设置,且过滤掉其他数据

 

  •  Actions——Run Fileterset now——(过滤器)



1、单功能点场景测试用例

 

实操

步骤一:

按照预期并发数500设置线程数为:500,Ramp-Up时间(秒):5

 步骤二:

在线程组下》添加事务控制器

 步骤三:

在线程组下》添加配置元件》请求默认值》填写接口地址:localhost

步骤四:

在线程组下》添加监听器》添加聚合报告+查看结果树

步骤五:

 在线程组下》添加配置元件》HTTP信息头管理器》这里填写的名称是fillder中抓取的

 

步骤六:

在事务控制器》添加fillder中抓取的登录的url》点击File》进入Export sessions》all sessions》选择jmeter,再点击 next》自定义保存的文件名,例如:登录

 

步骤七:

 将fillder中抓包的登录的url》添加到线程组下》将json 值的用户名的字段》改为步骤八的变量名(前后变量设置必须一致)》修改json的变量名为 ${name2}

修改变量名的位置需要注意,一般在前%22 ${name2} +后%22%的中间修改变量名

步骤八:

在事务控制器》添加配置原件》csv data set config》csv 数据文件》将(之前造的数据)导出,取其中的用户名500条数据,以.csv格式保存》添加到csv的数据文件设置》并设置变量名为 name2(变量名要和步骤七的变量名一致)

注意:对于忽略首行:一般在首行为标签,非数据值时,选择True忽略;若首行是数据值,则选择False不忽略

步骤九:

 在步骤七的signin登录下添加JSON 提取器(可用来提取sid、uid)》填写变量名 sid1》填写JSON Path的格式  $.data.session.sid 》Mathon No 是填写结果树1条的值为:1 

{uid1同sid1的编写格式进行设置}

 这里的JSON Path的格式 填写》需按照查看结果树》选择JSON格式》在响应数据》响应体body中找到的 data》找到session》找到uid、sid这样的层级目录来填写

 步骤十:

在用户登录下的 /user/info (用户模块)》引用步骤九 在 /signin 的JSON提取器设置的变量名 sid1、uid1》填写格式为:${uid1}、${sid1} 

注意:这里嵌入变量名的位置需要注意,一般在前%22 ${uid1} +后%22%的中间修改变量名 ${sid1}

步骤十一:

以上结果树在验证通过后》必须保存在jmeter的bin目录》且此bin目录输入CMD打开》在CDM的bin目录中修改文件.jmx为.jtl文件后,另存文件名》会形成新的文件夹》找到此文件夹,打开.html文件即可获得测试报告 

在cmd中的代码填写格式:

jmeter -n -t 文件.jmx的保存路径\.jmx文件名 -l 文件.jmx路径\.jmx文件名,把尾部的.jmx改为.jtl -e -o 新的保存路径\文件夹路径

例如:
jmeter -n -t D:\class\sh277\EC_Perf_002.jmx -l D:\class\sh277\EC_Perf_002-01.jtl -e -o D:\class\sh277\EC_Perf_002-01



2、多功能点场景测试用例

这里的OOM,表示内存是否泄漏的意思

步骤一:

这里是混合场景,即并发数不同的操作,故设置不同,在 单功能点场景测试用例基础上》加入事务控制器-首页

 步骤二:

在线程组中添加逻辑控制器》添加吞吐量控制器》事务控制器-首页移动到吞吐量控制器下》因首页要求并发数100》故这里设置吞吐量数为:100(这里吞吐量是百分比单位,是100%的意思)

步骤三:

因登录并发数要求1000》已设置吞吐量数为:100》故线程组的线程数设置10》即可达到并发数1000的要求

 

步骤四:

测试文档中》登录并发数要求1000》将之前在php中造的数据,调取1000条》添加在csv数据文件设置中》设置变量名 name2》视情况,选择是否需忽略首行

 

步骤五:

查看数据执行情况》可以在事务控制器下添加取样器》Debug sampler 调试取样器》运行后》通过聚合报告查看数据执行数量