您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 4、软件可靠性度量和测试
软件质量保证与测试1第4章软件可靠性度量和测试2内容提要4.1软件可靠性4.1.1软件可靠性发展史4.1.2软件可靠性的定义4.1.3软件可靠性的基本数学关系4.1.4软件可靠性与硬件可靠性的区别4.1.5影响软件可靠性的因素4.1.6软件的差错、故障和失效4.2可靠性模型及其评价标准4.2.1软件可靠性模型4.2.2软件可靠性模型参数4.2.3软件可靠性模型及其应用4.2.4软件可靠性模型评价准则3内容提要4.3软件可靠性测试和评估4.3.1软件可靠性评测4.3.2软件可靠性测试的具体实施过程4.4提高软件可靠性的方法和技术4.4.1建立以可靠性为核心的质量标准4.4.2选择开发方法4.4.3软件重用4.4.4使用开发管理工具4.4.5加强测试4.4.6容错设计4.5软件可靠性研究的主要问题4.6小结44.1软件可靠性用软件系统规模越做越大越复杂,其可靠性越来越难保证。应用本身对系统运行的可靠性要求越来越高,在一些关键的应用领域,如航空、航天等,其可靠性要求尤为重要,在银行等服务性行业,其软件系统的可靠性也直接关系到自身的声誉和生存发展竞争能力。特别是软件可靠性比硬件可靠性更难保证,会严重影响整个系统的可靠性。在许多项目开发过程中,对可靠性没有提出明确的要求,开发商(部门)也不在可靠性方面花更多的精力,往往只注重速度、结果的正确性和用户界面的友好性等,而忽略了可靠性。在投入使用后才发现大量可靠性问题,增加了维护困难和工作量,严重时只有束之高阁,无法投入实际使用。54.1.1软件可靠性发展史软件工程的发展大体上可分为下列四个阶段。1950年~1958年1959年~1967年1968年~1978年1978年至今6硬件飞速发展,软件不相适应,硬件越来越可靠,而软件虽然采取了许多办法,但常在带有剩余缺陷的情况下发布和部署,使得软件已经成为系统崩溃的主要原因大部分软件不是十分可靠软件的状况74.1.2软件可靠性的定义1983年美国IEEE计算机学会对“软件可靠性”一词正式作出了如下的定义:在规定的条件下,在规定的时间内,软件不引起系统失效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的错误的函数;系统输入将确定是否会遇到已存在的错误(如果错误存在的话);在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。8引言软件可靠性工程及软件可靠性软件可靠性工程应用统计技术,处理在软件开发过程中或(和)运行期间所采集的失效数据,以便详细说明并预计、估计和评价软件的可靠性研究内容包括软件可靠性的基本概念和定义、软件可靠性指标体系、可靠性建模、可靠性设计技术、测试技术和管理技术等9软件可靠性工程处理以下问题:确定某过程能否提供满足可靠性要求的代码为过程改进提供度量预测软件维护阶段的失效率,确定软件维护工作量帮助进行安全性认证确定交付软件产品的时间或停止测试的时机估计下次故障的可能时间为软件更新或升级,标识需要重新设计的主要部件测定软件的可靠性10软件可靠性可靠性是软件的13个质量因素中最关键、最重要的软件可靠性是指在规定时间和条件下软件无故障运行的概率,是系统功能或软件产品中存在的缺陷的函数软件故障产生的原因是软件缺陷,但缺陷并不一定导致故障的产生,高缺陷率的软件的可靠性不一定就差软件失效意味着软件运行中断或者无法完成所规定的任务11几个值得关注的问题:软件的运行环境:软件可靠性与运行环境密切相关软件运行的时间间隔:商业软件需要较高的运行时间间隔(较长的运行寿命),而任务关键软件则需要在短时间内高效运行软件失效的时机是随机的不同于软件的正确性,对于持续运行的软件其可靠性最终将归于零(以失效结束);但正确性是软件的特定的某次运行结果,要么为1,要么为0124.1.4软件可靠性与硬件可靠性的区别软件和硬件在可靠性特征上的差异,主要有以下几点:最明显的是硬件有老化损耗现象,硬件失效是物理故障,是器件物理变化的必然结果,有浴盆曲线现象;软件不发生变化,没有磨损现象,有陈旧落后的问题,没有浴盆曲线现象。硬件可靠性的决定因素是时间,受设计、生产、运用的所有过程影响,软件可靠性的决定因素是与输入数据有关的软件差错,是输入数据和程序内部状态的函数,更多地决定于人。硬件的纠错维护可通过修复或更换失效的系统重新恢复功能,软件只有通过重设计。对硬件可采用预防性维护技术预防故障,采用断开失效部件的办法诊断故障,而软件则不能采用这些技术。事先估计可靠性测试和可靠性的逐步增长等技术对软件和硬件有不同的意义。为提高硬件可靠性可采用冗余技术,而同一软件的冗余不能提高可靠性。硬件可靠性检验方法已建立,并已标准化且有一整套完整的理论,而软件可靠性验证方法仍未建立,更没有完整的理论体系。硬件可靠性已有成熟的产品市场,而软件产品市场还很新。软件错误是永恒的,可重现的,而一些瞬间的硬件错误可能会被误认为是软件错误。134.1.5影响软件可靠性的因素软件差错是软件开发各阶段潜入的人为错误:需求分析定义错误。如用户提出的需求不完整,用户需求的变更未及时消化,软件开发者和用户对需求的理解不同等等。设计错误。如处理的结构和算法错误,缺乏对特殊情况和错误处理的考虑等。编码错误。如语法错误,变量初始化错误等。测试错误。如数据准备错误,测试用例错误等。文档错误。如文档不齐全,文档相关内容不一致,文档版本不一致,缺乏完整性等。14软件不可靠的九大原因不完善的需求定义客户与开发人员缺乏交流偏离软件需求逻辑设计错误编码错误编码与文档不一致缺少测试过程接口定义错误不受控的变更154.1.6软件的差错、故障和失效异常。偏离期望的状态(或期望值)的任何情形都可称为异常。缺陷。不符合使用要求或与技术规格说明不一致的任何状态常称为缺陷。差错。从一般意义上说,差错有下面几个方面不同的含义:计算的、观测的或测量的值与真实的、规定的或理论上正确的值或条件之间的差别。一个不正确的步骤、过程或数据定义。一个不正确的结果。一次产生不正确的结果的人的活动。故障。在一个计算机程序中出现的不正确的步骤、过程或数据定义常称为故障。上述“差错”中的第二项属于故障。失效。一个程序运行的外部结果与软件产品的要求出现不一致时称为失效。软件失效证明了软件中存在着故障。上述“差错”中的第三项属于失效。16软件的缺陷、故障和失效缺陷(Error,错误):设计和构造进产品总数是不可预知的,只能估计缺陷分为已知和未知(新发现)的缺陷分为已发现的和未发现的已发现的缺陷包括已纠正的和未纠正的故障(Fault):运行结果错误故障是缺陷的表现形式,是由存在的缺陷产生的但缺陷并不一定导致故障,或者条件不具备,或者不会产生故障失效(Failure):系统不能完成所需要的功能而失败失效是故障在软件运行时所产生的后果失效缺陷故障已纠正的缺陷19可以更清楚地说明失效与故障之间的区别失效故障面向用户面向开发者软件运行偏离用户需求程序执行输出错误结果可根据对用户应用的严重性等级分类可根据定位和排除故障的难度分类如,3次失效/1000CPU小时如,6个故障/1KLOC20软件失效软件失效是随机发生的描述失效的方法有三个:累计失效函数:即与某时间点相关的平均累计失效数失效率函数:用累计失效函数的变化率表示平均失效时间MTTF函数:对于一个时间段,表示若干相邻失效时间间隔的平均值;对某个时间点,表示到下次失效的期望时间指标—平均失效前时间•定义(MTTF—MeanTimeToFailure)–当前时间到下一次失效时间的均值•计算•应用–度量软件可靠性和可用性NkNtkMTTF1指标—平均失效前时间举例SF1:180,675,315,212,278,503,431SF2:477,1048,685,396SF3:894,1422MTTFSF1=2594/7=370.57MTTFSF2=2606/4=651.5MTTFSF3=2316/2=115823软件失效率如果没有缺陷,软件失效率为0如果发现的缺陷能被及时、完全修复,失效率会趋向0实际上,发现的缺陷数会递增,而纠正一个缺陷会引入更多的缺陷,因而失效率会增加时间失效率硬件软件(实际)软件(理想)244.2可靠性模型及其评价标准4.2.1软件可靠性模型为了对软件可靠性进行评估,除了进行软件测试之外,我们还需要借助软件可靠性模型的帮助。软件可靠性模型(SoftwareReliabilityModel)是指为预计或估算软件的可靠性所建立的可靠性框图和数学模型。建立可靠性模型可以将复杂系统的可靠性逐级分解为简单系统的可靠性,以便于定量预计、分配、估算和评价复杂系统的可靠性。25软件可靠性度量和建模基本概念软件可靠性建模过程是根据软件过去的故障行为建立软件可靠性数学模型的过程建模的目的是为了预计软件将来的故障行为建模过程包括以下步骤:①通过度量获得历史数据②对故障数据进行分析,拟合成概率分布函数③对拟合函数进行参数分析④确定所期望的可靠性度量值并预测可能的故障行为26单元划分建模的影响示例每天产品缺陷数日期(天)缺陷数日期(天)缺陷数3月1日33月8日183月2日183月9日93月3日153月10日123月4日83月11日93月5日103月12日83月6日63月13日43月7日153月14日0对应的趋势图日期(单位:2天)缺陷数3/1-3/2213/3-3/4233/5-3/6163/7-3/8333/9-3/10213/11-3/12173/13-3-148每两天产品缺陷数对应的缺陷数变化趋势图以1天为单位,缺陷变化的规律不是很强以2天为单位,缺陷变化趋热略平滑一点2627可靠性模型评价标准软件可靠性模型通常假设失效之间是相互独立的。失效之间没有很强的关联性。对可靠性模型的评价标准如下:基于合理的假设预测的有效性模型实现的可操作性预测的及时性预测的覆盖率2728软件可靠性度量参数软件可靠性R(t)可定义为:在给定条件下,在时间[0,t]内,软件无故障运行的概率若用T表示软件无故障运行的时间间隔,F(t)为T的累积分布函数,则软件可靠性可表示为:R(t)=1-F(t)t≥0故障率函数λ(t)为:其中,f(t)为F(t)的函数密度,即:)()()()()(lim)(0tRtfttRttRtRtt)()(tFdtdtf29λ(t)Δt是在时间[0,t]内软件正常运行,在[t,t+Δt]内发生故障的条件概率,可得:密度函数f(t)、累积分布函数F(t)、可靠性函数R(t)和故障率函数λ(t)紧密相关,一般可由任一个惟一地确定另外三个,例如若λ(t)给定,则:根据f(t)或R(t)可计算平均失效时间函数MTTF,从而预测故障时间tdsstR0)(exp)()](ln[)](1ln([)(1)()(tRdtdtfdtdtFtfttdssttf0)(exp)()(00)()(MTTFdttRdtttf30数据收集和分析是度量软件可靠性的最重要的先决条件,任何可靠性度量的有效性都与数据收集的有效性直接相关,数据收集过程必须有计划、有组织地进行与软件可靠性相关的数据包括:缺陷数据过程数据产品数据:如规模、功能、性能等软件可靠性数据收集过程31缺陷数据的收集缺陷数据的收集常采用问答、报告形式,即发放问题报告表格要求有关人员填写,收集并分析问题报告表格形成统计数据检测到的缺陷已记录的缺陷已评审的缺陷确认?结束缺陷报告采取措施?通过验证?记录不采取措施的原因记录纠正验证问题报告NoNoNoYesYesYes32过程数据的收集缺陷数据必须与过程融合才有价值,因而过程数据也需要收集。通常会将项目的持续时间作为主要关心的过程数据,但实际需要更细分与软件可靠性测试过程相关的数据包括:CPU时间:具有与人无关性,但易忽略人的工作
本文标题:4、软件可靠性度量和测试
链接地址:https://www.777doc.com/doc-3521039 .html