1.软件可靠性测试概述
软件可靠性测试由可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析等主要活动组成。
软件可靠性测试还必须考虑对软件开发进度和成本的影响,最好是在受控的自动测试环境下,由专业测试机构完成。
软件可靠性测试是一种有效的软件测试和软件可靠性评价技术。尽管软件可靠性测试也不能保证软件中残存的缺陷数最少,但经过可靠性测试可以保证软件的可靠性达到较高的要求,对于开发高可靠性与高安全性软件系统很有帮助。
2.定义软件运行剖面
定义运行剖面首先需要为软件的使用行为建模,建模可以采用马尔可夫链来完成。用马尔可夫链将输入域编码为一个代表用户观点的软件使用的状态集。弧用来连接状态并表示由各种激励导致的转换,这些激励可能由硬件、人机接口或其他软件等产生。将转换概率分配给每个弧,用来代表一个典型用户最有可能施加给系统的激励。
定义运行剖面的下一步是开发使用模型,明确需要测试的内容。开发使用模型涉及将输入域分层,有两种类型的分层形式:用户级分层和用法级分层。一旦用户和用法模型被开发出来,弧上的概率将被分配。
3.可靠性测试用例设计
为了对软件可靠性进行良好的预计,必须在软件的运行域上对其进行测试。首先定义一个相应的剖面来镜像运行域,然后使用这个剖面驱动测试,这样可以使测试真实地反映软件的使用情况。
由于可能的输入几乎是无限的,测试必须从中选择出一些样本,即测试用例。测试用例要能够反映实际的使用情况,反映系统的运行剖面。在这种测试中,优先测试那些最重要或最频繁使用的功能,释放和缓解最高级别的风险,有助于尽早发现那些对可靠性有最大影响的故障,以保证软件的按期交付。
4.可靠性测试的实施
在进行应用软件的可靠性测试前有必要检查软件需求与设计文档是否一致,检查软件开发过程中形成的文档的准确性、完整性以及与程序的一致性,检查所交付程序和数据以及相应的软件支持环境是否符合要求。
软件可靠性测试必须是受控测试,在运行此类测试时,为了保证统计数据的有效性,测试过程中的每个测试用例必须用相同的软件版本,新的软件版本意味着新测试的开始。
开发方交付的任何软件文档中与可靠性质量特性有关的部分、程序以及数据都应当按照需求说明和质量需求进行测试。在项目合同、需求说明书和用户文档中规定的所有配置情况下,程序和数据都必须进行测试。
软件可靠性数据是可靠性评价的基础。为了获得更多的可靠性数据,应该使用多态计算机同时运行软件,以增加累计运行时间。应该建立软件错误报告、分析与纠正措施系统。
用时间定义的软件可靠性数据可以分为4类:
(1)失效时间数据:记录发生一次失效所累积经历的时间。
(2)失效间隔时间数据:记录本次失效与上一次失效间的间隔时间。
(3)分组时间内的失效数:记录某个时间区内发生了多少次失效。
(4)分组时间的累积失效数:记录到某个区间的累积失效数。
在测试过程中必须真实地进行记录,每个测试记录必须包含如下信息:
(1)测试时间
(2)含有测试用例的测试说明或标识。
(3)所有与测试有关的测试结果,包括失效数据。
(4)测试人员。
测试活动结束后要编写《软件可靠性测试报告》,对测试用例及测试结果在测试报告中加以总结归纳。编写时可以参考GJB 438A-97中提供的《软件测试报告》格式,并应根据情况进行剪裁。测试报告应具备如下内容。
(1)软件产品表示。
(2)测试环境配置(硬件和软件)
(3)测试依据。
(4)测试结果。
(5)测试问题。
(6)测试时间。
把可靠性测试过程进行规范化,有利于获得真实有效的数据,为最终得到客观的可靠性评价奠定基础。