




已阅读5页,还剩60页未读, 继续免费阅读
(计算机科学与技术专业论文)基于uml的软件可靠性测试技术研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
望堕型垫盔兰旦茎竺坚兰堡笙茎 摘要 软件可靠性测试又称为软件统计测试,是软件可靠性工程的重要内容。它与 传统的软件测试不同,主要是基于统计理论,通过模拟软件的实际使用来实施测 试,然后根据数学和统计学模型对测试结果进行分析,获取软件的质量度量。 在软件可靠性测试中,首要而又重要的一步是获取软件的使用模型,它描述 了软件系统所有可能使用的总体及其发生概率。获得准确的使用模型关系到生成 的统计测试用例的正确性,进而影响到对可靠性评估的准确性。 随着统一建模语言( u n i f i e dm o d e l i n gl a n g u a g e , u m l ) 成为面向对象软件事实 上的标准建模语言,基于u m l 的软件开发过程和建模环境已被工业界广泛接受, 在高可靠软件开发中的应用也越来越多。因此,基于u m l 的软件可靠性测试成为 值得研究的内容。 论文研究了从u m l 模型出发构造软件i a r k o v 链使用模型的方法,主要包括: 普通软件m a r k o v 链使用模型的生成方法和分布式软件m a r k o v 链使用模型的生成 方法。在添加相应测试约束的基础上,分别给出了完整的算法,然后,均以实例 说明了算法的有效性。论文最后介绍了构造分布式软件m a r k o v 链使用模型的工具 d 0 j m 。 主题词:软件可靠性测试,统计测试,u m l ,m a r k o v 链使用模型,分布式软件 第i 页 望堕型垫奎兰坚茎竺坚兰垒笙塞 a b s t r a c t s o f t w a r er e l i a b i l i t yt e s t i n gw h i c hi ss oc a l l e ds t a t i s t i c a lt e s t i n gi sa l li m p o r t a n tp a r t o f t h es o f t w a r er e l i a b i l i t ye n g i n e e r i n g ,i ti sd i f f e r e n tf r o mt r a d i t i o n a ls o t ! t w a r et e s t i n ga n d i sb a s e do ns t a t i s t i c a lt h e o r y i tc a r r i e so u tt e s t i n gv i as i m u l a t i n gs o f t w a r ea c t u a l u s a g e ,a n dt h e na n a l y s e st h et e s tr e s u l t sa c c o r d i n gt ot h em a t h e m a t i c sa n ds t a f f s t i c a l m o d e l i nt h ep r o c e s so ft h es o f t w a r er e l i a b i l i t yt e s t i n g ,h o wt og e ts o t t w a r eu s a g em o d e l w h i c hd e s c r i b e sa l lp o s s i b l eu s a g ec o l l e c t i v i t ya n d p r o b a b i l i t yo ft h es o f t w a r ei sc h i e f a n dc r u c i a l d e r i v i n ge x a c tu s a g em o d e li sr e l a t e dt ot h ee o r r e c t i 0 1 1o ft h es t a t i s t i c a l t e s t i n gc a s ea n dt h er e l i a b i l i t ye v a l u a t i o n u n i f i e dm o d e l i n gl a n g u a g e ( u m l ) b e c o m e st ot h es t a n d a r dm o d e l i n gl a n g u a g eo f t h eo r i e n t e d - o b j e c ts o f t w a r e ,s os o f t w a r ed e v e l o p m e n tb a s e do nu m li sl a r g e l ya c c e p t e d b yi n d u s t r yr e p u b l i c a n d a p p l i e s i n h i 曲 r e l i a b l es o f t w a r em o r ea n d m o r e t b e r e f o r e ,s o t t w a r er e l i a b i l i t yt e s t t a gb a s e d o nu m li sw o r t ht os t u d y d i s s e r t a t i o np r e s e n t st h em e t h o d sw h i c hd e r i v e st h es o f t w a r em a r k o vc h a i n n s a g cm o d e l sf r o mu m lm o d e l s :g e n e r a ls o f t w a r em a r k o vc h a i nu s a g em o d e la n d d i s t r i b u t e ds o f t w a r em a r k o vc l l a i nu s a g em o d e l i tp r e s e n t s e o r r e s p o n d l yi n t e g r a t e d a l g o r i t h ma f t e ra d d i n gs o m ep r o p e rt e s t i n gr e s t r i c t i o n , a n da l s og i v e st h ee x a m p l et o e x p l a i nt h ev a l i d i t yo f t h ea l g o d t h m f i n a l l y , t h ed i s s e r t a t i o ni n t r o d u c e st h es u p p o r tt o o l d u 殁j mw h i c hi su s e dt og e tt h ed i s t r i b u t e ds o f t w a r em a r k o vc h a i nu s a g em o d e l k e yw o r d s : s o f t w a r er e l i a b i l i t yt e s t i n g ,s t a t i s t i c a lt e s t i n g ,u m l ,m a r k o v c h a i nu s a g em o d e l ,d i s t r i b u t e ds o f t w a r e 第i i 页 国防科技大学研究生院学位论文 表目录 表2 1 在不同输入序列长度下的输入序列种类数 表3 1s c s 的场景执行后置条件和执行概率。2 5 表3 2 各场景中消息的前置条件和后置条件2 6 表4 1t ra n s m i t 用例的场景约束:4 2 表4 2t r a n s m i t 用例m a r k o v 链使用模型的状态说明4 2 表5 1u m l 模型构造器实现类介绍4 9 表5 2 使用模型构造器实现类的介绍5 0 第1 l i 页 国防科技大学研究生院学位论文 图目录 图2 1 一个简单的使用模型 图3 ,ls c s 的用例图 图3 2s o s 用例的执行顺序关系。 图3 3i n i t i a l i z e 用例场景 图3 4m a n a g e 用例的场景集合 图3 5c n 姬c t 用例的场景集合 图3 6 t r a n s m r r 用例的场景集合 图3 7c l o s e 用例场景 图3 8c l o s e 场景对应的扩展序列图 2 3 2 3 2 4 :1 4 2 4 2 7 图3 9s c s 的m 埘( o v 链使用模型。2 7 图4 1 分布式系统结构的元模型。2 9 图4 2 一个分布式结构例子。3 0 图4 3 网络部署图3 0 图4 4s c s 的拓扑结构。4 0 图4 5s c s 的网络部署图4 0 图4 6n 认n s m r r 用例的场景集合4 1 图4 7 t r a n s m r r 用例的m a r k o v 链使用模型4 3 图5 1d u 2 u m 的工作流程图。4 5 图5 1e c l i p s e 的体系结构图4 5 图5 3d u 2 u m 的结构图 图5 4d u 2 u m 包图 图5 5d u 2 u m :用例执行前置条件编辑界面 4 7 4 8 图5 6d - u 2 u m :场景约束的编辑界面一5 1 图5 7d - u 2 u m :场景消息的编辑界面 图5 8d _ u 2 u m :用例执行关系编辑界面 图5 9d u 2 u m :使用模型显示界面 一5 2 5 2 第1 v 页 国防科技大学研究生院学位论文 算法目录 算法3 1 扩展序列图算法 算法3 | 2 从扩展序列图生成用例的m a r k o v 链使用模型。2 1 算法3 3 集成所有用例的使用模型获得软件系统的使用模型2 1 算法4 1 构造用例第一个场景的m a r k o v 链使用模型。3 6 算法4 - 2 消息发送时间约束处理过程 算法4 3 消息传输时间约束处理过程。3 7 第v 页 独创性声明 本人声明所呈交的学位论文是我本人在导师指导下进行的研究工作及取得的研 究成果尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已 经发表和撰写过的研究成果,也不包含为获得国防科学技术大学或其它教育机构的学 位或证书而使用过的材料与我一同工作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意 学位论文题目:基王坚坠数筮鲑互靠性趔达筮盔丑窒 学位论文作者签名:盔五垒 日期:加彩年1 2 - 月z ,日 学位论文版权使用授权书 本人完全了解国防科学技术大学有关保留,使用学位论文的规定本人授权国 防科学技术大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档,允 许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据库进行检索, 可以采用影印缩印或扫描等复制手段保存、汇编学位论文。 ( 保密学位论文在解密后适用本授权书。) 学位论文题目:基主婴j 的煞鲑互童性型这燕盔婴窒 学位论文作者签名:盔盘日期:勿菇年,2 ,月谚日 作者指导教师签名:i 堡l 。乞扣日期:汐。年1 2 月2 2 - 日作者指导教师签名:i 生l 乞:日期:汐。l 年1 2 月 日 国防科技大学研究生院学位论文 第一章绪论 1 1 课题研究背景 计算机软件从它5 0 多年前的平凡起步,已经发展成为现代社会中的关键一环, 影响着全球人类活动的各个领域。软件技术渗透到各种产品和服务中,成为贸易、 企业、政府和国防的主要能动主体。每天数以万亿的工作由软件来完成,从个人 计算机应用到大规模、全球联网的极其复杂的系统,诸如生产、信贷和金融服务、 通信、医疗服务、能源、交通、教育等经济部门及国防和政府部门无不依赖软件 实现其正常运作。可以毫不夸张地说,现代社会的进步完全地、不可逆转地依赖 于软件。 随着社会对软件的日益依赖,软件失效的风险也越来越大。在某些领域,如 果计算机软件系统经常失效,那么后果是不堪设想的。如航天、航空、武器装备、 工业控制、交通、金融和医疗等领域,由于其控制结构非常复杂,软件的失效往 往会危害人的生命健康或造成严重的财产损失,因此这类软件称为安全攸关软件 ( s a f e t y - c r i t i c a ls o r w a r e ) t l 】【2 】。由于安全攸关软件失效给人类造成极大生命、财产 损失的重大事件有:水手1 号发射失败( 1 9 6 2 ) 、三里岛核电站的核泄漏事故( 1 9 7 8 ) 、 首次航天飞机发射推迟( 1 9 8 1 ) 、美国长途电话瘫痪9 小时( 1 9 9 0 ) 、火星探测者计划 失败( 1 9 9 8 ) 。因此,安全攸关软件往往具有极高的质量要求,研究如何保证安全攸 关软件的质量是当前软件开发的重要内容。 软件可靠性工程为开发高可靠软件提供了贯穿软件开发全过程的工程化方 法,其中,软件可靠性测试是一个既重要又很难实施的环节。因此,研究有效的 软件可靠性测试方法对高可靠软件的开发具有重要意义。软件可靠性测试又称为 软件统计测试,作为高可靠软件测试的重要组成部分,成为软件质量保证的重要 方法之一t 3 j - 因为根据统计测试结果,可以估计和预测高可靠软件质量中最关键的 因素软件可靠性,所以软件统计测试得到了广泛的重视和比较深入的研究。 目前,软件可靠性测试是通过模拟软件的实际使用来指导测试过程。主要有 以j o l l nm u s a 为代表人物的基于操作剖面的测试方法和以h a r l a nm i l l s 等为代表 人物的基于使用模型的测试方法。前者通过开发系统操作剖面,生成测试用例, 进行可靠性测试和评估。后者利用描述了软件预期使用方式的m a r k o v 链使用模型 来产生测试用例,进而进行可靠性测试和评估。 近年来,在o m g 组织和各大i t 厂商的推动下,作为工业标准的统一建模语 言u m l 4 s 1 ( u n i f i e dm o d e l i n gl a n g u a g e ) 得到了极大发展。基于u m l 的设计和开发 第1 页 国防科技大学研究生院学位论文 过程受至u 了广泛的关注,u m l 已经成为面向对象建模的事实标准。u m l 定义了 丰富的图元,可以从不同视角和层次描述系统的静态结构和动态特性,方便对软 件使用特性的描述和系统建模。如果能从u m l 模型中导出使用模型,将极大地简 化统计测试的测试过程,提高测试效率。 在软件可靠性测试的工程实践中,需要解决的问题是,如何确定系统的操作 剖面、如何获得软件的使用模型。把软件分析、设计的u m l 模型信息用于软件使 用模型的构造是近年来软件可靠性测试技术研究的一个热点内容【6 】,其中涉及到诸 多的技术难点。目前,国内外在这方面的研究比较少,有美国田纳西大学的 j u m b l 7 和8 个欧洲工业厂商与大学合作开展的m a t e l o 项目 s l 。 1 2 1 软件可靠性测试介绍 1 2 软件可靠性测试 不同的软件测试类型具有不同的目的,归纳起来软件测试的目的有两种:一 是为了发现错误,称这种测试为软件正确性测试,如传统的黑盒测试、白盒测试 等都属于这类型的测试方法;另一目的是为了确保软件满足使用要求,称这种测 试为软件可靠性测试。 软件可靠性度量不准确是软件可靠性测评的重要问题,其根本原因在于软件 可靠性模型的假设与实际软件不符。为了简化模型的计算,在已提出的可靠性度 量模型中常假设在测试时,软件按预期的实际运行方式进行。但在实际测试时, 软件的使用方式可能与现场运行时有很大的不同。例如,在测试期间,对不常用 的功能( 如系统失效保护) 也要进行大量的测试,以确保软件在需要时能按要求正常 工作。可见,要想正确估计软件产品的可靠性,必须象在实际应用系统中一样测 试软件产品。只有通过某种方式近似的模拟软件真实的运行环境,在此环境下进 行系统测试,才能准确评价软件在实际运行中的可靠性。软件可靠性测试方法正 是在这种情况下应运而生的。 软件可靠性测试是指在软件的预期使用环境中,为进行软件可靠性评价而对 软件实施的一种测试。其基本思想是按照软件的测试模型( 对软件实际使用情况 的统计规律的描述) 对软件进行测试。软件可靠性测试是面向失效的测试,以用 户将要使用的方式来测试软件,每一次测试代表用户将要完成的一组操作,使测 试成为最终产品使用的预演。这就使得所获得的测试数据与软件的实际运行数据 比较接近,可用于软件的可靠性评价。 软件可靠性测试能有效地暴露在实际使用过程中影响可靠性要求的软件缺 第2 页 国防科技大学研究生院学位论文 陷。文献 9 】指出:为了满足用户对软件的可靠性要求、评价软件可靠性水平及验 证软件产品是否达到可靠性要求,软件可靠性测试是一个最有效的途径。通过软 件可靠性测试可以达到以下目的: ( 1 ) 有效地发现程序中影响软件可靠性的缺陷,从而实现可靠性增长:按照软 件的测试模型对软件进行测试一般先暴露在使用中发生概率高的缺陷,然后是发 生概率低的缺陷。而高发生概率的缺陷是影响产品可靠性的主要缺陷,通过排除 这些缺陷可以有效地实现软件可靠性的增长。 。 ( 2 ) 验证软件可靠性满足一定的要求:通过对软件可靠性测试中观测到的失效 情况进行分析,可以验证软件可靠性的定量要求是否得到满足。 ( 3 ) 估计、预计软件可靠性水平:通过对软件可靠性测试中观测到的失效数据 进行分析,可以评价当前软件可靠性的水平,预测未来可能达到的水平,从而为 开发管理提供决策依据。软件可靠性测试中暴露的缺陷既可以是影响功能需求的 缺陷也可以是影响性能需求的缺陷。软件可靠性测试方法从概念上讲是一种黑盒 测试方法,因为它是面向需求、面向使用的测试,它不需要了解程序的结构以及 如何实现等问题。 1 2 2 软件可靠性测试分类 当前有两种主要的软件可靠性测试方法:基于运行剖面的可靠性测试方法和 基于使用模型的统计测试方法。前者是a t & t 贝尔实验室的j o h nm u s a 在1 9 9 3 年提出的【1 0 】,而后者是h a r l a nm i l l s ( 1 9 8 7 ) 1 1 】和j a m e s a w h i t t a k e r ( 1 9 9 2 ) 1 2 提出 的。这两种方法从不同的角度构造测试模型来模拟软件真实的运行环境。 一 软件可靠性工程中的可靠性测试使用的是操作测试模型,这种方式利用了 j o h nm u s a 的测试模型,比较适用于系统的各个操作相互比较独立的情况,如电信 系统和事务处理系统。它开发系统操作剖面的过程是:确定系统操作模式,确定 操作的发起者,选择操作剖面的表示方式表格或者图形表示法,创建每个操 作者的操作列表,确定每个操作的出现概率【1 3 1 。获得系统的操作剖面后,再根据 操作剖面生成测试用例,进行可靠性测试。 净室软件工程中的可靠性测试使用的是系统状态变迁图测试模型,这种方式 使用了m a r k o v 测试模型,是反应式系统典型的统计测试模型。在净室软件工程中, 使用模型是伴随着顺序规范( s e q u e n c es p e c i f i c a t i o n ) 的过程建立起来的。首先,列 出软件所有可能的外部输入;然后,对每种长度的输入序列都用这些可能的输入 进行组合,并去掉不可能的和等价的输入序列,直到没有新的输入序列产生为止; 最后,这些完全不同的输入序列形成了使用模型的状态空间,然后赋予状态间的 转移概率。使用模型的结构代表了软件的可能使用情况p 4 ,概率分布表示各种情 第3 页 国防科技大学研究生院学位论文 况下软件的期望使用。使用模型形成之后,根据每个状态出边所关联的转移概率, 通过遍历模型的使用状态便可以自动生成测试用例,进行可靠性测试。 本文课题主要研究第二种方法:基于使用模型的统计测试方法,采取的测试 模型是净室软件工程中的那种系统状态变迁图测试模型,我们用m a r k o v 链使用模 型来表示测试模型。课题任务主要是基于软件分析、设计初期的u m l 模型,生成 软件可靠性测试需要的m a r k o v 链使用模型。 1 3 论文的主要研究内容 虽然u m l 在高可靠软件开发工作中得到了广泛应用,而且u m l 模型为高可 靠软件的可靠性确认和验证提供了丰富的信息,但是u m l 模型并没有直接支持高 可靠软件的可靠性确认和验证。因此我们需要研究如何把基于u m l 的软件分析与 设计的相关信息结合到软件统计测试中,为软件统计测试提供软件使用相关信息。 m a r k o v 链使用模型是对各类软件特别是复杂控制软件进行统计测试的基础, 直接影响如何确定可靠性指标、制定测试计划、规范测试过程,以及如何产生测 试用例和分配测试资源。因此,在讨论如何规范软件u m l 模型以及与软件使用相 关的约束的基础上,论文研究了基于u m l 生成软件m a r k o v 链使用模型的方法, 并进一步研究了基于u m l 的分布式软件m a r k o v 链使用模型生成方法。 论文的研究内容主要包括以下两个方面: 1 3 1 基于u m l 的软件m a r k o v 链使用模型生成方法研究 u m l 各种建模机制分别从动态和静态刻画了要开发的软件系统的特点。要构 造软件的使用模型,首先必须分析u m l 各种建模机制的特点,找出适合于生成使 用模型的机制。虽然u m l 的用例描述了软件外部功能行为,但是这些软件外部功 能行为并没有包括软件使用相关信息,必须从其它途径收集这些信息。因此,在 构造使用模型前,必须为u m l 模型添加一些适当的可测试性约束信息,在此基础 上再研究如何生成软件m a r k o v 链使用模型。 基于u m l 模型生成软件m a r k o v 链使用模型的主要研究内容包括: ( 1 ) 通过u m l 模型,研究怎样添加适当的可测试性约束信息,以生成软件的 m a r k o v 链使用模型。论文称这些可测试性约束信息为统计测试约束。 ( 2 ) 提出了一种从u m l 模型构造软件m a x k o v 链使用模型的方法,并给出了相 应的完整算法。基于软件m a r k o v 链使用模型,可以自动产生统计测试用例。 第4 页 国防科技大学研究生院学竹论文 1 3 2 基于u m l 的分布式软件m a r k o v 链使用模型生成方法研究 随着分布式系统的大量应用,分布式软件测试得到了广泛重视和深入研究。 分布式软件测试必须考虑软件的分布属性,这就要求u m l 模型能够反映软件的分 布属性。但是一般眦模型并没有提供分布属性相关信息,因此论文研究了如何 在u m l 模型中加入消息发送时间约束、消息传输时间约束以及统计测试约束,在 加入这些约束的基础上,论文提出了一种分布式软件m a r k o v 链使用模型生成方法。 基于分布式软件m a r k o v 链使用模型可以自动产生统计测试用例。 1 4 论文结构 第一章为绪论,首先介绍了选题的背景,然后概括地介绍了软件可靠性测试, 最后总结了论文的主要研究内容。 第二章首先回顾了软件可靠性相关方面的内容软件可靠性定义、软件可 靠性因素以及软件可靠性度量、模型与测评;然后对软件统计测试的相关方面进 行了综述和总结;最后初略地介绍了统一建模语言u m l 。 第三章在添加适当统计测试约束的基础上,给出了构造软件m a r k o v 链使用模 型的方法,并给出了相应的完整算法,最后用一个卫星控制软件的例子说明了算 法的有效性。 第四章首先分析了分布式软件的特点,在增加消息发送时间约束和消息传输 时间约束的基础上,给出了分布式软件m a r k o v 链使用模型的生成方法,并给出了 相应的完整算法,最后也用例子说明了算法的有效性。 第五章介绍了分布式软件m a r k o v 链使用模型的生成工具- d u 2 u m ,该工 具是在原来普通软件使用模型生成工具u 2 u 】的基础上开发的。它支持为u m l 模型添加分布式统计测试约束,并对添加约束的u m l 模型进行一致性检查,然后 生成软件的m a r k o v 链使用模型。 第六章总结了论文的研究成果。 第5 页 里堕型垫盔兰笪窒生堕兰垡笙奎 第二章基于u m l 的软件可靠性测试技术 本章先概括性地介绍了软件可靠性,然后介绍了软件统计测试,最后介绍了 课题研究的基础1 m ,语言及在此基础上进行的软件可靠性测试技术研究。 2 1 1 软件可靠性定义 2 1 软件可靠性 软件可靠性是指:( 1 ) 在规定的条件下,在规定的时间内,软件不引起系统失 效的概率,该概率是系统输入和系统使用的函数,也是软件中存在的错误的函数, 系统输入将确定是否遇到已存在的错误( 如果错误存在的话) ;( 2 ) 在规定的时间周 期内,在所述条件下程序执行所要求的功能的能力。关于软件可靠性的确切含义, 学术界有过长期的争论。有人认为软件的正确性就是可靠性,也有人认为不宜将 硬件可靠性的定义引申到软件领域。经过长期的争论与研究,1 9 8 3 年美国i e e e 计算机学会对“软件可靠性”一词正式做出了如上两点的定义。软件可靠性定义 中提到的“规定的条件”和“规定的时间”,在工程上有重要的意义,需要进一步 的解释。 软件测试和运行中有三种时间度量。第一种是日历时间,日历时间是指日常 生活中使用的日、周、月、年等计时单元;第二种是时钟时间,时钟时间是指从 程序运行开始,到运行结束所用的时、分、秒,其中包括等待时间和其他辅助时 间,但是不包括计算机停机占用的时间;第二种是执行时间,执行时间是指计算 机在执行程序时,实际占用中央处理器的时间,所以又称为c p u 时间。 这三种时间单元的区别,可以用下面的例子说明。假设某办公室文字处理系 统,一周之内运行3 6 小时,c p u 的工作时间是运行时间的三分之二,则在此例中, 日历时间是一周,时钟时间是3 6 小时,c p u 时间是2 4 小时。显然c p u 时间作为 时间度量比以前两者更精确。但是,精确的c p u 时间难以估算,如果我们考虑的 系统处于稳定的工作状态,平均每周运行的时钟时间和c p u 时间变化不大。所以, 在这三种时问单位中,通常采用时钟时间作为可靠性度量。 定义中所指的“条件”,是指环境条件。环境条件包括了与程序存储、运行有 关的计算机及其操作系统。例如计算机的型号、字长、内存容量、外存介质的数 量及容量、通信网络、操作系统及其它支持软件。 第6 页 国防科技大学研究生院学位论文 2 1 2 软件可靠性因素 软件可靠性因素指软件生存期内影响软件可靠性的因素。这其中包括技术的、 社会的、经济的、甚至文化的,因为在软件生存期的各个阶段均有人的干预,而 人的行为受到各方面因素的影响。单从技术角度来看,影响软件可靠性的因素主 要包括以下几个方面: 1 运行环境( 剖面) 软件可靠性与软件的运行环境有密切关系,同一软件在不同运行剖面下,其 可靠性行为可能极不相同。软件故障是软件缺陷在一定输入情况下被激活的结果。 假设某软件的输入域划分为互不相容的g 和f 两个部分,g 集合中的数据不会激 活软件缺陷,而f 中的数据恒激活软件缺陷。则如果运行剖面的输入不包含f 中 的数据,则软件不会出现故障,其可靠性恒为l :反之,如果只包含f 而不包含o 中的数据,则每一输入情况下均出现故障,此时若没有容错措施,则导致软件失 效,软件可靠性恒为0 。 2 软件规模 如果软件只含有一条指令,那么谈论软件可靠性问题是没有意义的。随着计 算机技术在各个领域的不断深入,应用软件的所要解决的问题更精、更难,所需 代码量也是越来越大。1 9 8 6 年,h e e h t 曾指出:“平均来说,每百万行代码中,存 在2 0 ,0 0 0 个错误”。正是因为软件规模的不断扩大,软件的可靠性问题才愈显突出。 3 软件内部结构 软件的内部组织结构对可靠性的影响特别大。结构越复杂,软件的复杂度也 就越高,内含的缺陷个数也就越可能增多,从而导致软件的可靠性降低。 4 软件可靠性设计技术 软件可靠性设计技术是指在软件设计阶段中采用的,以保证和提高软件可靠 性为主要目标的软件技术。一般是指避错技术和容错技术。 5 软件( 可靠性) 测试与投入 软件中许多错误和缺陷可以通过大量的测试有效地排除。测试越完全,测试 时间越长,软件的可靠性越有保障。但是测试需要投入大量的人力和物力。另外 研究表明,软件测试方法对软件可靠性也有不容忽视的影响。 6 软件可靠性管理 软件可靠性管理旨在系统地管理软件生存期各阶段的开发活动,使之系统化、 规范化、一体化,从而避免许多人为的错误,以提高软件可靠性。例如软件工程 的严格执行,软件可靠性工程的彻底实施等等。 7 软件开发人员能力和经验 开发人员( 包括钡4 试人员) 是软件开发过程中最宝贵的资源,开发人员的质 第7 页 国防科技大学研究生院学位论文 量对产品的质量影响重大。开发人员的能力愈强,经验愈丰富,所犯错误便可能 愈少,遗留在软件内部的缺陷也就越少,产品相应的可靠性也就愈高。 8 软件开发方法 开发方法对软件可靠性也有显著影响。与非结构方法相比,结构化的软件开 发方法可以明显减少软件缺陷数。同时,程序语言和开发工具的选用对软件可靠 性也有影响。 2 1 2 软件可靠性度量、模型与测评 软件可靠性度量是表征软件可靠性的量度。它有多种不同的表述方法,例如: 可靠度、可用性、故障率、平均失效时间、平均故障间隔时间、平均修复时间等。 1 可靠度:是指在规定的运行环境中和规定的时间内软件无失效运行的概率。 2 故障率:产品的故障总数与寿命单位总数之比。 3 平均失效时间:软件在规定的条件下随机使用时,在规定的时间内,软件 产品的寿命单位总数与失效总数之比。 4 平均修复时间:发生失效后修复软件系统所需要的平均时间。 5 可用性:指在需要时,软件系统可用的概率。 6 失效率:又称风险函数,它的数学定义是软件在t 时刻没有发生失效的条 件下,在( t t + a t ) n 间内,当a t 很小时,单位时间内发生失效的概率。 软件可靠性模型是软件可靠性定量分析技术的基础,关于软件可靠性模型的 研究,一直都是热点,同时也是薄弱环节。软件可靠性模型可适用于软件设计阶 段、软件测试阶段和软件确认阶段,其目的在于定量估计或预测软件可靠性行为。 软件可靠性建模的目的是:根据与软件可靠性有关的数据,以统计方法给出软件 可靠性的估计值或预测值。其基本方法是对过去失效数据建模,以预测未来。由 于软件失效过程是一个随机过程,所以软件可靠性模型都是基于各种基本假设而 建立的概率模型。建模过程通常由以下几个部分组成:模型假设、确定定量方式、 建立数学模型、进行参数估计。现在的软件可靠性模型大致可以分为四类:失效 间隔时间模型、缺陷计数模型、故障播种模型、数据模型。应用软件可靠性模型 估计和预测软件可靠性时应当注意:是否对失效进行分类、采用的时间基准、失 效数据类型、失效数据收集、测试方法、对可重用模块的考虑、参数估计。 软件可靠性测评是对软件的可靠性进行评估或验证的过程。基于可靠性模型 的测评方法,要求通过收集、分析和处理系统测试中的失效数据( 如失效报告和 测试时间 ,给出失效数据的点阵图或失效趋势曲线。根据曲线的特征,选择亦满 足这种特征的一种或几种已经公开发布的可靠性模型。若两者能较好地线型拟合, 则认为可以运用该模型描述软件的实效过程,并可以估计软件在未来的失效情况 第8 页 国防科技大学研究生院学位论文 或可靠性参量,从而确定产品是否或何时达到可靠性指标,是否或何时可以交付 用户使用。 2 2 软件统计测试 软件统计测试源于净室软件工程o “。软件测试的统计方法首先由h a r l a nm i l l s 和他i b m 的同事开发出来,后来,j o h nm u s a 和他a t & t 的同事也开发了相似的 方法。m i l l s 和m u s a 所用的术语虽然有细微的差别,但它们都是运用成熟的工程 准则对产品进行测试和验证的科学方法。在工业界,典型地采用一组产品抽检协 议进行合格性检验。首先,进行随机抽样,并应用投入运行使用中的一些测试特 征进行测试。然后,进行分析和统计推断。最终,通过一定标准的产品才被认为 是合格产品。 净室软件测试和认证方法一基于使用模型的统计测试是这种协议在软 件上的一种应用。统计测试时,需要开发出软件投入运行时的使用模型,测试用 例由该使用模型随机产生。然后按照数学和统计学模型对结果进行分析,获取软 件的质量度量,并判断测试的充分性。传统的结构化测试方法是净室统计使用测 试方法的一种补充,因此,不必放弃该方法。不过,大量实践表明,基于使用模 型的测试更经济有效,并且能获得实用软件的高可靠性。 2 2 1 基于使用模型的统计测试优点 软件系统的基于使用模型的统计测试提供了软件产品和过程质量的度量标 准,它将用于软件的整个生命周期的管理和决策。由于使用模型是基于规范而不 是基于代码的,因此,源于模型构筑的洞察可用于产生在工程的早期阶段避免出 现问题的有价值的管理决策。以下是使用建模和统计测试的主要优点。 需求确认使用模型是系统规范的外部视图,它必须容易地被系统工程师、 开发人员、客户和终端用户所理解。在投入运行的环境中,当对该使用模型( 包 括可能的输入、可能的输入序列以及期望的输出) 进行系统地评审时,接口和需 求往往被简化或明确。 资源和进度评估基于一个使用模型的标准计算,为成果、进度和成本估算 提供数据,如覆盖模型中所有状态和状态转移的最小测试数采用w h a t - i f 分析方法 可以界定基于失效数据测试的最好和最坏情况下的结果。 人工挑选非随机测试用例依据一定的约定或规则,通过模型检查确定特殊 的测试用例,以确保测试了特定的测试序列。可以把现存的测试用例映射到模型 中以评估遗漏或冗余。从而使用模型便构成了所有需要的或期望的测试参考模型。 第9 页 国防科技大学研究生院学位论文 自动生成测试用例最小覆盖的测试脚本( 对模型完全覆盖的最少测试事件) 和随机测试用例( 依据使用概率分布) 可由测试模型自动生成。模型覆盖测试确 保了在随机测试开始之前模型的最低功能,而且随机测试为投入运行时的可靠性 评估提供了依据。 有效地、高效地测试不同的缺陷并不同等地产生失效。位于频繁历经路径 上的缺陷比那些位于非频繁历经路径上的缺陷更有可能导致失效。随机测试的动 机源于这样一个简单的事实:失效大致是按照它在现场运行时产生的顺序而被发 现的。用于测试的预算应主要用来提高软件在投入运行时的可靠性。 聚焦测试( 有偏抽样)使用模型允许对特别序列的有偏抽样,譬如对非频 繁使用但极为重要的功能序列抽样。可以为这些功能形成单独的模型,或者对原 始模型进行变换和抽样以去除偏置。 量化测试管理基于使用模型的统计测试,为决策测试是否完成或软件是否 可发布提供了定量的标准。期望使用( 在使用模型中所表征) 与测试使用( 在测 试中所记录) 的统计误差作为测试充分性的度量值。 可靠性评估在一定的统计测试协议下,测试时可以从软件的性能中获得期 望的投入运行时的性能的有效评估。实际的测试结果( 即对每一输入的无误的和 不正确的情况) 作为使用模型的权记录下来,并且该模型的计算结果提供了投入 运行时的可靠性评估。 2 2 2 统计测试的理论基础 2 2 2 1 样本与总体 在统计测试中,软件测试被看作是一个统计学方法的问题。它产生软件所有 可能使用的一个子集,并以这个子集所表现的性能为依据来考虑整体使用的性能。 也就是说,用样本来描述总体。如果仅从这一点来看,所有的测试都是统计测试, 都是从总体中抽出一个样本,只不过不同的测试方法其指导思想和主要目标各不 相同,抽样的方法也不一样。统计测试是一种随机测试,它的目标是模拟用户对 软件的使用方式,以一种最有效的方式发现那些对软件可靠性影响最大的软件缺 陷,并度量软件的可靠性。 事实上,进行统计抽样的主要原因是我们不可能对软件的所有使用方式都进 行测试。即使是一个很简单的软件,它的使用方式的全体也大得惊人。表3 1 显示 了当有2 0 种输入激励的时候,在各种输入序列长度下不同的输入序列种数,以及 如果输入序列长度可以为1 1 0 时总的输入方式数量。它表明随着输入序列长度 和输入种类的增长,测试用例数目会以极快的速度增加。 第1 0 页 里堕型垫奎兰婴至竺堕兰堡丝兰 表2 1 在不同输入序列睦度下的输入序列种类数 输入序列长度不同的输入序列种类数 12 0 = 2 0 2 2 0 2 0= 4 0 0 3 2 0 2 0 2 0= 8 ,0 0 0 4 2 0 2 0 2 0 2 0= 1 6 0 ,0 0 0 5 2 0 x 2 0 2 0 2 0 2 0= 3 。2 0 0 ,0 0 0 6 2 0 2 0 2 0 2 0 2 0 2 0= 6 4 ,0 0 0 ,0 0 0 7 2 0 2 0 2 0 2 0 2 0 2 0 2 0= 1 ,2 8 0 。0 0 0 ,0 0 0 8 2 0 2 0 2 0 2 0 x 2 0 2 0 2 0 2 0= 2 5 ,6 0 0 ,0 0 0 ,0 0 0 9 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0= 5 1 2 ,0 0 0 ,0 0 0 ,0 0 0 1 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0 2 0= 1 0 ,2 4 0 ,0 0 0 ,0 0 0 ,0 0 0 所有使用情景,= 1 0 ,7 7 8 ,9 4 7 ,3 6 8 ,4 2 0 在这个例子中,如果每秒钟执行一个测试用例,那么系统测试将至少需要 3 0 0 0 0 0 年;如果每秒钟执行l o o 个测试用例,那么系统测试将至少需要3 0 0 0 年; 如果可以在软件的1 0 0 份拷贝中同时进行测试,并且每秒钟每个拷贝执行1 0 0 个 测试用例,那么测试时间也需要3 0 年。所以即便对很小的软件,完全测试每一种 输入序列都是不可能的。 对输入序列长度没有限制的软件,理论上来说有无限多种不同的输入序列。 比如一个软件如果有两种用户输入:a 和b ,那么可能的输入序列有:a ,b ,a a , a b ,b a ,b b ,a a a ,a a b ,曲a 。 毫无疑问,我们不可能进行完全的没有遗漏的测试。另一方面,软件过程的 改进提高了交付测试的软件产品的质量,进行覆盖测试显得低效和浪费。因此, 软件测试的焦点渐渐从发现错误转移到了软件质量的证明。问题的关键在于如何 描述使用总体以及如何抽取测试用例。抽取的测试用例子集必须最大程度的保留 总体的特征,只有那样才能保证我们从测试环境得出的软件质量度量能够代表软 件实际使用时的质量度量。 2 2 2 2 软件使用的随机属性 软件使用的过程被认为是一个随机过程( 即,对一系列可能发生的事件,其 中任意两个事件在时间序列上彼此互不重叠) 。一个m a r k o v 过程就是一个具有 m a r k o v 性质的随机过程,其中,序列中的下一个事件只依赖于当前而与过去无关。 m a r k o v 理论已经用于软件使用模型的分析和开发之中( w l l i t t a k e ra n dp o o r et 9 9 3 , w h i t t a k e ra n dt h o m a s o n1 9 9 4 ,相关的数学方法也已被运用到模型优化之中 ( w a l t o n ,p o o r ea n dt r a m m e l l1 9 9 3 ) 。软件的使用模型可用有穷状态、离散参数 第1 1 页 国防科技大学研究生院学位论文 的m a r k o v 链表示,对m a r k o v 链的标准分析结果将有助于分析长期运行使用的情 况。给定一个使用模型的约束系统( w a l t o n1 9 9 5 ) ,那么,通过数学方法可以得 到满足一定目标条件的最优化模型( 比如,这样一个模型:它覆盖了所有的使用 状态和相应的状态转移,并且它具有最少的测试用例) 。形式化思想在净室软件 认证中的应用,为当前的实际应用和技术的进一步提高提供了坚实的理论基础。 2 2 3 统计测试的实际应用 一个软件使用模型描述了软件系统投入运行时的使用模型( 即,从总体可以 获得一个统计上比较恰当的测试用例样本) 。通常,统计测试都是在正常使用情况 下进行讨论的,但是,其他的使用环境( 比如重点使用、危险使用、维护使用) 也可以特别指明。 2 2 3 1 使用规范 使用模型开发的第一步是描述般操作情形和可能的使用分类层次。软件由 “用户”在一定的“环境”中“使用”,那么定义了用户、使用和环境也就定义了 可推断软件质量的运行环境。如果多个使用环境都比较重要,那么有必要为每一 个使用环境构造一个使用模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 46032-2025储粮化学药剂管理与使用规范
- 2025年建筑工地抹灰安全题库解析集
- 2025年康复训练面试高频题
- 2025年机械工程师初级面试模拟题及答案全解
- 2025年AI主播入门初级题库解析
- 2025年卡丁车教练员考试通关秘籍模拟题集与答题技巧
- 2025年化学初级工无机题解
- 2025年市委党校教师招聘面试问题解答
- 2025年高压电工模拟题及答案
- 2025年AI智能语音技术实战指南及考试题库
- 《体育教学论》高职全套教学课件
- 万达入职在线测评题
- 24年追觅在线测评28题及答案
- 六年级数学下册期末试卷及答案【可打印】
- 2024义务教育语文新课标课程标准2022版考试题库附含答案
- 电子学会2024年3月青少年软件编程Python等级考试试卷二级真题(含答案)
- 内蒙古自治区赤峰市红山区2023-2024学年八年级下学期7月期末历史试题
- 四圣心源方剂
- 弱电安全技术交底【范本模板】
- 生物化学之蛋白质化学(唐炳华)
- 产品保修卡模板
评论
0/150
提交评论