系统架构设计师教程 第9章 9.5 软件可靠性测试 笔记
9.5 软件可靠性测试 ★★★☆☆
9.5.1 软件可靠性测试概述
软件测试者可以使用很多方法进行软件测试,如按行为或结构来划分输入域的划分测试, 纯粹随机选择输入的随机测试,基于功能、路径、数据流或控制流的覆盖测试等。
软件可靠性测试由可靠性目标的确定、运行剖面的开发、测试用例的设计、测试实施、测试结果的分析等主要活动组成。
9.5.2 定义软件运行剖面
定义运行剖面首先需要为软件的使用行为建模,建模可以采用马尔可夫链来完成。然后开发使用模型,明确需要测试的内容。
开发使用模型涉及将输入域分层,有两种类型的分层形式:用户级分层和用法级分层。用户级分层考虑各种类型的用户以及他们如何使用系统;用法级分层则要求考虑系统能够提供的所有功能。
概率估计主要是基于如下几个方面。
(1)从现有系统收集到的数据。
(2)与用户的交谈或对用户进行观察获得的信息。
(3)原型使用与测试分析的结果。
(4)相关领域专家的意见。
9.5.3 可靠性测试用例设计
设计测试用例就是针对特定功能或组合功能设计测试方案,并编写成文档。测试用例的选 择既要有一般情况,也应有极限情况以及最大和最小的边界值情况。
一个典型的测试用例应该包括下列组成部分。
(1)测试用例标识。
(2)被测对象。
(3)测试环境及条件。
(4)测试输入。
(5)操作步骤。
(6)预期输出。
(7)判断输出结果是否符合标准。
(8)测试对象的特殊需求。
9.5.4 可靠性测试的实施
在进行应用软件的可靠性测试前有必要检查软件需求与设计文档是否一致,检查软件开发 过程中形成的文档的准确性、完整性以及与程序的一致性,检查所交付程序和数据以及相应的 软件支持环境是否符合要求。
软件可靠性测试同样依赖于软件的可测试性。可靠性测试的难点就在于判断测试用例的运行是成功还是失败。
将测试分成两个阶段进行。
第一阶段运行较少量的测试用例,并对照规范进行仔细检查。
第二阶段再运行大量测试用例。第二阶段不用人工检查输出的每项内容,而是找失效现象,包括错误信息、断电、崩溃和死机。也可把输出记录到文件中,采用搜索或过滤方法进行处理。
用时间定义的软件可靠性数据可以分为4类,这4类数据可以互相转化,具体内容如下。
(1)失效时间数据:记录发生一次失效所累积经历的时间。
(2)失效间隔时间数据:记录本次失效与上一次失效间的间隔时间。
(3)分组时间内的失效数:记录某个时间区内发生了多少次失效。
(4)分组时间的累积失效数:记录到某个区间的累积失效数。
在测试过程中必须真实地进行记录,每个测试记录必须包含如下信息。
(1)测试时间。
(2)含有测试用例的测试说明或标识。
(3)所有与测试有关的测试结果,包括失效数据。
(4)测试人员。
测试报告应具备如下内容。
(1)软件产品标识。
(2)测试环境配置(硬件和软件)。
(3)测试依据。
(4)测试结果。
(5)测试问题。
(6)测试时间。
把可靠性测试过程进行规范化,有利于获得真实有效的数据,为最终得到客观的可靠性评价结果奠定基础。