资源描述
第15章 可靠性测试
1、可靠性定义
在规定条件下,在规定的时间内,软件引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在缺陷的函数;系统输入将确定是否会遇到已在缺陷(如果缺陷存在的话)
指产品在规定的条件下和规定的时间内完成规定功能的能力。
2、软件可靠性的定量描述
规定时间、失效概率、可靠度、失效强度、失效率、可靠度与失效率之间的换算、平均无失效时间
3、可靠性目标
指客户对软件性能满意程度的期望
4、可靠性测试的意义
1)、软件失效可能造成灾难性的后果
2)、软件的失效在整个计算机系统失效中的比例较高
3)、相比硬件可靠性技术,软件可靠性技术很不成熟,这就加剧了软件可靠性问题的重要性
4)、与硬件元器成本急剧下降形成鲜明对比的是,软件费用呈有增无减的势头,而软件可靠性问题是造成这种费用增长的主要原因之一
5)、计算机技术获得日益广泛的应用,使得系统对于软件的依赖性越来越强。软件可靠性的问题的重要性也凸出了。
5、影响软件可靠性的因素
1)、运行剖面(环境)
2)、软件规模
3)、软件内部结构
4)、软件的开发方法和开发环境
5)、软件的可靠性投入
6、软件的可靠性模型分类
种子法、失效率类、曲线拟合类、可靠性增长、程序结构分析、输入域分类、执行路径分析方法、非齐次泊松过程、马尔可夫过程、贝叶斯类模型。
7、软件可靠性模型举例
模型假设、函数表达式、参数估计
8、定义软件运行剖面
道先需要为软件的使用行为建模,建模可以采用马尔可夫链来完成。下一步是开发使用模型,明确需要测试的内容。
9、可靠性测试用例设计时重点考虑的一些特殊情况
1)、屏蔽用户操作错误:考察对用户常见的误操作的提示和屏蔽情况
2)、错误提示的准确性:对用户的错误提示准确程度
3)、错误是否导致系统异常退出:有无操作错误引起系统异常退出的情况
4)、数据可靠性:系统应对输入的数据进行有效性检查,对冗余的数据进行过滤、校验和清洗,保证数据的正确性和可靠性
5)、异常情况的影响:考察数据和系统受影响程度,若受损,是否提供补救工具,补救的情况
例子:
【15-1】对一个长度为100,000条指令的程序进行测试,记录下来的数据如下:
ú 测试开始, 发现错误个数为0;
ú 经过160小时的测试, 累计改正100个错误, 此时, MTTF = 0.4小时;
ú 又经过160小时的测试, 累计改正300个错误, 此时, MTTF = 2小时;
(1) 估计程序中固有的错误总数;
(2) 为使MTTF达到10小时, 必须测试和调试这个程序多长时间?
(3) 给出MTTF与测试时间t之间的函数关系。
由shooman公式:
其中,IT = 105,MTTF1 = 0.4,T1 = 160,n1 = 100,MTTF2 = 2,T2 = 320,n2 = 300。得:
(1) 解得程序中固有得错误总数ET = 350,此外K = 1000。
(2) 设MTTF = 10,有
解得x = 340。由可靠性累积曲线EC (t) = ET (1-e-K1 t ),
得 100 = 350 (1-e-160K1)
300 = 350 (1-e-320K1)
解得 K1 » 0.01。代入:340 = 350 (1-e-K1 t ) = 350(1-e-0.01 t )
t = (ln(35))/0.01 » 356 (小时)
因此求得为使MTTF = 10,测试和调试该程序需要花费356小时。
(3) MTTF与测试时间t之间的函数关系:
因为EC (t) = ET (1-e-K1 t ),则ET - EC (t) = ET e-K1 t。代入shooman公式:
【5-2】应该由谁来进行确认测试?是软件开发者还是软件用户?为什么?
在对照需求做有效性测试和软件配置审查时,是由软件开发者在开发环境下进行的测试。而接下来做验收测试时则以用户为主。软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果。一般使用生产中的实际数据进行测试。
如果软件是为多个客户开发的,则需要进行α测试和β测试。α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。软件在一个自然设置状态下使用。开发者坐在用户旁边,随时记下错误情况和使用中的问题。这是在受控制的环境下进行的测试。
β测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。这些用户是与公司签定了支持产品预发行合同的外部客户,他们要求使用该产品,并愿意返回有关错位错误信息给开发者。与α测试不同的是,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。
● GB/T 16260-2006《软件工程 产品质量》规定的软件产品使用质量特性包括:
(52) 。
(52)A.适应性、生产率、可靠性、满意度
B.有效性、生产率、安全性、满意度
C.有效性、可靠性、适应性、满意度
D.适应性、适用性、效率、满意度
● GB/T 16260 将软件的内部(外部)质量属性划分为六大质量特性,分别是(65)。
(65)A.功能性,可靠性,易用性,效率,维护性和可移植性
B.功能性、可靠性、易用性、效率、稳定性和可移植性
C.功能性、可靠性、安全性、效率、易用性和可移植性
D.功能性、可靠性、兼容性、效率、稳定性和可移植性
● 对软件可靠性的理解,正确的是(45) 。
①软件可靠性是指在指定条件下使用时,软件产品维持规定的性能级别的能力
②软件可靠性的种种局限是由于随着时间的推移,软件需求和使用方式发生了变化
③软件可靠性包括成熟性、有效性、容错性、易恢复性等质量子特性
④针对软件可靠性中的容错性子特性应测试软件失效防护能力
(45)A.①③ B.②③ C.①④ D.①②③④
软件测试问答题:
1、 软件测试是为了保障软件的可靠性和稳定性,测试一般要达到的目标是什么?
可靠性和稳定性测试的目的:
① 发现软件系统在需求、设计、编码、测试、实施等方面的各种方面的缺陷。
② 为软件的使用和维护提供可靠性数据。
③ 确认软件是否达到可靠性的定量要求。
2、 从技术的角度来看,影响软件可靠性的主要因素是什么?P489
●运行剖面(环境)
●软件规模
●软件内部结构
●软件的开发方法和开发环境
●软件的可靠性投入
3、 可靠性测试中一个典型的测试用例应该由哪些组成部分?P499
● 测试用例标识
● 被测对象
● 测试环境及条件
● 测试输入
● 操作步骤
● 预期输出
● 判断输出结果是否符合的标准
● 测试对象的特殊需求
4、 在测试过程中必须真实地记录,每个测试记录必须包括哪些信息?P501
5、 测试活动结束后要编写《软件可靠性测试报告》,对测试用例及测试用例及测试结果在测试报告中加以总结归纳。编写时可以参考GJB438A-97中提供的《软件测试报告》格式,并应根据情况进行剪裁。测试报告应具备哪些内容?
● 软件产品标识
● 测试环境配置(硬件和软件)
● 测试依据
● 测试结果
● 测试问题
● 测试时间
6、 软件可靠性管理的内容包括软件工程各个阶段的可靠性活动的目标、计划、进度、任务、修正措施等。那么在软件工程测试阶段可靠性活动内容有哪些请简述之。P510
测试阶段:
● 可靠性测试(含于集成测试、系统测试)
● 排错
● 可靠性建模
● 可靠性评价
● 调整可靠性活动计划
● 收集可靠性数据
● 明确后续阶段的可靠性活动的详细计划
● 编制可靠性文档
7、 其它:
一、选择题
13. 配置状态报告的主要目的是( )。
A. 允许项目经理修改项目进度和成本估算
B. 评估软件开发人员和组织的绩效
C. 确保变更信息传达到受影响的团体 ()
D. 选项A和C
E. 选项A、B和C
23. 验证(Verification)与确认(Validation)是贯穿软件生命周期的规范化评估方法,其中验证的目的是( ),确认的目的是( )。
A. 检查当前阶段的产品(或制品)是否保持上一阶段的产品(或制品)需求 ()
B. 检查当前阶段的产品(或制品)是否存在错误
C. 检查最终产品是否满足客户需求 ()
D. 检查最终产品是否存在错误
24. 使用独立测试团队的最好理由是( )。
A. 软件开发人员不需要做任何测试
B. 测试团队将更彻底地测试软件 ()
C. 测试人员在测试开始之前不参与项目
D. 开发人员与测试人员之间的争论会减少
25. 下面的( )说法是正确的。
A. 恢复测试是以各种方式迫使软件失效从而检测软件是否能够继续执行的一种系统测试
B. 安全测试是检测系统中的保护机制是否可以保护系统免受非正常的攻击
C. 压力测试是检测在极限环境中使用系统时施加在用户上的压力
D. 性能测试只对实时系统或嵌入式系统是重要的
26. 类的行为应该基于( )进行测试。
A. 数据流图 B. 对象图 C. 状态图 D. 用例图
二、问答题:
经过代码审查和单元测试,单个组件的有效性已经得到全面验证,为什么还要进行集成测试?在集成测试时,增量式集成方法为什么比一次性整体集成方法要好?
参考:(3分)
(2分)单个组件正常工作并不意味着所有组件集成在一起可以正常工作,因为组件相互连接时接口会引起许多新问题,集成测试正是将通过单元测试的各个组件组装在一起进行综合测试,以便发现与接口有关的各种错误。
(1分)整体一次性集成方法可能在测试时发现大量错误,造成定位和纠正错十分困难;增量式集成方法通过逐渐加入组件,可以比较容易定位和纠正错误。
展开阅读全文