测试执行前,需对测试环境进行确认,确保所有环境、系统业务都能正常使用。首先需将ECShop数据库恢复到初始状态,即创建了6万注册帐号,没有任何订单时的数据库,便于后续统计商品随机购买场景的成功率。

 

本次被测系统有个特殊的地方,有些商品的库存量较少,或者为0,处于缺货状态,为了避免测试过程中因数据问题导致测试失败,在开始执行测试前,可将所有商品的库存调整为70000,这样能够充分保证测试数据够用,不会出现因为测试数据准备不充分导致的测试失败。修改库存量SQL语句如下:

 

update ecs_goods SET ecs_goods.goods_number = "70000"

 

场景执行时,须在可控的测试环境下进行,当客户端性能不足时,需考虑提升客户端配置,或分布线程数。对于服务器,需保证在性能测试过程中,服务器资源独享,除本次性能操作外任何人为操作均不允许。因此,性能测试实施最好选择用户使用较少的时候,尽可能降低对性能测试结果的干扰。

测试场景按照预期设置执行完成后,在DOS命令模式下,可利用下列代码收集测试报告。

 

Jmeter –n –t测试结果文件名 –l 日志文件名 –e –o HTML测试结果存放路径

 

JMeter 默认在当前目录寻找需生成报告的脚本文件,并把日志记录在当前目录。如果需分析的文件不在当前目录,则需使用绝对路径。

测试服务器硬件配置:

Jmeter性能测试系列
表1测试服务器硬件配置

测试客户端硬件配置:

Jmeter性能测试系列
表2测试客户端硬件配置

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

根据前面的用户登陆脚本及场景设置,启动本次100线程并发测试场景。确保所有设置正确,服务器可正确访问,Linux服务器的ServerAgent服务已经打开,Mysql监控已经打开,关闭客户端与本次测试无关的应用程序。

 

Jmeter性能测试系列
图1用户登陆并发测试Jmeter运行界面

运行结束后,保存测试过程中生成的监控图,如系统资源使用率、Hits per Second、Transactions per Second、数据库监控图,并记录断言结果,聚合报告结果等。

利用以下代码生成测试报告,便于后续结果分析。

 jmeter -n -t D:\ECShop\userlogin100result.jmx -l user100 -e -o D:\ECShop\userlogin100

 

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

打开用户登陆业务量场景,确认相关数据、环境正确后设置78个线程数,启动场景,执行2小时。测试完成后保存相关测试数据,利用下列代码生成测试报告,便于后续结果分析。

jmeter -n -t D:\ECShop\userloginbuss.jmx -l loginbuss -e -o D:\ECShop\loginbuss

 

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

与用户登陆并发测试相同的操作方式,启动100个线程数的随机购买并发场景测试。测试完成后保存相关数据,利用下列代码生成测试报告,便于后续结果分析。

jmeter -n -t D:\ECShop\userbuyprod100result.jmx -l buy100 -e -o D:\ECShop\buy100

 

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

打开随机购买业务量场景,初始化测试环境,确保后台订单中没有数据(便于成功率统计),确认相关数据、环境正确后设置100个线程启动场景,执行30分钟。测试完成后保存相关测试数据,利用下列代码生成测试报告,便于后续结果分析。

 

jmeter -n -t D:\ECShop\userbuyprodbuss.jmx -l buybuss -e -o D:\ECShop\buybuss

 

Jmeter执行过程中,如果测试时间较长,可能会导致Jmeter内存溢出,修改Jmeter内存配置即可解决。

编辑Jmeter的启动文件“jmeter.bat”,修改如下代码:

set HEAP=-Xms256m -Xmx256m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m

为:

set HEAP=-Xms512m -Xmx1024m
set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m