《软件可靠性及测试方法.pdf》由会员分享,可在线阅读,更多相关《软件可靠性及测试方法.pdf(24页珍藏版)》请在三个皮匠报告上搜索。
1、软件产品可靠性及测试方法NNSTC 孟宪勇2023-06-30单位介绍国家网络软件产品质量监督检验中心(济南)是国家市场监管总局批复设立的国家级软件产品质量监督检验中心中心具备国家实验室认可(CNAS)资质、资质认定证(CMA)、信息安全风险评估服务等资质面向全国开展软件产品、信息安全产品、网络信息系统、智能建筑工程检测向国网、南网、部分省电力公司及电力三产公司提供了软件检测服务 内容 软件产品可靠性的定义软件可靠性及其子特性的理解软件可靠性测试提高软件可靠性的实践01软件产品可靠性的定义软件产品可靠性的定义系统、产品或组件在指定条件下、指定时间内执行指定功能的程度软件可靠性主要包含的子特性可
2、用性、成熟性、容错性、易恢复性02软件可靠性及其子特性的理解软件可靠性及其子特性的理解失效的情形影响软件可靠性的因素软硬件失效对比可用性成熟性容错性易恢复性失效的情形应用停止或系统宕机:软件停止响应,或传播到系统运行速度下降:数据输入或输出的速度与系统的需求不符计算精度下降:因数据采集量不够或算法问题导致若干输出值的计算精度不符合要求输出项缺失:缺少某些必要的输出值输出项多余:软件输出了系统不期望的数据/指令影响软件可靠性的因素内在因素:需求、设计和实现过程中的“错误”外部因素:使用周境的变化软硬件失效对比软件失效硬件失效失效因素主要在需求分析、设计和开发过程中引入除了计设过程、制造过程引入,
3、使用和维护均需要加强控制通过严格测试,查出缺陷加以排除,为此要精心设计测试用例通过检验,排除缺陷,为此要适当建立环境应力条件冗余设计往往不会提高可靠性,反而增加系统复杂度,降低可靠性相同的部件之间相互独立,适当的冗余可提高可靠性使用过程中出现失效后必须修改原软件以解决问题,若修改时未带来新的缺陷,软件的可靠度会增长使用过程中出现故障后,不对原产品进行修改,只需更换或修复失效的部件,使产品恢复良好状态,可靠性一般不会提高一处修改可能影响他处,修改时必须考虑完整一致性修改一处,一般不会给其他处造成影响失效有传播性,相同版本的软件都有相同的缺陷故障没有传播性,故障因老化和损耗造成(假设不存在设计和生
4、产缺陷)失效率随故障的排除而下降失效率变化类似浴盆曲线可靠性参数估计无物理基础可靠性参数估计有物理基础软件的可靠性基本不受物理环境的影响,但受使用周境的影响可靠性受温度、湿度、振动等环境因素的影响模块间的接口是一种概念,不可见的硬件接口可见逻辑产品,标准化程度差物理产品,标准化程度高可用性可用性是成熟性(控制失效的频率)、容错性(健壮程度)和易恢复性(再次生效的能力)成熟性成熟性一般是指软件产品在满足其要求的软/硬件环境或其他特殊条件(如一定的负载压力)下使用时,为用户提供相应服务的能力。可把软件故障数、平均失效间隔时间、发生失效的比例、系统的完整性级别等作为评价指标。根据需求规格说明书和产品
5、说明中描述的产品或系统的运行环境,在一定测试时间内,对用户文档集和产品说明中的功能列表里的每个功能编写对应的测试用例,执行所有测试用例,收集和分析测试结果。依据测试结果,确定检测到的故障数、所发现的缺陷的严重程度、判断系统的完整性级别等容错性容错性与发生运行故障或违反规定接口时产品或系统维持规定性能等级的能力有关。用户操作某一功能导致产品或系统出现错误或异常时,与差错处置相关的功能应与需求文档、设计文档、操作手册等用户文档集或产品说明中的陈述一致。在用户文档集陈述的限制范围内对产品或系统进行操作时,不应丢失数据。输入违反句法条件的信息时,产品或系统给出提示信息,并且不能作为许可的输入加以处理。
6、易恢复性在产品或系统发生中断或失效时,恢复系统所需时间的长短、业务系统恢复程度体现了系统的恢复能力。可通过数据备份恢复,最大限度降低损失。通过需求规格说明和产品说明中描述的数据备份和恢复方法,了解数据备份和恢复机制、具体备份的数据信息。03软件可靠性测试软件可靠性测试加速测试基于任务剖面的测试基于使用模型的测试软件可靠性测试基于任务剖面的测试增加环境严酷度 这里的“环境”不同与硬件中的环境,是指“恶劣”的输入或输入组合,不是指温度、湿度、振动等,因为软件失效与这些因素无关。通常的做法有:改变正常输入值、改变输入类型、改变输入时序提高输入强度 比如增大输入集合中某些特殊输入在测试剖面中的概率软件
7、可靠性测试基于使用模型的测试使用马尔科夫模型,用马尔科夫过程来描述软件的使用方式,这样的测试用例是随机的,尽量贴合用户使用情形。04提高软件可靠性的实践提高软件可靠性的实践需求分析阶段软件设计阶段软件编码阶段需求分析阶段成熟性方面 设定相关诊断功能的需求(如数据库连接诊断功能)可用性方面 设定连续处理,或者重新处理等方面的需求容错性方面 设定明确的输入限制方面的需求,并给出相应的信息校验,防止用户输入错误的信息或进行错误的操作,或者设定相应的回滚机制易恢复性方面 设定数据处理或传输的中断恢复机制等方面的需求软件设计阶段选择可靠性框架 采用避错设计、控制程序的复杂度采用查错设计 采用容错设计、慎重使用容易引入缺陷的结构和技术采用软件改错设计 赋予程序自我改正错误、减少错误危害程度软件编码阶段制定编码规范,同时采取代码走查、单元测试等方式来有效降低缺陷率对所有的用户输入,都应进行合法性检查程序与环境或状态发生关系时,必须主动处理发生的意外事件,对于明确的错误要准备有效的容错代码所有重要操作都记录日志,如登录和数据的增加、删除、修改等THE ENDTHANKS