[JPT_07] 性能测试-场景执行与结果收集

目录结构

一、场景执行前的准备工作
    1. 测试数据纯净性保证
    2. 测试账户容量保证
    3. 测试环境独立性保证
    4. 硬件配置准备
    5. 测试数据收集策略
二、场景执行过程分析
    1. 用户登录并发场景执行
    2. 用户登录业务量场景执行
    3. 随机购买并发场景执行
    4. 随机购买业务量场景执行


一、场景执行前的准备工作

1. 测试数据纯净性保证

场景执行前,需要确保所有测试环境、系统业务都能正常使用。首先需将ECShop数据库恢复到初始状态:对预先创建的6w注册帐号,在数据库中清空订单记录,消除历史数据的干扰,同时便于对商品随机购买场景的成功率进行统计。

2. 测试账户容量保证

ECShop程序默认配置的商品库存量基本都比较少(个位数级别),为了避免因缺货而影响购买业务的测试开展,故在开始执行测试前,建议将所有商品的库存统一调整到足够大的数值(如:70000),以充分保证测试数据可用性。

修改商品库存量的SQL语句:

UPDATE ecs_goods SET goods_number="70000";
4866277-d8cbe8b009592c6e.png
4866277-91d5708153e1d65f.png

3. 测试环境独立性保证

场景执行需要在可控的测试环境下进行:
1)当客户端性能不足时,需考虑提升客户端配置or调整分布线程数
2)对于服务端,需保证在性能测试过程中服务器资源独享,排除由其他操作的干扰

4. 硬件配置准备

测试服务器(Linux虚拟机)-硬件配置:

OS CPU数 Memory IP
应用服务器 CentOS 7 1 1G 192.168.248.138
数据库服务器 CentOS 7 1 1G 192.168.248.138

测试客户端(Windows物理机)-硬件配置:

OS CPU数 Memory IP
压力负载生成器 Win 7 1 8G xx.xx.xx.xx

5. 测试数据收集策略

测试场景按照预期设置执行完成后,可在命令行模式下收集测试报告

jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

<关联>:JMeter命令行模式 / Non-GUI模式:生成测试报告

二、场景执行过程分析

JMeter脚本配置 & 调试:
<关联>:JMeter分布式测试环境搭建 & 详细配置流程解析

1. 用户登录并发场景执行

根据前面的用户登录脚本及场景设置,启动本次100线程登录并发测试场景:
【1】确保所有设置正确,包括:服务器可正确访问,Linux服务器的ServerAgent服务已经打开,Mysql监控已打开,关闭与本次测试无关的应用程序
【2】运行结束后,保存测试过程中生成的监控图,如系统资源使用率、Hits per Second、Transactions per Second、数据库监控图,并记录断言结果,聚合报告结果等
【3】下载ServerAgent,上传至Linux服务器,启动startAgent.sh,ServerAgent默认监听4444端口
【4】对于服务器性能监控,JMeter插件管理(Plugins Manager)中添加的<Perfmon(Servers Performance Monitoring)>,即可在JMeter上远程监控服务器的系统资源
PS:Linux服务器上的的性能监控,除了以上通过JMeter插件监控,也可联合Nmon工具、自带的 top 命令实时监控
<关联>:Linux性能监控工具Nmon的安装使用、生成数据报告

4866277-065caa8a660ddc05.png
4866277-0c15c1e93a210a5b.png

【5】利用NO-GUI方式生成测试报告,便于后续结果分析
设置:

4866277-480bea1bae3c38e0.png
4866277-45c79d9a2a7197f6.png

操作命令:
jmeter -n -t E:\CI_Env\JM_Scripts\Non-GUI\ecs_Login_Concurrent.jmx -l E:\CI_Env\JM_LogResult\011.jtl -e -o E:\CI_Env\JM_Report

4866277-294689d4bda04f56.png


2. 用户登录业务量场景执行

打开用户登录业务量场景,确认相关数据、环境正确后,设置100个线程数,启动场景,执行持续10min(实际场景不止10min,此处仅作简化演示操作,具体根据线上业务交易量可能需要1-2h甚至更长的时间来持续测试
jmeter -n -t E:\CI_Env\JM_Scripts\Non-GUI\ecs_Login_Business.jmx -l E:\CI_Env\JM_LogResult\012.jtl -e -o E:\CI_Env\JM_Report

4866277-05fd1455b8568b35.png
4866277-541f4160ebd95277.png


3. 随机购买并发场景执行

与用户登录并发测试相同的操作方式,启动100个线程数的随机购买并发场景测试
jmeter -n -t E:\CI_Env\JM_Scripts\Non-GUI\ecs_Purchase.jmx -l E:\CI_Env\JM_LogResult\021.jtl -e -o E:\CI_Env\JM_Report

PS:每次新执行购买业务场景时,为了确保购买业务执行成功,需要先清空数据库中的订单记录再执行脚本

mysql> delete from ecs_order_goods;
mysql> delete from ecs_order_info;


4. 随机购买业务量场景执行

打开随机购买业务量场景,初始化测试环境,确保后台订单中没有数据(便于成功率统计),确认相关数据、环境正确后,设置100个线程启动场景,执行10min
jmeter -n -t E:\CI_Env\JM_Scripts\Non-GUI\ecs_Purchase_Business.jmx -l E:\CI_Env\JM_LogResult\022.jtl -e -o E:\CI_Env\JM_Report


PS:
对以上4个场景,每测试完成一个场景都需要保存相关的测试配置数据、测试结果文件报告,便于对测试结果进行分析

猜你喜欢

转载自blog.csdn.net/weixin_33801856/article/details/87618889