最近整理总结笔记,笔者发现可靠性测试记得含糊笼统,于是花了一些时间,通过查阅资料,引入自己的理解,整理出了什么是可靠性测试,如何做可靠性测试。

什么是软件可靠性测试?

“可靠”一词意味着某种事物是可靠的,并且每次都会给出相同的结果。可靠性测试也是如此。

软件可靠性测试,是指为了满足用户对软件的可靠性要求,基于用户使用模型对软件进行测试,发现并纠正软件中的缺陷提高软件的可靠性水平,并验证软件能否达到用户可靠性要求的软件测试方法。

可靠性测试的目的是确保软件产品没有漏洞且可靠,足以达到其预期目的。一般情况下,只能通过对软件系统进行测试来度量其可靠性。

在规定的时间内,规定的条件下,软件不引起系统失效的能力,其概率度量称为软件可靠度。

影响软件可靠性的因素

软件运行剖面越多,软件规模越大,内部结构越复杂,则表明软件出错的可能性就越大,可靠性就会越低;

软件的开发方法和开发环境不合适或者落后,开发出来的软件就会遗留较多问题,会影响软件可靠性;

软件可靠性投入不够,比如可靠性测试不够,也会影响到软件可靠性。

其中,软件运行剖面是指软件可执行的操作及其发生的概率组成的集合。

为什么要进行可靠性测试?

在给定条件下进行可靠性测试以测试软件性能。

进行可靠性测试的目的是:

  • 验证软件可靠性的给定要求是否得到满足;

  • 有效地发现程序中影响软件可靠性的缺陷,查找失败原因加以修复、改进,从而实现可靠性增长;

  • 估计、预计软件可靠性水平,从而为开发管理提供决策依据。

可靠性测试常用方法

异常值输入法:一种使用系统不允许输入的数值(即异常值)作为测试输入值的可靠性测试方法。

故障植入法:把系统放在有问题的环境中(如资源不足、环境冲突和网络故障等)进行测试的一种可靠性测试方法。

稳定性测试法:在一段时间里长时间、高负载运行某种业务的可靠性测试方法。

压力测试法:在一段时间内持续使用超过系统规格的负载的可靠性测试方法。

恢复测试法:使用持续超过性能规格的负载进行测试后,再将负载降到性能规格以内的测试方法。

如何进行可靠性测试?

与其他类型的测试相比,可靠性测试的成本很高。因此,进行可靠性测试时需要适当的计划和管理。这包括要实施的测试过程、测试环境的数据、测试时间表、测试点等。

要进行可靠性测试,测试人员必须注意以下事项:

  • 建立可靠性目标;

  • 制定业务概况;

  • 计划和执行测试;

  • 使用测试结果来制定决策。

我们可以分三个步骤执行可靠性测试,即建模、度量和改进。

建模

软件建模技术可以分为两个子类别:

  • 预测建模

  • 估算模型

通过应用合适的模型可以获得有意义的结果。可以进行假设和抽象来简化问题,并且没有单一的模型适合所有情况。

两种模式的主要区别是:

度量

无法直接测量软件可靠性,因此,为了估计软件可靠性需要考虑其他相关因素。

软件可靠性测量的当前实践分为四类:

1、产品指标

产品指标是4种类型的指标的组合:

软件大小:代码行(LOC)是一种用于衡量软件大小的直观初始方法。此度量标准仅计入源代码,而注释和其他不可执行的语句将不计入。

功能点指标:功能 Pont Metric 是用于测量软件开发功能的方法。它将考虑输入,输出,主文件等的计数。它衡量交付给用户的功能,并且与编程语言无关。

复杂度:它直接关系到软件的可靠性,因此表示复杂度很重要。面向复杂性的度量是一种通过将代码简化为图形表示形式来确定程序控制结构的复杂性的方法。

测试覆盖率指标:这是通过对软件产品进行完整的测试来估计故障和可靠性的方法。软件可靠性意味着它是确定系统已被完全验证的功能。

2、项目管理指标

研究人员已经意识到,良好的管理可以生产出更好的产品。

好的管理可以通过使用更好的开发过程,风险管理过程,配置管理过程等来获得更高的可靠性。

3、流程指标

产品的质量与过程直接相关。流程指标可用于估计,监视和改善软件的可靠性和质量。

4、故障和失败率

故障和故障度量标准主要用于检查系统是否完全无故障。收集、汇总和分析在测试过程中(即交付之前)发现的故障类型以及交付后用户报告的故障,以实现此目标。

软件可靠性是根据平均故障间隔时间(MTBF)来衡量的。

MTBF = MTTF + MTTR

  • MTTF:平均故障时间。计算方法是:总的正常运行时间/故障次数。计算公式为:MTTF =∑T1/ N。该值越大,表示系统的可靠性越高,平均无故障时间越长。

  • MTTR:平均修复故障所需的时间。计算方法是:总的故障时间/故障次数。计算公式为:MTTR =∑(T2+T3)/ N。MTTR越短表示易恢复性越好。

MTBF 越长表示可靠性越高正确工作能力越强 。所以,一般都是追求高的MTTF和低的MTTR,理想状态是MTTF≈MTBF。

改进

改进完全取决于应用程序或系统中发生的问题,或者软件的特性。根据软件模块的复杂性,改进的方式也会有所不同。时间和预算这两个主要的限制因素将限制工作量,它们被投入到软件可靠性的改进中。

可靠性测试与稳定性测试

人们常常在稳定性和可靠性之间感到困惑。它们是完全不同的,但它们都在做性能测试。

例如,我们有一个完美的应用,除了它5分钟的崩溃事实,但它立即恢复且没有任何数据丢失。这将被认为是可靠的,但不稳定。我可以依靠它,因为没有丢失任何重要的数据,并能正常工作。

正如互联网基本上不稳定,我们可以看到连接丢失并重新出现,数据包相互冲突,丢失,各种其他不稳定的事情发生。然而,令人置信,在赋予了这么多不稳定性下它是多么的可靠。如果它总是良好地运行,但间歇性产生不正确的结果或偶尔丢失数据,有人可能会认为系统是稳定的,但不可靠的。软件稳定又可靠时,被认为是高质量、高性能的软件。

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!