[稳定性测试]性能测试之稳定性测试培训

1、what?什么是稳定性测试?

首先来说说性能测试:
性能是软件的一种非功能特性,他关注的不是软件是否完成了特定的功能,而是软件在完成特定功能时展示出来的及时性。--百度百科

稳定性测试(亦可称可靠性测试)就是测试系统的_长期稳定运行_的能力。

简单来说,通过给系统施加一定业务压力大情况下,使系统持续运行一段时间,以此来检测系统是否稳定运行。
其主要目的是验证能力,并在能力的验证过程中找到系统不稳定的因素并进行分析解决。

注意:这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。

2、why?为什么要进行稳定性测试?

例子1:爱国者导弹稳定性受质疑 媒体:美军在冒险

在海湾战争期间,萨达姆部队总共发射了大约47枚“飞毛腿”,但只有4枚被“爱国者”击落。1991年2月25日,一枚伊拉克飞毛腿导弹成功躲过爱国者导弹防御系统,导弹击中了美军在沙特阿拉伯达兰地区的兵营,造成28名士兵死亡…分析发现症结在于一个软件缺陷,系统时钟的一个很小的计时错误积累起来到14小时后,跟踪系统不再准确。

例子2:1996年6月4日,阿丽亚娜5型运载火箭的首航,运载4个卫星,升空 37秒后发生爆炸。

型火箭沿用4型的导航系统SRI, 但速度是其5倍。所需计算的数据在4号火箭上从未出现,火箭点火升空后测算所得的水平速度以64 位浮点数值表示,SRI将其转换为16位的整数值,但因为16位整数值并不足以表示火箭的水平速度,最终导致系统的内存溢出,并复写了部分数据。

因此,稳定性测试是在保证功能完整正确的前提下,必不可少的一项测试内容,通过对软件稳定性的测试可以观察在一个运行周期内、一定的压力条件下,软件的出错机率、性能劣化趋势等。进而大大减少软件上线后的崩溃卡死等现象,为软件的逐步优化提供方向及验证。

3、when?何时介入稳定性测试?

原则上一般来说,性能(稳定性)测试介入的时机是在功能测试完成之后,或者功能相对稳定之后。

但出现两种声音:

1)项目周期短,功能测试通过后再发现性能问题已经没时间改了,或者项目需要延期。

2)功能都不稳定,代码什么的都在改,测试时间已经不多,前期测试完后面功能稳定后还是得测。

个人建议:建立性能测试机制

4、how?怎么做稳定性测试?

直接引用一位大牛写的测试构成图:

5、houw?如何做测试分析?

稳定性测试是通过_运行状态_和_资源指标_的2个方面来分析及评估系统的稳定性。

1)运行状态(外在)分析:

观察系统测试运行过程中是否正确运行,如有无出现运行错误、运行中断、系统报错甚至崩溃等现象来说明系统是否存在问题。

举个例子:

软件:如客户端程序,执行过程中是否会运行卡顿、中断、报错、甚至崩溃、闪退、退出等现象。

硬件:如打印机,执行过程是否会卡纸、切纸不正确、打印色度不均、打印中断,关机等现象。

2)资源指标(内在)分析:
观察系统的各种监控指标曲线,预测系统的发展状况,如可用内存是否在减少,是否泄漏,CPU利用率是否在持续上升等等现象来说明系统是否存在问题。

监控指标:(视目标检测对象和对象运行系统环境而定)

Windows:CPU、MEN、Handle、Thread、:GDI对象、User对象、磁盘IO、带宽等
Linux:procs(r、b)、memory(free、actice、inact)、swap、io、system、cpu等

以windows系统分析举例:

最后(赠言)

---tips 1>:在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的最好方法。

---tips 2>:稳定性测试是概率性的测试,就是说即使稳定性测试通过,也不能保证系统实际运行的时候不出问题。所以要尽可能的提高测试的可靠性。

---tips 3>:稳定性的测试不仅是对被测程序稳定性的验证,同时也考验我们测试脚本运行的是否稳定,而且在长时间的运行过程中可能会出现各种阻碍脚本运行的但却是正常的情况,所以需要增加各种判断和轮询的机制,另外为了保证场景的多样性都需要我们的脚本更加通用和周密。
---tips 4>:可以通过多次测试,延长测试时间,增大测试压力来提高测试的可靠性。测试时间和压力存在一定的关系。在测试时间不能保证的情况下,可以通过增强压力在一定程度上来挽救。

原文地址:https://www.cnblogs.com/whylaughing/p/6233510.html