摘要:随着软件产业的迅猛发展,软件产品的规模越来越大,复杂度越来越高,但是软件产品质量却变得越来越难以控制。在软件测试过程中,因为多方面的因素,常常会导致一些错误和失效,为了改善测试过程、使测试过程变得更为有效,需要对软件测试过程进行一个补充,那就是对软件测试的有效性进行评价。本文介绍了评价软件测试有效性工作的一般流程,并提出了一系列用于精确度量测试有效性的度量指标。

  关键词:软件测试;测试的有效性

  一、引言

  如同任何产品离不开质量检验一样,软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的最终审定,在软件生存期中占据着非常突出的重要位置。在软件测试过程中,测试人员非常关心之前的测试过程有没有得到改善,因为如果没有,那么在下一次又将犯一样的错误,继续执行无效的测试。同时由于测试在整个项目研发过程中占用了相当一部分信息服务资源,因此,管理人员也常常在思考测试是否有效,是否值得投入那么多资金。因此,要改善测试过程、使测试过程变得更为有效,必须不断地评价测试结果。

  二、软件测试及评测的主要方法

  1、软件测试方法

  软件测试按阶段可分为单元测试、集成测试、确认测试和系统测试。

  单元测试用于完成对最小的软件设计单元的验证工作。集成测试是把经过单元测试的模块按软件的结构组合在一起作为一个系统或一个子系统来综合测试,主要是用来发现程序的架构和体系结构设计方面的错误。确认测试是把软件系统作为一个单一的执行实体而进行的需求有效性测试。系统测试(System Testing):将系统的测试软件系统和其他资源(硬件、人机交互信息资源和数据库等)都综合起来构成完整的计算机应用系统进行测试,是用来确保整个系统的性能、执行强度、安全性和功能都达到了预订要求。

  根据测试时是否运行被测试的程序,软件测试技术还可分为静态测试方法和动态测试方法。从测试是否针对系统的内部结构和逻辑处理过程,通常可分为:白盒测试与黑盒测试。

  2、软件测试评测方法

  测评方法主要有覆盖测评和质量测评。覆盖测评主要是基于需求和代码测试覆盖完全程度的测评。修正的条件/判定覆盖是基于代码覆盖的评测方式,指定判定中每个条件的可能结果至少出现一次,可每个判定本身的可能结果至少出现一次,并且每个条件都显示能单独影响判定结果。质量测评是对被测试系统的可靠性、稳定性以及性能的测评,在此主要讨论软件可靠性的评测方法。

  3、软件可靠性模型

  软件可靠性模型按随机性分类法可以分为随机过程类模型和非随机过程类模型。随机过程模型与非随机过程模型相比,非随机过程模型的软件失效具有重复性,重复性是指同一个故障在相同时间间隔内总是重复出现,失效与时间无关,对于随机过程则刚好相反。

  4、软件可靠性模型的适用性选择

  软件可靠性模型可以说是多种多样,如何在纷繁复杂的模型集合中找到适合的模型是一个非常复杂的过程。将各种不同的测试策略用于模型的选择标准,在很大程度上会增加模型的适用性。

  软件错误就是软件设计者在开发软件过程中引入的软件缺陷,当测试人员采用某种测试用例时,都希望能够对软件进行全面、系统地测试,但事实证明这种对于所有数据都遍历一次的想法是不现实的,是根本无法实现的(小型系统除外)。为了解决上述问题,可以在输入空间中有选择的选取一些数据作为输入数据,来提高测试效率。用事先准备好的输入数据进行测试,软件的错误就表现出来了,并且可以通过若干次的反复测试得到相同的结论。对于以这种测试方法得出的失效数据来说,应当采用Nelson模型或其变形模型比较恰当。

  对于随机的测试方法来说则是按照某种随机的方式从输入域中选取一定的输入数据作为测试用例来对软件进行测试。这种方式的测试过程中,用于测试的数据是随机选择的,所以不像上面的方法那样具有重复性。这种随机测试的方法在测试过程中发现错误后立即修改程序,假设在修改过程中不引进新的错误,那么软件的失效率必然是逐渐降低的,即给定的时间段内,软件的失效数据将会越来越少。

  大量的软件可靠性模型都证明,如果测试中的失效数据服从指数分布,则失效数的递减方式服从马尔可夫变化过程,J-M模型及其变形模型就是这方面的典型代表。

  三、有效性评价的执行过程

  软件测试的有效性评价的执行过程包含七个方面的内容:确定评估目标、确定度量内容、制定度量责任、选择评估方法、确定所需事实、收集评估数据和评估测试有效性。

  1、确定评估目标

  定义目标,是为了使度量过程得到指导。前面提到,评价的目标就是为了识别测试无效的方面,以便采取修复措施。因此应该明确地确定评估执行的目标。在测试有效性评价中需要识别的内容包括以下几个方面:

  1)识别测试弱项。用某些测试方法不能有效地发现系统的缺陷,识别测试弱项就是要识别这些测试方法中存在的问题。

  2)识别新测试工具的需要。确定当前存在的测试工具不再有效或高效,并将此作为获得新的或改进的测试工具的基础。

  3)评估项目测试。评价由项目组所执行的较经济地减少项目缺陷的测试的有效性。

  4)识别良好的测试实践。确定测试过程中的哪些实践是最有效的,以使这些实践活动可以用于所有的项目中。

  5)识别不好的测试实践。确定项目组所使用的哪些实践是无效的,以便建议其他项目不再使用这些实践。

  6)识别经济的测试实践。确定哪些特征使得测试最经济,以便可以改善测试的费效比。

  2、确定度量内容

  明确了评价目标之后,接下来的工作就是确定度量的内容,即确定达到度量目标所需信息的类别。应用系统的测试中,有五个方面是可度量的:

  1)涉及方。涉及方是指测试涉及哪些人,其涉及程度如何?

  2)测试的程度。测试的程度是指指测试覆盖了哪些区域,对这些区域所执行的测试量如何?

  3)资源。资源是指测试过程消耗了多少信息服务资源,包括人力和计算机资源?

  4)有效性。有效性是指每资源单元完成的测试是多少?

  5)评估。评估是指从测试过程收到的结果值是什么?

  ......

本文转载自51Testing软件测试网,查看更多:http://www.51testing.com/html/11/n-828811.html