可靠性测试是软件评测师上午场常考的知识点,可靠性是指产品在规定的条件下和规定的时间内完成规定功能的能力。按照产品可靠性的形成,可靠性可分为固有可靠性和使用可靠性。固有可靠性是通过设计、制造赋予产品的可靠性;使用可靠性既受设计、制造的影响,又受使用条件的影响。一般使用可靠性总是低于固有可靠性。下面就可靠性测试的相关概念、意义等知识点进行总结学习。
一、软件可靠性定义:在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的缺陷的函数;系统输入将确定是否会遇到已存在的缺陷( 如果缺陷存在的话)。以下是有关于可靠性的一些概念需要大家理解:
(1)失效概率:我们把软件从运行开始,到某一时刻t为止,出现失效的概率看作关于软件运行时间的一个随机函数,用F(t)表示。根据我们对软件可靠性的分析,函数F(t)有 如下特征:
①F(0)=0,即软件运行初始时刻失效概率为0。
②F(t)在时间域(0, +∞) 上是单调递增的。
③F(+∞)=1,即失效概率在运行时间不断增长时趋向于1,这也和“任何软件都存在缺陷”的思想相吻合。
(2)可靠度:我们用来表示可靠性最为直接的方式就是可靠度,根据可靠性的定义,可靠度就是软件系统在规定的条件下,规定的时间内不发生失效的概率,如果用F(t)来表示到t时刻止,软件不出现失效的概率,则可靠度的公式为R(t)=1- F(t)。
(3)平均无失效时间(MTTF):就是软件运行后,到下一次出现失效的平均时间,通常平均无失效时间更能直观地表明一个软件的可靠程度。
二、可靠性测试的意义
(1)软件失效可能造成灾难性的后果。
(2)软件的失效在整个计算机系统失效中的比例较高。
(3)相比硬件可靠性技术,软件可靠性技术很不成熟。
(4)与硬件元器成本急剧下降形成鲜明对比的是,软件费用呈有增无减的势头,而软件可靠性问题是造成这种费用增长的主要原因之一。
(5)随着计算机应用系统中软件成分的不断增加,使得系统对于软件的依赖性越来越强,软件对生产活动和社会生活的影响越来越大,从而增加了软件可靠性问题在软件工程领域乃至整个计算机工程领域的重要性。
三、影响软件可靠性的因素
(1)运行剖面(环境):软件可靠性的定义是相对运行环境而言的,一样的软件在不同的运行剖面下,其可靠性的表现是不一样的。
(2)软件规模:也就是软件的大小,一个只有数十行代码的软件和几千万行代码的软件是不能相提并论的。
(3)软件内部结构:结构对软件可靠性的影响主要取决于软件结构的复杂程度,一般来说,内部结构越复杂的软件,所包含的软件缺陷数就可能越多。
(4)软件的开发方法和开发环境:软件工程表明,软件的开发方法对软件的可靠性有显著影响,例如,与非结构方法相比,结构化方法可以明显减少软件的缺陷数。
(5)软件的可靠性投入:软件在生命周期中可靠性的投入包括开发者在可靠性设计、可靠性管理、可靠性测试、可靠性评价等方面投入的人力、资金、资源和时间等。经验表明,在早期重视软件可靠性并采取措施开发出来的软件,可靠性有明显的提高。
四、软件可靠性设计:在常规的软件设计中,应用各种方法和技术,使程序设计在兼顾用户的功能和性能需求的同时,全面满足软件的可靠性要求,即采用一些技术手段,把可靠性“设计”到软件中去。
(1)软件可靠性设计的原则如下:
①软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突。
②软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标。
③软件可靠性设计应确定软件的可靠性目标,不能无限扩大化,并且排在功能度、用户需求、开发费用之后考虑。
(2)软件可靠性设计的技术
①容错设计技术:对于软件失效后果特别严重的场合,如飞机的飞行控制系统、空中交通管制系统、核反应堆安全控制系统等,可采用容错设计方法。常用的软件容错技术主要有三种方法:恢复块设计、N版本程序设计和冗余设计。
②检错设计:在软件系统中,无需在线容错的地方,或不能采用冗余设计技术的部分,如果对可靠性要求较高,故障有可能导致严重的后果,一般采用检错技术。
③降低复杂度设计:降低复杂度设计的思想就是在保证实现软件功能的基础上,简化软件结构,缩短程序代码长度,优化软件数据流向,降低软件复杂度,从而提高软件可靠性。
五、软件可靠性管理:软件可靠性管理的内容包括软件工程各个阶段的可靠性活动的目标、计划、进度、任务、修正措施等。软件工程各个阶段可能进行的主要的软件可靠性活动如下所述。
(1)需求分析阶段
①确定软件的可靠性目标;
②分析可能影响可靠性的因素;
③确定可靠性的验收标准;
④制定可靠性管理框架;
⑤制定可靠性文档编写规范;
⑥制定可靠性活动初步计划;
⑦确定可靠性数据收集规范。
(2)概要设计阶段
①确定可靠性度量;
②制定详细的可靠性验收方案;
③可靠性设计;
④收集可靠性数据;
⑤调整可靠性活动计划;
⑥明确后续阶段的可靠性活动的详细计划;
⑦编制可靠性文档。
(3)详细设计阶段
①可靠性设计;
②可靠性预测( 确定可靠性度量估计值);
③调整可靠性活动计划;
④收集可靠性数据;
⑤明确后续阶段的可靠性活动的详细计划;
⑥编制可靠性文档。
(4)编码阶段
①可靠性测试(单元测试);
②排错;
③调整可靠性活动计划;
④收集可靠性数据;
⑤明确后续阶段的可靠性活动的详细计划;
⑥编制可靠性文档。
(5)测试阶段
①可靠性测试(集成测试、系统测试);
②排错;
③可靠性建模;
④可靠性评价;
⑤调整可靠性活动计划;
⑥收集可靠性数据;
⑦明确后续阶段的可靠性活动的详细计划;
⑧编制可靠性文档。
(6)实施阶段
①可靠性测试(验收测试);
②排错;
③收集可靠性数据;
④调整可靠性模型;
⑤可靠性评价;
⑥编制可靠性文档。
下面是近几年上午场对可靠性测试考察过的真题(2018年没考),可靠性测试出现题目的频率还是很高的,以后仍是考试出题的重点,大家要重视起来。
【2017年70题】以下关于软件可靠性管理的叙述中,不正确的是( )
A、在需求分析阶段确定软件的可靠性目标
B、在设计阶段进行可靠性评价
C、在测试阶段进行可靠性测试
D、在实施阶段收集可靠性数据
解析:本题考查软件可靠性管理的基础知识。
软件可靠性管理在设计阶段进行可靠性设计,实施阶段进行可靠性评价。
故正确答案为:B
【2019年70题】以下关于可靠性测试意义的叙述中,不正确的是( )。
A. 软件失效可能导致灾难性后果
B. 软件失效在整个计算机系统失效中占比较少
C. 相比硬件可靠性技术,软件可靠性技术不成熟
D. 随着计算机应用系统中软件成分的增加,软件可靠性问题越来越重要
解析:本题考查软件可靠性测试的基础知识。
软件失效在整个计算机系统失效中占比较多。
故正确答案为:B
作者唯一官方个人微信公众号(昊洋与你一起成长):HYJY20180101
写于2021年8月12日
作者:昊洋讲师
版权所有,侵权必究




