当前位置:文档之家› 软件可靠与可信研究

软件可靠与可信研究

软件可靠与可信研究
软件可靠与可信研究

软件可靠与可信研究

摘要:本文在介绍软件可靠性及安全性的基础上,讨论软件可靠性测试的特点、进行软件可靠性测试的基本条件,以及软件安全性测试的必要条件和常用的测试方法。并简要阐述软件测试在软件生产中是必不可少的质量保障手段。

关键词:软件可靠性;安全测试;测试方法

随着科学技术的不断进步,计算机技术被越来越多地应用到武器系统中。计算机软件的复杂程度随着功能的增强,因而系统的可靠性也越来越与软件直接相关。例如AFTI/F-16飞机首航因软件问题推迟一年,事先设计的先进程序无法使用;海湾战争中F/A–18飞机飞行控制系统计算机500次故障中,软件故障次数超过硬件。软件往往是系统可靠性的薄弱环节,因此软件系统的可靠性需要引起有关人员的格外重视。软件系统规模越做越大越复杂,其可靠性越来越难保证。应用本身对系统运行的可靠性要求越来越高,在一些关键的应用领域,如航空、航天等,其可靠性要求尤为重要,在银行等服务性行业,其软件系统的可靠性也直接关系到自身的声誉和生存发展竞争能力。在许多项目开发过程中,对可靠性没有提出明确的要求,开发商(部门)也不在可靠性方面花更多的精力,往往只注重速度、结果的正确性和用户界面的友好性等,而忽略了可靠性。在投入使用后才发现大量可靠性问题,增加了维护困难和工作量,严重时只有束之高阁,无法投入实际使用。本文仅就软件可靠性和在软件开发过程中的应用谈谈自己的认识。

1.概述:

软件可靠性是指在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故障。

软件产品与硬件产品一样。软件的可靠性工作也是贯穿于软件的整个寿命周期的。软件的寿命周期,是指从软件任务的提出一直到它完成使命,因陈旧而被废弃为止的整个时间历程,这个寿命周期包括了提出要求/规格说明、设计、实现、检验、维护等五个阶段,前四个阶段为开发期,维护阶段为使用期。

软件可靠性测试指在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的功能测试。需要说明的是,“使用代表性”指的是在统计意义下该环境能反映出软件的使用环境特性。软件可靠性测试一般在软件验收阶段进行,即可以在实验室也可以在现场测试运行。一般仅适用于有可靠性定量要求、且可能会影响安全和任务完成的关键软件。

软件系统的可靠性测试是软件系统可靠性质量保证过程中非常关键的一步,根

据国外有关资料统计和工作实践证明,可靠性测试对提高软件的可靠性有重大作用,其他测试不能代替,但是软件可靠性测试又不能代替其他软件测试的作用。软件可靠性测试的主要目的有:

(1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。

(2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。

(3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。

2.测试方法与步骤

2.1软件可靠性测试

2.1.1.制订测试方案

本阶段的目标是识别软件功能需求,触发该功能的输入和对应的数据域,确定相关的概率分布及需强化测试的功能。

(1)分析功能需求。分析各种功能需求,识别触发该功能的输入及相关的数据域(包括合法与不合法的两部分)。

(2)定义失效等级。判断是否存在出现危害度较大的1级和2级失效的可能性。如果这种可能性存在,则应进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入域。

(3)确定概率分布。确定各种不同运行方式的发生概率,判断是否需要对不同的运行方式进行分别测试。如果需要,则应给出各种运行方式下各数据域的概率分布;否则,给出各数据域的概率分布。判断是否需要强化测试某些功能。

(4)整理概率分布的信息将这些信息编码送入数据库。

2.1.2制订测试计划

本阶段的目标是:

(1)根据前一阶段整理的概率分布信息生成相对应的测试实例集,并计算出每一测试实例预期的软件输出结果。本阶段需要注意:在按概率分布随机选择生成测试实例的同时,要保证测试的覆盖面。

(2)编写测试计划,确定测试顺序,分配测试资源。由于本阶段前一部分的工作需要考虑大量的信息和数据,因此需要一个软件支持工具,建立数据库,并产生测试实例。另外,有时预测软件输出结果也需要大量的计算,有些复杂的软件甚至要用到仿真器模拟输出结果。总之,具体实施与被测应用软件的实际功能类型有关。

2.1.

3.测试

本阶段进行软件测试。需注意的是被测软件的测试环境(包括硬件配置和软件支撑环境)应和预期的实际使用环境尽可能一致,对某些环境要求比较严格的软件(如嵌入式软件)则应完全一致。测试时按测试计划和顺序对每一个测试实例进行测试,判断软件输出是否符合预期结果。测试时应记录测试结果、运行时间和判断结果。如果软件失效,那么还应记录失效现象和时间,以备以后核对。

2.1.4编写测试报告

按软件可靠性估计的要求整理测试记录,并将结果写成报告。软件可靠性测试的关键在于:对需求、输入、数据域的识别及相关概率分布的确定。按照概率

分布随机生成测试实例,并确定测试顺序。

2.2安全测试

2.2.1.由来

软件可靠性是软件质量指标体系中最重要的质量指标之一,软件可靠性指标的高低,决定了软件是否能稳定、可靠性地工作。软件中的错误是在软件的开发过程中,因为人的错误而引入到软件中的,而且这种错误的出现是不可避免的。经过可靠性测试的软件系统可以大大降低因软件系统的实效而造成的损失。但是软件可靠性测试也不是万能的,它可以有效降低软件系统实效的可能,但是不能将软件系统中存在的错误都排除(实际上在可预见的未来也不可能把软件中的所有错误都排除)。

对软件进行安全测试是软件测试的重要研究内容。软件安全测试是保证软件能够安全使用的最主要的手段,如何进行高效的安全测试成为业界关注的话题。多年的安全测试经验告诉我们,做好软件安全测试的必要条件是:一是充分了解软件安全漏洞,二是拥有高效的软件安全测试技术和测试工具。

2.2.2.软件的安全测试方法

(1)形式化安全测试。模型检测用状态迁移系统S描述软件的行为,用时序逻辑、计算树逻辑或演算公式F表示软件执行必须满足的性质,通过自动搜索S中不满足公式F的状态来发现软件中的漏洞。

(2)基于模型的安全功能测试。基于模型的测试方法是对软件的行为和结构进行建模,生成测试模型,由测试模型生成测试用例.常用的软件测试模型有有限状态机、UML模型、马尔可夫链等。

(3)语法测试。语法测试是根据被测软件的功能接口的语法生成测试输入,检测被测软件对各类输入的响应。接口可以有多种类型,命令行、文件、环境变量、套接字等。语法测试基于这样一种思想,软件的接口或明确或隐含规定了输入的语法。语法定义了软件接受的输入数据的类型、格式。语法定义可采用BNF 或正则表达式。语法测试的步骤是识别被测软件接口的语言,定义语言的语法,根据语法生成测试用例并执行测试。生成的测试输入应当包含各类语法错误,符合语法的正确输入。不符合语法的畸形输入等。通过察看被测软件对各类输入的处理情况,确定被测软件是否存在安全缺陷。语法测试适用于被测软件有较明确的接口语法,易于表达语法并生成测试输入的情况。语法测试结合故障注入技术可得到更好的测试效果。

(4)模糊测试。模糊测试(Fuzz Testing)是一种发现安全漏洞的有效的测试方法,在安全性测试中越来越受到重视。模糊测试将随机的坏数据插入程序,观察程序是否能容忍杂乱输入。模糊测试是不合逻辑的,只是产生杂乱数据攻击程序。采用模糊测试攻击应用程序可发现其他采用逻辑思维来测试很难发现的安全缺陷。

(5)基于属性的测试。相关报道描述了基于属性的测试方法,采用TASPEC语言对软件的安全属性进行描述生成安全属性规格说明,利用程序切片技术抽取与这个安全属性相关的代码,测试这部分代码是否违反安全属性规格说明。基于属性的测试有针对性的测试目标软件的特定安全属性,可满足安全属性的分类和优先级排序要求,且部分与具体软件无关的属性规格说明是可重用的。

3.软件可靠性研究成功应用的实例

美国AT&T公司的国际DEFINITYR程控交换机部在系统软件开发过程中应用了软

件可靠性工程,相对于以前发行的主要软件版本,产品的质量提高是惊人的:

(1)用户反映的问题下降了10倍;

(2)项目维护费用下降了10倍;

(3)系统测试件的间隔缩短了2倍;

(4)引入新产品的间隔缩短了30%。

而且,在投入运行的前两年,从未发生严重影响业务的机器中断,客户满意程度大为提高。具体分析原因,有以下两点:

(1)把可靠性作为确定是否发行的标准,可避免用户在使用中反映过多问题和进行相应的维护工作。

(2)采用“操作概图驱动”的测试方法,提高了测试效率;20%的操作覆盖了95%的应用,20%的错误导致了95%的实效;先测试20%的使用最频繁的操作可以加速可靠性的提高。

4.结语

软件的可靠性中正越来越引起软件研发部门的重视,但因为这是一门新兴的学科,对于提高软件质量,国内外还未能从软件可靠性工程的角度总结出一套行之有效的管理方法。

软件可靠性工程是一项涉及面很广的系统工程,应加强这项技术的研究力度。尤其要结合具体项目进行课题研究,使软件的开发过程同时也是软件可靠性工程的实施过程。使自发的可靠性工作成为有计划、有组织和有目标的研究工作。相信经过不断的探索和实践,软件可靠性工程会象硬件可靠性工程那样走向成熟,它的应用将对提高我国软件开发的可靠性起到积极的推动作用。

参考文献:

[1]郑人杰,殷人昆,陶永雷.实用软件工程[M].北京:清华大学出版社. 第10章软件质量保证10.8软件可靠性-10.10软件容错技术

[2]何国伟.软件可靠性[M].北京:国防工业出版社,1998.第二章.软件工程 2.5软件测试-3.1.2软件可靠性和维护性

[3]朱鸿,金凌紫.软件质量保证与测试[M].北京:科学出版社,1997. 2.1软件质量-2.2软件质量标准

网络系统可靠性研究现状与展望资料

网络系统可靠性研究 现状与展望 姓名:杨玉 学校:潍坊学院 院系:数学与信息科学学院 学号:10051140234 指导老师:蔡建生 专业:数学与应用数学 班级:2010级二班

一、摘要 伴随着人类社会的网络化进程,人类赖以生存的网络系统规模越来越庞大、结构越来越复杂,这导致网络系统可靠性问题越来越严峻。本文首先探讨了网络系统可靠性的发展历程、概念与特点,进而从度量参数、建模、分析、优化四个方面系统综述了网络系统可靠性的研究现状,最后对网络系统可靠性研究未来的发展进行了展望。 二、关键词:可靠性;网络系统;综述;现状;展望 三、引言 21 世纪以来,以信息技术的飞速发展为基础,人类社会加快了网络化进程。交通网络、通信网络、电力网络、物流网络……可以说,“我们被网络包围着”,几乎所有的复杂系统都可以抽象成网络模型,这些网络往往有着大量的节点,节点之间有着复杂的连接关系。自从小世界效应[1]和无标度特性[2]发现以来,复杂网络的研究在过去10 年得到了迅速发展,其研究者来自图论、统计物理、计算机、管理学、社会学以及生物学等各个不同领域,仅发表在《Nature》和《Science》上的相关论文就达百篇。对复杂网络系统结构、功能、动力学行为的深入探索、科学理解以及可能的应用,已成为多个学科领域共同关注的前沿热点[3-14]。 随着复杂网络研究的兴起,作为复杂网络最重要的研究问题之一,网络系统可靠性研究的重大理论意义和应用价值也日益凸显出来[15, 16]。人们开始关注:这些复杂的网络系统到底有多可靠?2003 年8 月美加大停电事故导致美国的8 个州和加拿大的2 个省发生大规模停电,约5000 万居民受到影响,损失负荷量61800MW,经济损失约300 亿美元;2005 年12 月台湾海峡地震造成多条国际海底通信光缆发生中断,导致整个亚太地区的互联网服务几近瘫痪,中国大陆至台湾地区、美国、欧洲等方向国际港澳台通信线路受此影响亦大量中断;2008 年1 月,南方冰雪灾害导致我国十余个省市交通瘫痪、电力中断、供水停止、燃料告急、食物紧张……这些我们赖以生存的网络系统规模越来越庞大,结构越来越复杂,但越来越频繁发生的事故也将一系列严峻的问题摆在我们面前:一些微不足道的事故隐患是否会导致整个网络系统的崩溃?在发生严重自然灾

软件可靠性与安全性分析、评估方法及建议

软件可靠性与安全性分析、评估方法及建议 一、背景介绍 随着产品技术的发展及数字化技术的应用,软件在产品中所占的比重越来越大,其规模和复杂性急剧增加,对产品的可靠性、安全性工作提出了严峻的考验。为保证软件可靠性,需要对软件进行可靠性测试和评估工作,从而尽早发现并改进软件中影响产品质量的缺陷,有效提高软件可靠性。为保障软件安全性,需要对软件进行安全性分析与验证工作。 目前,随着GJB Z 161-2012 军用软件可靠性评估指南、GJB 900A-2012 装备安全性工作通用要求、GJB 102A-2012军用软件安全性设计指南、ARP4761与民用机载系统安全性评估流程及DO-178B/C机载系统合格审定过程中的软件考虑等标准的颁布实施,以及空军航定〔2012〕4号《航空军用软件定型测评进入条件评估准则》中明确提出关键软件在进入定型测评前必须具备《软件失效风险分析报告》;空军装型〔2010〕131号《空军重点型号软件工程化要求》中也明确提出在软件研制阶段中,必须要开展软件安全性分析与验证工作等规定。美国在70年代研制F/A-18飞机期间首次引入软件安全性技术。在研制F-22和F-35飞机时,则明确要求按照MIL-STD-882和DO-178B开展机载软件安全性工作。在民机领域,波音和空客均严格按照ARP-4761及DO-178B/C标准开展了软件安全性分析与验证,并作为适航审定的核心要素。在高铁、核工业、汽车、医疗等领域,同样要求按照IEC 61508、EN50128、IEC60880、IEC 61513、ISO 14971等标准,对构建高安全性软件做出严格规定。 从上述可以看出,当前世界各国对于软件产品的可靠性评估、安全性分析验

软件测试在软件可靠性与安全性方面的重要意义

软件测试在软件可靠性与安全性方面的重要意义 目录 引言 第一章、软件测试的基本概述 1.1 软件测试的概念 1.2 软件测试历史 1.3 软件测试的挑战性 1.4 不进行测试的后果 1.5 测试——底线 第二章、软件测试技术分类 2.1 分类 2.2 静态测试 2.2.1源程序静态分析 2.2.2人工测试 2.3动态测试 2.3.1白盒测试 2.3.2白盒测试与调试的异同 2.3.3黑盒测试 2.3.4黑盒测试和白盒测试的异同 2.3.5 白盒测试和黑盒测试的比较 2.4测试方法的选择

第三章、软件测试的规范 3.1软件测试流程 3.1.1 软件测试流程图 3.1.2 .软件测试流程细则 3.1.3软件测试注意事项 3.2 软件测试的10大原则 3.3 软件测试的10个最佳实践 第四章、软件的缺陷 4.1 软件缺陷分类 4.2 产生软件缺陷的原因 4.3 软件测试著名失败案例 第五章、软件测试的重要性(结论) 摘要 软件从它诞生之日起,就受到“虫子”折磨。所谓的“虫子”,是指寄生在软件中的故障,它具有巧妙的隐身功能,能够在关键的场合突然现身。而软件测试就是检测软件中是否有所谓的“虫子”,从而保证新开发的软件的质量。 当一个软件推向市场时,客户最关心的是它的质量。可以这么说,一个软件开发得是否成功完全在于客户对它的满意度。所以,软件测试在软件开发中扮演了极其重要的角色,具有画龙点睛的作用。而软件测试的分类很多,其研究也是一项繁重的任务。 关键词:软件测试重要性错误 论文正文 引言: 随着软件行业在我国的发展,软件质量也越来越受到人们的关注。因此,专业人士也开始转向软件测试这一环节。尽管如此,我国从事这方面工作的人才还是供不应求。所以,我们从事计算机专业的人员都非常关注这方面的发展,希望越来越多的从事计算机专业的大学生在选择工作时能够从事软件测试。这样就能使我国软件开发行业的发展速度迅速提高,也会使我国在国际IT行业中的地位

软件可靠性技术发展与趋势分析

软件可靠性技术发展及趋势分析 1引言 1)概念 软件可靠性指软件在规定的条件下、规定的时间内完成规定的功能的能力。 安全性是指避免危险条件发生,保证己方人员、设施、财产、环境等免于遭受灾难事故或重大损失。安全性指的是系统安全性。一个单独的软件本身并不存在安全性问题。只有当软件与硬件相互作用可能导致人员的生命危险、或系统崩溃、或造成不可接受的资源损失时,才涉及到软件安全性问题。由于操作人员的错误、硬件故障、接口问题、软件错误或系统设计缺陷等很多原因都可能影响系统整体功能的执行,导致系统进入危险的状态,故系统安全性工作自顶至下涉及到系统的各个层次和各个环节,而软件安全性工作是系统安全性工作中的关键环节之一。 因此,软件可靠性技术解决的是如何减少软件失效的问题,而软件安全性解决的是如何避免或减少与软件相关的危险条件的发生。二者涉及的范畴有交又,但不完全相同。软件产生失效的前提是软件存在设计缺陷,但只有外部输入导致软件执行到有缺陷的路径时才会产生失效。因此,软件可靠性关注全部与软件失效相关的设计缺陷,以及导致缺陷发生的外部条件。由于只有部分软件失效可能导致系统进

入危险状态,故软件安全性只关注可能导致危险条件发生的失效。以及与该类失效相关的设计缺陷和外部输入条件。 硬件的失效,操作人员的错误等也可能影响软件的正常运行,从而导致系统进入危险的状态,因此软件安全性设计时必须对这种危险情况进行分析,井在设计时加以考虑。而软件可靠性仅针对系统要求和约束进行设计,考虑常规的容错需求,井不需要进行专门的危险分析。在复杂的系统运行条件下,有时软件、硬件均未失效,但软硬件的交互 作用在某种特殊条件下仍会导致系统进入危险的状态,这种情况是软件安全性设计考虑的重点之一,但软件可靠性并不考虑这类情况。2)技术发展背景 计算机应用范围快速扩展导致研制系统的复杂性越来越高。软硬件密切耦合,且软件的规模,复杂度及其在整个系统中的功能比重急剧上升,由最初的20%左右激增到80%以上。伴随着硬件可靠性的提高,软件的可靠性与安全性问题日益突出。 在军事、航空航天、医疗等领域,核心控制软件的失效可能造成巨大的损失甚至威胁人的生命。1985年6月至1987年1月,Therac-25治疗机发生6起超大剂量辐射事故,其中3起导致病人死亡。1991年海湾战争。爱国者导弹在拦截飞毛腿导弹中几次拦截失败,其直接原因为软件系统未能及时消除计时累计误差。1996年阿里亚娜5型运载火箭由于控制软件数据转换溢出起飞40秒后爆炸,造成经济损

系统可靠性建模与预计

系统可靠性建模与预计某型欠压保护电路的建模

一.课程设计目标 1.复习可靠性建模和预计的理论方法; 2.基本掌握工程实例可靠性建模和预计过程; 3.明白任务可靠性建模与任务之间的相关性; 二.课程设计内容 1.课程设计原理: 某型电源的欠压保护电路 图1 欠压保护电路 电路原理: a.当该型电源电压正常时,系统电源电压信号Vi较高,二极管P2截止,VB > VC,运放Y输出为高电平,晶体管T导通,继电器J吸合,V0为低电平; b.当该型电源电压欠压时,系统电源电压信号Vi较低,相应的二极管P2导通,将B点电位箝位,VB< VC,运放Y输出为低电平,晶体管T截止,继电器J释放,V0为高电平。 该型电源正常时,输出V0为低电平,继电器J吸合; 电源欠压时,输出V0为高电平,继电器J释放,引起整机跳闸。 2.课程设计内容: a.建立欠压保护电路的基本可靠性框图。

b.针对误动故障和拒动故障,任选一种情况作为任务故障进行分析,建立欠压保护电路的任务可靠性框图。 c.预计欠压保护电路的MTBF。 d.根据建立的任务可靠性框图预计欠压保护电路的MTBCF。 条件说明: 以电路图中的元器件作为基本单元(方框)建立基本可靠性框图。 以电路图中的元器件及其特定故障模式作为基本单元(方框)建立任务可靠性框图 三.课程设计 1.建立基本可靠性框图 基本可靠性框图:用以估计产品及其组成单元故障引起的维修及保障要求的可靠性模型。系统中任一单元(包括储备单元)发生故障后,都需要维修或更换,都会产生维修及保障要求,故而也可把它看作度量使用费用的一种模型。基本可靠性模型是一个全串联模型,即使存在冗余单元,也按串联处理。 由此可得欠压保护电路的基本可靠性框图如图所示: 图2 基本可靠性框图 2.建立任务可靠性框图 任务可靠性框图:用以估计产品在执行任务过程中完成规定功能的程度,描述完

软件测试毕业论文

软件测试毕业论文 The manuscript was revised on the evening of 2021

毕业论文 姓名:陈鑫 专业:.Net软件开发 年级:计软1302 学号: 指导教师:王梅 软件测试的概述及方法 、、 完成时间:2012年3月 摘要:从软件产业的发展初期到目前的大型软件开发过程,软件测试已成为其中一个不可分割的部分。随着软件规模的日益增大,软件测试问题也日益突出,现代社会对软件的依赖越来越强,高可信软件测试有着广泛的需求,基于缺陷模式的软件测试技术作为高可信软件的重要保证,可以大大降低软件的缺陷密度,提高软件的可信性。本文从测试的基本概念入手,深入剖析软件测试相关理论 关键字:软件测试、白盒测试、黑盒测试、类测试 目录 1 软件测试的发展史.......................................4 2软件测试的相关背景.. (5) 3 软件测试概述 (6) 软件测试的定义 (6) 软件测试的描述 (6)

软件测试的目的 (7) 软件测试的原则 (8) 4 软件测试的内容 (9) 验证(verification) (9) 确认(validation) (9) 5 软件测试的分类 (10) 常用分类 (10) 黑盒测试 (10) 白盒测试 (11) 静态测试 (14) 动态测试 (15) 6 软件测试中的类测试 (15) 面向对象软件的类测试概念.....................................................15.类测试技术.. (16) 7 参考文献 (17) 8 致谢 (18) 1软件测试的发展史 软件测试的发展历史:20世纪60年代(软件工程建立前),为表明程序正确而进行测试。. 1972年在北卡罗来纳大学举行了首届软件测试正式会议。. 1975年John Good Enough和Susan Gerhart在IEEE上发表了《测试数据选择的原理》的文章,软件测试被确定为一种研究方向。. 1979年,Glenford Myers的《软件测试艺术》,对测试做了定义:测试是为发

软件测试与软件可靠性研究

0引言 软件可靠性是指软件在规定的条件下和规定的时间内,完成规定功能的能力,软件可靠性包含三个要素,即“规定的条件”、“规定的时间”、和“完成规定的功能”。“规定的条件”指软件的用法和软件的运行环境;“规定的时间”指软件的工作周期;“完成规定功能”指软件不出现失效。 本文对软件测试和软件可靠性进行了论述,研究了如何将测试过程中产生的数据进行软件可靠性估计,从而为正确评价软件质量提供了一个方法。 1软件测试 软件测试在软件生存期开发阶段中占 有突出的地位,它是保证软件可靠性的重要手段,其基本任务是尽可能多的发现软件中的错误,排除软件缺陷,提高软件可靠性。 软件可靠性测试中最关键的三个环节是: 1)根据用户实际使用软件的方式,构造软件运行剖面,生成测试用例; 2)开发软件可靠性测试的环境,使被测软件能在该环境中得以测试; 3)对测试结果进行分析,并作出软件可靠性的预计。 软件的可靠性测试过程完整的测试过程包括测试前的检查、设计测试用例、测试实施、可靠性数据收集和编写测试报告5个步骤,其中最重要的是设计测试用例和可靠性数据收集。 1.1软件测试前的检查测试前的检查:在进行应用软件的可靠性测试前有必要检查软件需求与研制任务书是否一致,检查所交付的程序和数据以及相应的软件支持环境是否符合要求,检查文档与程序的一致性,检查软件研制过程中形成的文档是否齐全、文档的准确性和完整性以及是否通过了有关评审。 1.2设计测试用例在软件测试过程中,测试用例的生成是软件测试的关键和难点,直接影响着软件测试的有效性。测试用例是按一定顺序 软件测试与软件可靠性研究 张海锋 霍永华 中国电子科技集团公司第五十四研究所 河北石家庄 050081 执行的与测试目标相关的一系列测试,是测试数据以及与之相关的测试规程的一个特定集合。测试用例设计将产生许多测试所包括的输入值、期望输出以及其它任何运行测试的有关信息(例如环境要求)。 如果测试用例设计得好,不但可以在较短的时间内,测出较多的软件错误,也可以为修改软件错误提供时间。测试用例的选择既要有一般情况,也应有极限情况以及最大和最小的边界值情况。因为测试的目的是暴露应用软件中隐藏的缺陷,所以在设计选取测试用例和数据时要考虑那些易于发现缺陷的测试用例和数据,结合复杂的运行环境,在所有可能的输入条件和输出条件中确定测试数据,来检查应用软件是否都能产生正确的输出。 1.3测试实施 测试实施做好上述准备工作后,就可以实施测试了。研制方交付的任何软件文档中与可靠性质量特性有关的部分,包括产品说明书、用户文档、程序以及数据都应当按照需求说明和质量需求进行测试。在项目合同、需求说明书和用户文档中规定的所有配置情况下,程序和数据都必须进行测试。 在测试中,可以考虑进行“强化输入”,即输入比正常输入更恶劣(合理程度的恶劣)的输入。如果软件在强化输入下可靠,只能说明比正规输入下可靠得多。对需要进行大量的长期的运算试验,如连续运行108h 允许出现1次失效的测试,为获得更多的可靠性数据,我们可以采用多台计算机、多线程同时运行软件,以增加累计运行时间。 1.4可靠性数据收集 软件可靠性数据是可靠性评估的基础。应该建立软件错误报告、分析与纠正措施系统。按照相关标准的要求,制定和实施软件错误报告和可靠性数据收集、保存、分析和处理的规程,完整、准确地记录软件测试阶段的软件错误报告和收集可靠性数据。用时间定义的软件可靠性数据可以分为4类: 1)失效时间数据:记录发生一次失效所累积经历的时间 2)失效间隔时间数据:记录本次失效与上一次失效的间隔时间 3)分组数据:记录某个时间区内发生了多少次失效 4)分组时间内的累积失效数:记录某个区间内的累积失效数。 这4类数据可以相互转化。 将收集的软件可靠性数据用于软件可靠性模型可以对软件可靠性进行估计。 2软件可靠性模型 软件可靠性模型是随机过程的一种 表示,通过这一表示,可以将软件可靠性或与软件可靠性直接相关的量, 如 或表示成时间及过程的函数。一个软件可靠性模型通常由模型假设、性能度量、数据要求、参数估计方法组成。将软件 测试中收集到的可靠性数据带入软件可靠性模型 ( 或表示成时间及过程的函数) 可以对软件可靠性进行估计。 的执行时间模型,属于随机过 程模型,模型形式为: 假设程序内初始错误数为常数,n 为排除了的错误数,则程序中残存的错误数为: (1) 故障率函数 应于残留错误数成正比,则有: (2) 其中为线性执行频度,为错误暴露系数,则有: (3) 因 随增大,则为分段常数,逐渐减小,则错误修正率为: (4)由初始条件:,于是错误数为: (5) (6)于是软件的可靠度指标为:(7)在初始测试时,, 则,代入化简 (8)将代入 得: (9) 用以估算现时的值,并将它与目 标的平均无故障工作时间比较,如达到或超过,则表示测试已达到目标,测试于是就可以停止,否则测试继续进行。对于的最大似然估计,为达到由用户规定的目标值,所要求的执行时间增量: (10) 对于 和的估计,采用最大似 然估计法得: (11) (12) 其中 为第 次与第次的故障间隔时间,为最后一次的测试时刻,为次测试故障数。 3软件测试与可靠性模型关系 对于同一组软件测试所得的失效数 据,不同的软件可靠性模型会给出不同的软件可靠性估计,因此有必要对软件可靠性模型进行组合。将模型的结果进行线性组合,即使是以非常简单的形式,也会得到比单个模型更精确的测量结果。 构造组合模型的基本策略是:1) 选定一组基本模型。选择软件实际运行条件与所选模型假设最接近的模型; 2) 将每个基模型分别应用于数据;3) 应用所选择的评价规则为每个基模型加权,构成用以最后预测的组合模型。权值可以静态或动态地确定。一般,这种方案可以表达为如下混合分布形式: (13) 式(13) 中表示基模型个数,为 给定-1个失效观测数据的情况下, 第

基于云计算的软件测试

基于云计算的软件测试 【摘要】云计算凭借其在资源呈现、使用、管理以及调度等方面的优势,已经逐渐成为实现IT各领域跨越式发展的重点推动力。而在软件测试方面,也诞生了一种全新的基于云计算平台的软件测试方法。本文分析了云计算及云测试的服务流程及特点,在进行基于云计算的软件测试现状及存在的问题的基础上,分析了在云计算时代软件测试的策略。 【关键词】云计算;软件测试 引言 在软件行业高速发展的今天,如何保质保量的完成软件的开发、测试、实施,如何做到降低人力成本,缩短测试周期,如何做到以最少的资金做到更好的软件产品,这对任何一个软件行业的公司企业来说都是需要考虑的重要问题。劳动密集型的传统手工测试,以及具有鲜明资源低效率利用和高资金投入特点的自动化测试逐渐无法满足人们对软件测试的需求。基于云计算服务的软件测试,企业只需付给云测试提供商少量的服务费用便可以根据自己的需要获取相应的测试服务,而软件测试的繁琐过程、软件测试所需要的软硬件设备投入、混乱的测试资源管理、随时面对的测试机崩溃、问题发生环境的难以重现、压力测试所需的强大的计算

能力等等诸多棘手问题都不需要考虑。因此,基于云计算的应用软件测试技术的研究逐步成为现在软件测试领域研究的热点。 一、云计算及云测试 1.云计算 狭义的云计算是指通过网络以按需、易扩展的方式获得所需IT基础设施的交付和使用模式。而广义的云计算是指服务的交付和使用模式,通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是IT基础设施、软件、互联网应用相关的,也可以是任意其他的服务。 2.云测试概念 所谓云测试即为基于云计算技术的软件测试方式,是一种新型的测试方案。由服务商提供多种平台,多种浏览器的平台,一般的用户在本地把自动化测试脚本编写好,然后上传到他们网站,然后就可以在他们的平台上运行脚本了。 3.云测试中涉及的云计算技术 在云测试中涉及到多种云计算技术,比较常用到的技术有: (1)虚拟化技术。目前在云计算中普遍使用KLVM、VMware Sphere和Xen三种虚拟化技术,虚拟化技术可以将信息资源的逻辑抽象和资源的统一表示实现,它可以将计算机资源分割为若干个操作环境或者整合成一个操作环境。并

软件可靠性设计与分析

软件可靠性分析与设计 软件可靠性分析与设计 软件可靠性分析与设计的原因?软件在使用中发生失效(不可靠会导致任务的失败,甚至导致灾难性的后果。因此,应在软件设计过程中,对可能发生的失效进行分析,采取必要的措施避免将引起失效的缺陷引入软件,为失效纠正措施的制定提供依据,同时为避免类似问题的发生提供借鉴。 ?这些工作将会大大提高使用中软件的可靠 性,减少由于软件失效带来的各种损失。 Myers 设计原则 Myers 专家提出了在可靠性设计中必须遵循的两个原则: ?控制程序的复杂程度

–使系统中的各个模块具有最大的独立性 –使程序具有合理的层次结构 –当模块或单元之间的相互作用无法避免时,务必使其联系尽量简单, 以防止在模块和单元之间产生未知的边际效应 ?是与用户保持紧密联系 软件可靠性设计 ?软件可靠性设计的实质是在常规的软件设计中,应用各种必须的 方法和技术,使程序设计在兼顾用户的各种需求时, 全面满足软件的可靠性要求。 ?软件的可靠性设计应和软件的常规设计紧密地结合,贯穿于常规 设计过程的始终。?这里所指的设计是广义的设计, 它包括了从需求分析开始, 直至实现的全过程。 软件可靠性设计的四种类型

软件避错设计 ?避错设计是使软件产品在设计过程中,不发生错误或少发生错误的一种设计方法。的设计原则是控制和减少程序的复杂性。 ?体现了以预防为主的思想,软件可靠性设计的首要方法 ?各个阶段都要进行避错 ?从开发方法、工具等多处着手 –避免需求错误 ?深入研究用户的需求(用户申明的和未申明的 ?用户早期介入, 如采用原型技术 –选择好的开发方法

?结构化方法:包括分析、设计、实现 ?面向对象的方法:包括分析、设计、实现 ?基于部件的开发方法(COMPONENT BASED ?快速原型法 软件避错设计准则 ? (1模块化与模块独立 –假设函数C(X定义了问题X 的复杂性, 函数E(X定义了求解问题X 需要花费的工作量(按时间计,对于问题P1和问题P2, 如果C(P1>C(P2,则有 E(P1> E(P2。 –人类求解问题的实践同时又揭示了另一个有趣的性质:(P1+P2>C(P1 +C(P2 –由上面三个式子可得:E(P1+ P2> E(P1+E(P2?这个结论导致所谓的“分治法” ----将一个复杂问题分割成若干个可管理的小问题后更易于求解,模块化正是以此为据。 ?模块的独立程序可以由两个定性标准度量,这两个标准分别称为内聚和耦合。耦合衡量不同模块彼此间互相依赖的紧密程度。内聚衡量一个模块内部各个元素彼此结合的紧密程度。 软件避错设计准则 ? (2抽象和逐步求精 –抽象是抽出事物的本质特性而暂时不考虑它们的细节 ?举例

可靠性软件评估报告

可靠性软件评估报告 目前,关于可靠性分析方面的软件产品在市场上出现的越来越多,其中比较著名的有以下3种产品:英国的ISOGRAPH、广五所的CARMES和美国Relex。总体上来说,这些可靠性软件都是基于相同的标准,因此它们的基本功能也都十分类似,那么如何才能分辨出它们之间谁优谁劣呢?根据可靠性软件的特点和我厂的实际情况,我认为应主要从软件的稳定性、易用性和工程实用性三个方面进行考虑,现从这几个方面对上述软件进行一个简单的论证,具体内容如下。 稳定性 要衡量一个可靠性软件的好坏,首先是要看该软件的运行是否稳定。对一个可靠性软件来说,产品的稳定性十分重要。一个没有经过充分测试、自身的兼容性不好、软件BUG很多、经常死机的软件,用户肯定是不能接受的。当然,评价一个可靠性分析软件是否具有良好的稳定性,其最好的证明就是该产品的用户量和发展历史。 ISOGRAPH可靠性分析软件已将近有20年的发展历史,目前全球已有7000多个用户,遍布航空、航天、铁路、电子、国防、能源、通讯、石油化工、汽车等众多行业以及多所大学,其产品的每一个模块都已经过了isograph的工程师和广大用户的充分测试,因而其产品的稳定性是毋庸置疑的。而广五所的CARMES和美国Relex软件相对来说,其用户量比较少,而且其产品的每一个模块的发布时间都比isograph软件的相应模块晚得多,特别是一些十分重要的模块。 例如,isograph的故障树和事件树分析模块FaultTree+是一个非常成熟的产品,它的发展历史已经有15年了。Markov模块和Weibull模块也具有多年的发展历史,这些模块目前已经拥有一个十分广泛的用户群,它们已经被Isograph的工程师和大量的客户广泛的测试过,产品的稳定性值得用户信赖。而Relex的故障树和事件树相对比较新,它大约在2000年被发布,而Markov模块和Weibull模块2002年才刚刚发布,这些模块还没有经过大量用户的实际使用测试,其功能的稳定性和工程实用性还有待于时间的考验。广五所的CARMES软件的相应模块的发布时间就更晚了,有些甚至还没有开发出来,而且其用户主要集中在国内,并没有经过国际社会的广泛认可。 易用性 对一个可靠性分析软件产品来说,其界面是否友好,使用是否方便也十分重要,这关系到工程师能否在短时间内熟悉该软件并马上投入实际工作使用,能否充分发挥其作用等一系列问题。一个学习十分困难、使用很不方便的软件,即使其功能十分强大,用户也不愿使用。 ISOGRAPH软件可以独立运行在Microsoft Windows 95/98/Me/2000/NT/XP平台及其网络环境,软件采用大家非常熟悉的Microsoft产品的特点,界面友好,十分容易学习和使用。该软件提供了多种编辑工具和图形交互工具,便于用户在不同的模块间随时察看数据和进行分析。你可以使用剪切、复制、粘贴等工具,或者直接用鼠标“托放”来快速的创建各种分析项目,你还可以将标准数据库文件,如Microsoft Access数据库、Excel电子表格以及各种格式的文本文件作为输入直接导入到isograph软件中,使项目的建立变得非常简单。另外,Isograph 各软件工具都提供了功能强大的图形、图表和报告生成器,可以用来生成符合专业设计要求的报告、图形和表格,并可直接应用到设计分析报告结果中。 ISOGRAPH软件的一个显著特性就是将各软件工具的功能、设计分析信息、分析流程等有机地集成在一起,其全部的分析模块可以在同一个集成界面下运行,这既可以保证用户分析项目的完整性,还可以使用户在不同的模块间共享所有的信息,不同模块间的数据可以实时链接,而且还可以相互转化。例如,你可以在预计模块和FMECA模块之间建立数据链接,当你修改预计模块中的数据时,FMECA模块中对应的数据会自动修改,这既可以节省

几种常见软件可靠性测试方法综述及应用对比(精)

几种常见软件可靠性测试方法综述及应用对比 上海交通大学陈晓芳 [摘要]软件可靠性测试是软件可靠性工程的一项重要工作内容,是满足软件可靠性要求、评价软件可靠性水平及验证软件产品是否达到可靠性要求的重要途径。本文探讨、研究了软件可靠性测试的基本概念,分析、对比了几种软件可靠性测试主要方法的优缺点。 [关键词]软件可靠性软件可靠性测试软件测试方法 引言 软件可靠性工程是指为了满足软件的可靠性要求而进行的一系列设计、分析、测试等工作。其中确定软件可靠性要求是软件可靠性工程中要解决的首要问题,软件可靠性测试是在软件生存周期的系统测试阶段提高软件可靠性水平的有效途径。各种测试方法、测试技术都能发现导致软件失效的软件中残存的缺陷,排除这些缺陷后,一般来讲一定会实现软件可靠性的增长,但是排除这些缺陷对可靠性的提高的作用却是不一样的。其中,软件可靠性测试能最有效地发现对可靠性影响大的缺陷,因此可以有效地提高软件的可靠性水平。 软件可靠性测试也是评估软件可靠性水平,验证软件产品是否达到软件可靠性要求的重要且有效的途径。 一、软件可靠性测试概念 “测试”一般是指“为了发现程序中的错误而执行程序的过程”。但是在不同的开发阶段、对于不同的人员,测试的意义、目的及其采用的方法是有差别的。在软件开发的测试阶段,测试的主要目的是开发人员通过运行程序来发现程序中存在的缺陷、错误。而在产品交付、验收阶段,测试主要用来验证软件产品是否达到用户的要求。或者说,对于开发人员,测试是发现缺陷的一种途径、手段,而对于用户,测试则是验收产品的一种手段。

二、软件测试方法 软件测试方法有以下几个主要概念:白盒测试、黑盒测试、灰盒测试。 白盒测试(W h ite-box testing或glass-box testing是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。 黑盒测试(B lack-box testing是通过使用整个软件或某种软件功能来严格地测试,而并没有通过检查程序的源代码或者很清楚地了解该软件或某种软件功能的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。通常测试人员在进行测试时不仅使用肯定出正确结果的输入数据,而且还会使用有挑战性的输入数据以及可能结果会出错的输入数据以便了解软件怎样处理各种类型的数据。 灰盒测试(Gray-box testing就像黑盒测试一样是通过用户界面测试,但是测试人员已经有所了解该软件或某种软件功能的源代码程序具体是怎样设计的,甚至于还读过部分源代码,因此测试人员可以有的放矢地进行某种确定的条件或功能的测试。这样做的意义在于:如果你知道产品内部的设计和透过用户界面对产品有深入了解,你就能够更有效和深入地从用户界面来测试它的各项性能。 1、白盒测试 白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。 白盒的测试用例需要做到: (1保证一个模块中的所有独立路径至少被使用一次; (2对所有逻辑值均需测试true和false;

软件测试毕业论文97040

毕业论文 姓名:陈鑫 专业:.Net软件开发年级:计软1302 学号:201317140212指导教师:王梅

软件测试的概述及方法 、、 完成时间:2012年3月 摘要:从软件产业的发展初期到目前的大型软件开发过程,软件测试已成为其中一个不可分割的部分。随着软件规模的日益增大,软件测试问题也日益突出,现代社会对软件的依赖越来越强,高可信软件测试有着广泛的需求,基于缺陷模式的软件测试技术作为高可信软件的重要保证,可以大大降低软件的缺陷密度,提高软件的可信性。本文从测试的基本概念入手,深入剖析软件测试相关理论 关键字:软件测试、白盒测试、黑盒测试、类测试 目录 1 软件测试的发展史.......................................4 2软件测试的相关背景.. (5)

3 软件测试概述 (6) 3.1软件测试的定义 (6) 3.2软件测试的描述 (6) 3.3软件测试的目的 (7) 3.4软件测试的原则 (8) 4 软件测试的内容 (9) 4.1验证(verification) (9) 4.2确认(validation) (9) 5 软件测试的分类 (10) 5.1 常用分类..........................................10错误!未定义书签。 5.2 黑盒测试 (10) 5.3白盒测试 (11) 5.4 静态测试 (14) 5.5动态测试 (15) 6 软件测试中的类测试 (15) 6.1面向对象软件的类测试概念.....................................................15 6.2.类测试技术.. (16) 7 参考文献 (17) 8 致谢 (18) 1软件测试的发展史

软件可靠性模型综述(完整资料).doc

【最新整理,下载后即可编辑】 软件可靠性模型综述 可靠性是衡量所有软件系统最重要的特征之一。不可靠的软件会让用户付出更多的时间和金钱, 也会使开发人员名誉扫地。IEEE 把软件可靠性定义为在规定条件下, 在规定时间内, 软件不发生失效的概率。该概率是软件输入和系统输出的函数, 也是软件中存在故障的函数, 输入将确定是否会遇到所存在的故障。 软件可靠性模型,对于软件可靠性的评估起着核心作用,从而对软件质量的保证有着重要的意义。一般说来,一个好的软件可靠性模型可以增加关于开发项目的效率,并对了解软件开发过程提供了一个共同的工作基础,同时也增加了管理的透明度。因此,对于如今发展迅速的软件产业,在开发项目中应用一个好的软件可靠性模型作出必要的预测,花费极少的项目资源产生好的效益,对于企业的发展有一定的意义。 1软件失效过程 1.1软件失效的定义及机理 当软件发生失效时,说明该软件不可靠,发生的失效数越多,发生失效的时间间隔越短,则该软件越不可靠。软件失效的机理如下图所示:

1)软件错误(Software error):指在开发人员在软件开发过程中出现的失误,疏忽和错误,包括启动错、输入范围错、算法错和边界错等。 2)软件缺陷(Software defect):指代码中存在能引起软件故障的编码,软件缺陷是静态存在的,只要不修改程序就一直留在程序当中。如不正确的功能需求,遗漏的性能需求等。 3)软件故障(Software fault):指软件在运行期间发生的一种不可接受的内部状态,是软件缺陷被激活后的动态表现形式。 4)软件失效(Software failure):指程序的运行偏离了需求,软件执行遇到软件中缺陷可能导致软件的失效。如死机、错误的输出结果、没有在规定的时间内响应等。 从软件可靠性的定义可以知道,软件可靠性是用概率度量的,那么软件失效的发生是一个随机的过程。在使用一个程序时,在其他条件保持一致的前提下,有时候相同的输入数据会得到不同的输出结果。因此,在实际运行软件时,何时遇到程序中的缺陷导致软件失效呈现出随机性和不稳定性。 所有的软件失效都是由于软件中的故障引起的,而软件故障是一种人为的错误,是软件缺陷在不断的测试和使用后才表现出来的,如果这些故障不能得到及时有效的处理,便不可避免的会

软件可靠性工程范文

软件可靠性工程 1.软件可靠性定义 1.1.广义 是指一切旨在避免、减少、处理、度量软件故障(错误、缺陷、失效)的分析、设计、测试等方法、技术和实践活动。于是有诸多相关术语,如软件可靠性度量、软件可靠性设计、软件可靠性建模、软件可靠性测试、软件可靠性管理等。 1.2.狭义 指软件无失效运行的定量度量,尤其是那些面向用户的定量度量。主要有: ?软件可靠度:表示软件在规定的运行环境中和规定的运行时间内无失效运行的机 会。软件无失效运行的机会多以概率度量,但也可以模糊数学中的可能性加以度量,有时也在数据域上将软件可靠度表示为软件成功执行一个回合的概率。 ?软件失效强度:其物理解释是单位时间内软件发生失效的机会。在概率范畴内,它 与软件可靠度有明确的数学关系(R(t)=1-F(t),R(t)为可靠度,F(t)为失效强度)。 ?软件平均失效时间(MTTF):表示软件投入运行到出现一个新失效的时间。 上述度量与硬件可靠性中的相应概念本质上是一致的。 “失效”是指程序的功能在某方面没有达到用户的需求。“没有像用户需求的那样工作”是一个很广的定义。因此,可靠性结合了与程序执行相关联的所有属性。例如,它包括正确性、安全性和可使用性的操作方面,以及对用户的友好性。请注意,安全性实际上是软件可靠性的一个特殊子类。 可靠性不包括可移植性、可修改性或文档的可理解性。

可靠性是面向用户的而不是面向开发人员的。可靠性与操作有关,而不是与程序的设计有关,因此可靠性是动态的,而不是静态的。可靠性考虑问题出现的频率,直接与操作经验和在经验中错误的影响相关。因此,可以很容易地将可靠性与成本联系起来。可靠性很适合检查发展趋势的重要性、设定目标和预测什么时候可以达到目标。可靠性使人们可以使用同样的术语对硬件和软件的系统可靠性进行分析,而在真实系统中硬件和软件都同时存在。所以,可靠性度量比错误度量要有用得多。 2.软件可靠性工程的研究范围 软件可靠性工程涉及以下四方面活动和有关技术: 2.1.软件可靠性分析 进行软件可靠性的需求分析、指标分配、故障树分析、失效模式和影响分析、软件开发过程中有关软件可靠性的的特性分析、……等。 2.2.软件可靠性设计和实现 进行防错设计、容错设计、检错设计、纠错设计、故障恢复设计、软件可靠性增长、……等。 2.3.软件可靠性测量、测试和评估 在软件生存周期各阶段进行有关软件可靠性设计、制造和管理方面的属性测量,进行基于软件运行剖面的测试用例随机输入的软件测试、软件可靠性预计、软件可靠性估计、软件可靠性验证、……等。 2.4.软件可靠性管理 确定影响软件可靠性的因素,制定必要的设计和实现准则以及对软件开发各阶段软件可

对软件可靠性测试的认识

一、对软件可靠性测试的认识 1.有关术语 (1)软件可靠性在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故障。 (2)软件可靠性估计应用统计技术处理在系统测试和运行期间采集、观察到的失效数据,以评估该软件的可靠性。 (3)软件可靠性测试在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的功能测试。需要说明的是,"使用代表性"指的是在统计意义下该环境能反映出软件的使用环境特性。 2.软件可靠性测试的目的 软件可靠性测试的主要目的有: (1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。 (2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。 (3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。 3.软件可靠性测试的特点 软件可靠性测试不同于硬件可靠性测试,这主要是因为二者失效的原因不同。硬件失效一般是由于元器件的老化引起的,因此硬件可靠性测试强调随机选取多个相同的产品,统计它们的正常运行时间。正常运行的平均时间越长,则硬件就越可靠。软件失效是由设计缺陷造成的,软件的输入决定是否会遇到软件内部存在的故障。因此,使用同样一组输入反复测试软件并记录其失效数据是没有意义的。在软件没有改动的情况下,这种数据只是首次记录的不断重复,不能用来估计软件可靠性。软件可靠性测试强调按实际使用的概率分布随机选择输入,并强调测试需求的覆盖面。 软件可靠性测试也不同于一般的软件功能测试。相比之下,软件可靠性测试更强调测试输入与典型使用环境输入统计特性的一致,强调对功能、输入、数据域及其相关概率的先期识别。测试实例的采样策略也不同,软件可靠性测试必须按照使用的概率分布随机地选择测试实例,这样才能得到比较准确的可靠性估计,也有利于找出对软件可靠性影响较大的故障。 此外,软件可靠性测试过程中还要求比较准确地记录软件的运行时间,它的输入覆盖一般也要大于普通软件功能测试的要求。对一些特殊的软件,如容错软件、实时嵌入式软件等,进行软件可靠性测试时需要有多种测试环境。这是因为在使用环境下常常很难在软件中植入错误,以进行针对性的测试。 4.软件可靠性测试的效果 软件可靠性测试是软件可靠性保证过程中非常关键的一步。经过软件可靠性测试的软件并不能保证该软件中残存的错误数最小,但可以保证该软件的可靠性达到较高的要求。从工程的角度来看,一个软件的可靠性高不仅意味着该软件的失效率低,而且意味着一旦该软件失效,由此所造成的危害也小。一个大型的工程软件没有错误是不可能的,至少理论上还不能证明一个大型的工程软件能没有错误。因此,保证软件可靠性的关键不是确保软件没有错误,而是要确保软件的关键部分没有错误。更确切地说,是要确保软件中没有对可靠性影响较大的错误。这正是软件可靠性测试的目的之一。 软件可靠性测试的侧重点不同于一般的软件功能测试,其测试实例设计的出发点是寻找对可靠性影响较大的故障。因此,要达到同样的可靠性要求,可靠性测试比一般的功能测试更有效,所花的时间也更少。 另外,软件可靠性测试的环境是具有使用代表性的环境,这样,所获得的测试数据与软件的实际运行数据比较接近,可用于软件可靠性估计。 总之,软件可靠性测试比一般的功能测试更加经济和有效,它可以代替一般的功能测试,而一般的软件功能测试却不能代替软件可靠性测试,而且一般功能测试所得到的测试数据也不宜用于软件可靠性估计。 二、软件可靠性测试中需注意的问题 软件可靠性测试一般可分为四个阶段:制定测试方案,制定测试计划,进行测试并记录测试结果,编写测试

可靠性建模资料整理

软件可靠性建模 1模型概述 1.1软件可靠性的定义 1983年美国IEEE计算机学会对“软件可靠性”作出了明确定义,此后该定义被美国标准化研究所接受为国家标准,1989年我国也接受该定义为国家标准。该定义包括两方面的含义: (1)在规定的条件下,在规定的时间内,软件不引起系统失效的概率; (2)在规定的时间周期内,在所述条件下程序执行所要求的功能的能力; 其中的概率是系统输入和系统使用的函数,也是软件中存在的故障的函数,系统输入将确定是否会遇到已存在的故障(如果故障存在的话)。 软件失效的根本原因在于程序中存在着缺陷和错误,软件失效的产生与软件本身特性、人为因素、软件工程管理都密切相关。影响软件可靠性的主要因素有软件自身特性、人为因素、软件工程管理等,这些因素具体还可分为环境因素、软件是否严密、软件复杂程度、软件是否易于用户理解、软件测试、软件的排错与纠正以及软件可靠性工程技术研究水平与应用能力等诸多方面。 1.2软件可靠性建模思想 建立软件可靠性模型旨在根据软件可靠性相关测试数据,运用统计方法得出软件可靠性的预测值或估计值,下图给出了软件可靠性建模的基本思想。 图软件可靠性建模基本思想

从图中可以看出软件失效总体来说随着故障的检出和排除而逐渐降低,在任意给定的时间,能够观测到软件失效的历史。软件可靠性建模的目标如下:(1)预测软件系统达到预期目标所还需要的资源开销及测试时间;(2)预测测试结束后系统的期望可靠性。 1.3软件可靠性建模基本问题 软件可靠性建模需要考虑以下基本问题: (1)模型建立 模型建立指的是怎样去建立软件可靠性模型。一方面是考虑模型建立的角度,例如从时间域角度、数据域角度、将软件失效时刻作为建模对象,还可以将一定时间内软件故障数作为建模对象;另一方面是考虑运用的数学语言,例如概率语言。 (2)模型比较 在软件可靠性模型分类的基础上,对不同的模型分析比较,并对模型的有效性、适用性、简洁性等进行综合权衡,从而确定出模型的适用范围。 (3)模型应用 软件可靠性模型的应用需要从以下两方面考虑:一是给定了软件的开发计划,如何选择适当的模型;二是给定了软件可靠性模型,如何指导软件可靠性工程实践。 软件系统的失效历史可以通过对测试得到的失效数据分析获得,而实际情况中,人们最为关注的是软件未来的失效趋势。软件可靠性模型基本都是建立在一定的假设基础之上,所以,即使花费了大量的时间和精力对软件的可靠性进行预计,也只是一种预测,这种预测的不确定性是许多未知原因交互作用的结果,根据软件可靠性模型的预测只能以概率形式表示。 1.4软件可靠性模型的特点 (1)与使用的程序设计语言无关。软件可靠性的应用与选用什么程序设计语言来编写软件之间没有什么直接关系。但对于根据同一个规格说明书,不管你用什么程序设计语言软件来编写软件,同一个软件可靠性模型应给出同样的估测结果。 (2)与具体用到的软件开发方法无关。软件开发是一个十分复杂的过程,涉及到许多的人为因素,从而使得对软件的质量难以进行预测。为了保证预测的精度,不妨假设待估测的软件系统是用最坏的软件开发方法开发出来的。 (3)测试方法的选择问题。实际上是无法通过彻底的测试来获得完全可靠的软件,所以不得不采用有限的测试,那么目标就是用最少的测试以求最大限度的软件可靠性。

相关主题
文本预览
相关文档 最新文档