目录结构
一、场景执行前的准备工作
1. 测试数据纯净性保证
2. 测试账户容量保证
3. 测试环境独立性保证
4. 硬件配置准备
5. 测试数据收集策略
二、场景执行过程分析
1. 用户登录并发场景执行
2. 用户登录业务量场景执行
3. 随机购买并发场景执行
4. 随机购买业务量场景执行
一、场景执行前的准备工作
1. 测试数据纯净性保证
场景执行前,需要确保所有测试环境、系统业务都能正常使用。首先需将ECShop数据库恢复到初始状态:对预先创建的6w注册帐号,在数据库中清空订单记录,消除历史数据的干扰,同时便于对商品随机购买场景的成功率进行统计。
2. 测试账户容量保证
ECShop程序默认配置的商品库存量基本都比较少(个位数级别),为了避免因缺货而影响购买业务的测试开展,故在开始执行测试前,建议将所有商品的库存统一调整到足够大的数值(如:70000),以充分保证测试数据可用性。
修改商品库存量的SQL语句:
UPDATE ecs_goods SET goods_number="70000";
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的安装使用、生成数据报告
【5】利用NO-GUI方式生成测试报告,便于后续结果分析
设置:
操作命令: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
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
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个线程启动场景,执行10minjmeter -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个场景,每测试完成一个场景都需要保存相关的测试配置数据、测试结果文件报告,便于对测试结果进行分析