本章介绍如何使用LoadTest做测试。项目正式部署后,会出现各种问题,业务逻辑问题、自身代码Bug、性能问题等。能否在项目部署前模拟现实运行的场景,让软件在这个模拟场景中运行一段时间,这样就能把问题提前暴露出来。LoadTest能帮助我们模拟这种现实的运营环境。
创建LoadTest
LoadTest 功能能够进行压力测试,首先要建立一个TestSuit,在TestSuit中新建一个LoadTest,如下:
如下图为新建好的LoadTest:
功能界面介绍
功能界面如下所示,点击绿色三角图标即可执行,到了执行时间后则结束。
① :Limit为此次测试执行多长时间。
②:Random的作用是改变delay的值,random的值从0至1。
③:结果展示面板。
④:执行情况日志。
⑤:判断执行情况的断言。
⑥:在LoadTest开始前执行的脚本。
⑦:在LoadTest结束后执行的脚本。
Strategy介绍
Threads:为线程数。
Strategy:为发送策略,包括:Simple(默认)、Bust、Thread、Variance。
Test Dely:为每次发送的时间间隔,单位为ms。
Strategy:为执行策略,包括:Burst、Simple、Variance、Thread,策略功能介绍如下:
1.1 Simple 策略
为简单策略,适用于一般情况的测试,如下图所示。Simple策略需要指定 threads、random和delay。
比如delay设置为10s,random为0.5,那么发送的时间间隔会在5至10秒之间的任意数。
1.2 Variance 策略
Variance策略,通过设置Variance的值能够改变threads数目。Threads数目依据“锯形”波形变化,如图为Variance策略。
Interval作用是设置一个“锯型”波形的周期(图中黄色框圈起来的部分),Varinace是变化幅度参数。
比如: Interval设置为60秒,Variance设置为0.8,Threads设置为20。前15秒锯型波形的Threads值从20长到36(20*0.8+20=36),15秒至30秒Threads从36秒降到20,30秒至45秒Threads从20降到4秒,45秒至60秒Threads从4长到20。
1.3 Thread 策略
**Thread **策略可以线性增加 threads数目,可以用来定位系统性能到达哪一级别。比如达到多大的线程数后系统有最高的TPS(Transaction Per Second)和BPS(Bit Per Second),或者达到多大线程数后系统开始报错。
只需要设置start Thread 的值和end Thread 的值即可,线程数从最小值开始线性增长,每个阶段持续时间是一致的,为总时间的平均值。
比如:
start Thread为10,end Thread为50,Limit为60秒,每个阶段执行的时间为60/40秒,线程数由10开始增长,一直长到50,如下图绿色斜线为线程数。在Threads中能够看到当前线程数。
**1.4 Burst **策略
**Burst 策略可以让测试断断续续进行,测试一段时间后就中断一段时间,再进行测试,如此往复。Burst **策略能够检测系统故障恢复能力,如下图。
Bust Delay为休眠时间,Bust Duration为测试持续的时间。
比如:Bust Delay 设置为10秒,Bust Duration设置为10秒,整个测试设置为60秒。每进行10秒的测试后,就休眠10秒,再进行10秒测试,再休眠10秒,如此持续60秒。
2.统计表
如下图所示为统计表,测试的时候实时显示结果信息。
参数介绍如下:
Test Step设置每个进程开始执行的延迟,0表示所有进程同时执行。min这一步执行的最短时间 (in milliseconds).max这一步执行的最长时间(in milliseconds).avg这一步的平均执行时间(in milliseconds).last最近的执行时间 (in milliseconds).cnt本用例执行了多少次。tps每秒执行了多少交互。bytes测试用例发送了多少数据量。bps美妙发送了多少数据量。err总共发生了多少错误。rat执行失败的请求占多少百分比。
3.校验 Assertion
Assert功能能够校验功能和性能值。如下图所示为添加校验窗口。
选择某条step,右键弹出“Add Assertions”在这里面选择assertion,如下图所示,可用的校验类型包括:Step Average,Step TPS,Step Maximum,Step Status,Max Errors。
我们依次看一下这几种校验类型是如何设置的。
3.1 Step Average
判断某个TestStep或整个TestCase超过指定值,如下图为“Step Average”的设置方式:
Name:断言的名称。
Minumum Requests:在断言执行前,testStep或者TestCase最少要执行多少。就像运动员需要热身一样,测试系统的时候需要测试发送一定的数据量后系统的性能。
Max Errors :( Max Errors assertion不可用):LoadTest允许最大的失败数,当大于此数目后LoadTest则执行失败。 "-1" 表示LoadTest从不失败。
TestStep:要进行断言的用例。
“Max Average”:设定的最大的平均值;
“Sample Interval”:指定断言应用的频率,由于平均值缓慢变化的,所以只能定时去校验平均值;
**3.2 Step TPS **(transaction per second)
判断TestStep 或TestCase每秒的数据交互量。"Minimum TPS" 的意思是校验标准值, 没有达到这个标准则失败。
Minimum TPS:每秒最少执行多少交互(TPS)。当实际交互(TPS)量小于这个值的时候则报错,并且校验错误打印到日志中(LoadTest log)。
其他参数同上。
3.3 Step Maximum
判断TestStep 或 TestCase最大值,
The Step Maximum assertion checks that a steps max time does not exceed a specified value. It has the following settings:
Max Time:最大运行次数。如果超过这个次数则报错,并在日志中打印这个错误(LoadTest log)。
其他参数同上。
3.4 Step Status
检查未失败就报错的步骤。
参数同上。
3.5 Max Errors
检查测试执行的总错误数是否超过了指定值。
Max Absolute Errors:指定最多的错误数。
Max Relative Errors:相关的最大错误数,数值表示发生错误的Step 占总Step的最大值。
后续关于LoadTest功能我会做更详细介绍。
版权归原作者 东方未明yet 所有, 如有侵权,请联系我们删除。