




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 本文首先介绍了问题的由来和研究意义,阐述了有关软件可靠性和软件可靠 性模型的一些基本概念,概述了国内外对软件可靠性研究的现状与发展;然后对 软件可靠性研究中所用到的数学知识进行了列举并简要说明其在可靠性研究中的 应用情况;接着本文介绍了软件测试的基本内容和过程。本文对软件测试和软件 可靠性模型的应用进行了创新性和探索性研究。主要内容为: 1 在现有研究的基础上提出了一种比较随机测试和划分测试的方法。传统的 方法没有考虑测试后剩余的错误对程序运行的影响。从这个角度出发,该方法通 过近似比较测试后程序的可靠性来比较随机测试和划分测试。 2 提出了一个改进的软件可靠性模型:考虑错误排除率、错误引入率的g o 非齐次泊松过程模型。在现有的n h p p 类软件可靠性增长模型中,假设条件过于苛 刻,把错误的排除过程看得过于简单,并且模型假设排错是完全的,这与实际情 况不符。在软件错误的排除过程中引入新错误的情况是经常发生的,并且有些软 件错误是不能排出的。改进后的模型与实际情况更加吻合。 3 在上述研究的基础上,从实际出发,对n h p p 类软件可靠性增长模型做进一 步的改进,提出了一个新的模型,该模型将排除的软件错误数和引入的软件错误数 都看成随机变量,并利用该模型对软件的可靠性指标进行评估,最后通过实例对 该模型进行了验证。最后本文应用文献 3 3 中介绍的e m 算法于n h p p 类模型的参 数估计,以提高估计的精度,从而提高软件可靠性分析的精确程度。 关键词:软件可靠性,软件测试,软件可靠性模型,软件可靠性测试 电子科技大学硕士学位论文 a b s t r a c t t 0b c g i n 谢t h ,t l l i s p a p e r i n l d u c e s t h ea r to f t h es t a t ea i l d t h ed e v e l o p m e n t i n t l l e r e s e a r c hf i e l do fs o 丘w 盯er e l ia _ b i l i 何t h eb a s i cc o n c e p t sr e l a t e dt 0s o r w a r er e l i d b i l i t y a i l ds o f t 、v a r er e l i a b i l 时m o d e l sa r ed i s c u s s e d t 梳t h e l a _ m e m a t i c a lk n o w i e d g el l s e di i l t 1 1 er e s e 砌f i e l do fs o r w a r cr e l i a b i l i t ) ri se n 吼e r a t e d n e wm e t h o da n d 卸_ a l y s i sa r e e x p l o r e da n di n v e s t i g a :c e df o rs 0 氟唰d et e s t m ga n ds o f h v a r er c l i a b m 时m o d e l s t h em a i n r e s u l t sa r ea sf o n o w s : 1 an e wm e t h o dt oc o m p a r et h ee 伍c a c yo fp a r t i t i o nt e s 廿n ga n dr a n d o mt e s t i n g i sp u tf o r w a r d h ln l i sp 印e r ,w e 血v e s t i g a 把m ee x p e c t e dn 啪b e ro f 舢u r e sd e t e c t e db y p a r f i t i o nt e s t i l 培a 1 1 dr 姐d o mt e 蚶_ n gw i t h o u tt e s tc a s e sr 印l a c e m e n ta n dc 伽叩a r et l l e e m c a c yo fp 枷t i o nt e s t 吨a n dr a i l d o mt e s t i n gs 雠t e g i e su s i l l gm ep r 0 掣锄r e l i a b i l i 够 a f l e rt e s t i n g 2 am o d e li sp r o p o s e d i nm i sm o d e l ,i r 玎p e r f e c td e b u g g i i l gi sc o 璐i d e r e di n 恤e s e n s e 也a ti l c wf 训t sc a nb ei n 打o d u c e d 砒o 1 es o f t w 州n gd e b u g g i l l ga n dt h e d e 幻奠e df 如km a yn o tb er e m o v e dc o m p l e t e l y am o d c l i sp r o p o s e dt 0i i l t e 蓼a t ef h u l t r 锄o v a lr a t e ,舡l df a u hi n 订o d u c t i o nr a t ei 1 1 t os o 胁a r er e l i a b i l i t ya s s e s s m e m m o s ts r ( 洲s 嬲s u m e 协a tf a u l t sd e t e c t e dd u 血gt c s t s 谢l le v e l l t l 】a l l yb er e m o v e d c o n s i d e m t i o no f f a u l tr e m o v a le 伍c i e n c yi nm ee 虹s t i gm o d e l si si i m i t e d 3 an e wm o d e l i sp r o p o s e d ,t h i sm o d e l i sm ee x t e l l s i o no fn h p ps o 脚a r e r e l i a b i l i 毋m o d e l s i n 廿1 i sm o d e l ,m en u n l b e ro fi n 打o d u c e df a u l ta n dd e b u g g e df a u l ti s c o n s i d e r e dt ob er 锄d o mv a r i a b l e ,a n d 也en e wm o d di su s e dt oe s 胁a t es o r w a r e r e l i a b i l 耐m e a s u r e s i i lt 1 1 i sa n i c l e ,、ea p p l ye ma l g o 枷mt oe s t i m a t i n gt h ev a l u e so f m e p a m m e t e r so f n h p pm o d e i s n ee s t i m a 血ga c c u r a c ym a yb ei n c r e a s e d b y 恤w a y s o 也er e s u l ts o f t 啪_ r er e l i a b i l i t ya 工l 龇y s i sm a yb ei i n p m v e db ym i sw a yt o o k 叼唧o r d s :s o f l w a r er e l i a b i l 咄s o 胁勰t e s 血g ,s o 风愠r er e l i a b i l 时m o d e l , s o 雠r e l i a b i i 蚵t e s t i n g 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:丞猛 导师签名 日期:铷彭年月( 日 第一章绪论 1 1 软件可靠性研究的意义 第一章绪论 近二、三十年来,随着计算机在军用与民用产品上的应用日益增多,软件缺陷所 引发的产品故障,甚至灾难性事故也越来越严重。据美国国家宇航局nasa 的统 计:在8 0 年代初,软件引起的故障与硬件引起的故障,其比率约为1 1 :1 o ,到了8 0 年 代末,这一比率已达到2 5 :1 o 。在我国,这一比率至少己达到3 :1 。随着2 1 世纪 的来临,信息技术的迅猛发展,计算机己深入到军用、民用的各个领域,甚至居民的日 常生活之中,因此,软件故障将日益成为高新技术产品发展的瓶颈。 计算机本身就全球来讲,现已是年产值高达5 0 0 0 亿美元的巨大产业。在这 种情况下,对计算机系统的质量和可靠性的要求也越来越高。这是因为一旦计算 机系统发生故障,则其效益就会大幅度的消减,甚至完全丧失,从而使社会生产 和经济活动陷入不可收拾的混乱状态。因此可以说,计算机系统的高可靠性是实 现信息化社会的关键。 计算机系统硬件可靠性,由于可靠性技术已有六十余年的发展历史,冗余技 术、差错控制、故障自动检测、容错技术和避错技术等可靠性设计技术已经成熟, 以及大规模超大规模集成电路的被采用,可使整机的可靠性大体上每经六年就提 高十倍。相比之下,软件可靠性的研究只有三十几年的发展历史,加上软件生产 基本上仍处于作坊式的手工制作,其提高软件可靠性的技术与管理措施还处于十 分不完善的状况。 1 2 国内外研究状况 第一篇关于软件可靠性的论文是1 9 6 7 年h u d o n 提出的生灭过程模型翻,该模 型导出了故障间隔的威布尔分布。继h u d o n 之后,1 9 7 2 年j e l i n s l d 等人进一步研究 了软件的故障率,他们都假定有一个故障的分段常数,故障率同残留差错数成正比。 以上模型中的参数估计大多采用经典统计的方法。但大量的事实表明,当观察值的 分布偏离原来的假设模式时,由经典统计所得的参数估计值往往很不可靠。因 此,1 9 7 7 年jw t u k e y 提出了探索数据分析方法e a ) ,该方法区别于经典统计方法 电子科技大学硕士学位论文 的主要之处是:对数据作极少假定或根本不假设模型,非常不重视问题的数学结构, 而强调直接研究数据本身,了解数据的特征、结构,以此出发,分析如何得到更多的信 息,然后采用适合这种数据的估计i lj 。7 0 年代末至8 0 年代初散件可靠性的研究开 始集中于对软件可靠性模型进行比较和选择。早期工作的不足之处是缺乏较好的 故障数据和所需的比较准则。9 0 年代以来,软件可靠性研究工作进展较快,主要有: ( 1 ) 软件可靠性设计。在软件设计过程中,为了提软件可靠性,经常采用一些专 门的技术将可靠性“设计”到软件中去。提高软件可靠性的技术主要有两类:一类 是避免故障,即在开发过程中,不让缺陷和差错潜入软件的技术:另一类是容错技术, 其中晟常用的设计技术就是恢复块技术和n 版本程序设计技术。f b e l l e 等人从可 靠度优化、费用优化等方面考虑了软件的容错技术【3 】。在此础上,将上述诸技术结 合起来,b e l l e 等人提出了一致性恢复块、接受表决、n 自检程序设计以及考虑版本 间失效相关的容错技术h ,但目前这些技术仍处于理论上的研究其工程上的实践尚 有待于进一步探讨。 ( 2 ) 软件可靠性测试与管理。通过对软件可靠性的测试发现软件中的故障,从而 不断排除故障以提高软件可靠性。传统的软件测试方法主要有面向程序的静态测 试和动态测试两大类。1 9 9 1 年,td o w l l s ,提出对测试过程直接建模例。1 9 9 3 年, w i m l k e r 等人采用马尔可夫过程对软件的测试过程和测试用例作了研究 6 。 随着面向对象编程( o o p ) 技术的兴起,相应地发展了面向对象的软件测试技术, 该技术首先由m j h a r m l d 等人提出,其基本思想是找出服务内部和服务间的定义 引用对,围绕定义一引用对的覆盖确定测试用例。针对目前大多数o o p 测试主要集 中在类的测试上,文献同通过建立一个状态模型来获得软件的动态运行行为,提出 了个系统级的o o p 软件测试方法。软件可靠性管理包括软件测试管理和发行管 理。在软件测试管理中,首先考察测试工程中进度状况管理问题萁次考察测试人力 对软件模块测试的最佳分配问题。目前主要集中在一定可靠度要求下( 或使可靠度 达到最大) 的人力、资源分配问题。为有效利用测试过程中投入的测试资源,文献 8 】 考虑将测试过程分为多个阶段,并为多个阶段动态分配测试资源的方法提出了2 种 动态分配资源的方法,即当测试资源总数一定时,测试结束时各软件模块中剩余错 误平均数最小模型以及当给定测试结束时各软件模块中剩余错误平均数要达到预 定指标时,所用的测试资源最少的模型。对于软件发行管理问题,主要考虑软件可靠 性、相关软件费用以及合同交付期等因素,确定软件的最优发行时间。另一方面考 虑到软件的最优发行时间与软件可靠性模型中的参数有关,而这些参数的估计由于 受收集到的软件失效数据影响往往准确度不高闺此,文献【9 以g o 模型为例,分析 第一章绪论 了软件可靠性模型中参数对最优发行时间的影响,并提出了相应的改进方法。 ( 3 ) 软件可靠性数据的收集。软件可靠性数据的收集是估测软件可靠性的基础, 所收集的数据是否有效,是否满足模型的要求,直接影响到软件可靠性评估的准确 性和可靠性。通常收集的软件可靠性数据有两类:失效计数数据和失效间隔数据。 但由于软件中一个相同的错误可能会导致许多失效,并且若干个错误之间有时存在 相关性,从而会降低所收集到数据的精确度,因此收集软件可靠性数据时,首先要制 订出详细的计划和标准,如人力资源、时间的分配、所收集数据的形式、记录方式、 存储方式等问题。其次,应对数据作具体的分析处理后方可应用,如数据的提取、合 并、相关性分析等,采用的主要技术有em 算法、分段拟合技术等。另外,当应用某 一具体的软件可靠性模型时,可能会出现需要的是其中的一类失效数据,而收集到 的却是另一类,这时需进行失效数据间的转换【10 】。目前虽已开发出了一些自动收集 软件可靠性数据的支持工具,但局限性很大,因此,如何准确而高效地自动收集各种 软件可靠性数据,还是一项有待于进一步研究和实践的课题。 国内软件可靠性研究始于8 0 年代初,黄锡滋等在软件可靠性建模、软件可靠 性分配及软件可靠性管理等方面作了有益的探索;陈望梅等开展软件避错技术研究; 姚一平等在软件可靠性建模、软件可靠性评估工具和混合硬件软件系统可靠性等 方面作了努力:刘纯生在软件容错方面作了重要工作;蔡开元在软件可靠性建模( 提 出模糊软件可靠性模型) 、软件可靠性模型应用选择、软件可靠性测试、软件可靠 性度量体系作了有益的探讨。蔡开元也将自己的模糊软件可靠性模型应用于a c t 验证机【1 1 1 。徐仁佐等人利用c u p s 开发了软件可靠性专家系统,从而为软件可靠性 模型的选择和比较提供了有力的支持u 。 本文分为五个部分。第一部分主要介绍了问题的由来和研究意义;第二部分 介绍了软件可靠性一些基本概念,例如软件工程、软件可靠性、软件可靠性测试 等;第三部分主要介绍了软件可靠性模型研究中所用到的数学知识;第四部分介 绍了软件测试的基本内容和过程,并在现有研究的基础上提出了一种比较随机测 试和划分测试的方法;第五部分对现有的n h p p 类软件可靠性模型进行了扩展,提 出了两个新的模型。 电子科技大学硕士学位论文 第二章软件可靠性测试 2 1 软件可靠性的定义及其要素 关于软件可靠性的确切含义,学术界有过长期的争论。曾经有人否认软件具 有可靠性属性,把软件可靠性说成是科学家寻求的一种“神圣梦想”,也有人认为 软件的正确性就是可靠性。现在仍然保持这种偏颇观点的认识己十分罕见。还有 一些软件工程专家,认为软件具有与硬件不同的性质,不宜将硬件可靠性的定义 引申到软件领域。经过长期的争论和研究,1 9 8 3 年美国i m 计算机学会对“软 件可靠性”一次正式做出如下的定义: ( 1 ) 在规定的条件下,在规定的时问内,软件不引起系统失效的概率,该概 率是系统输入和系统使用的函数,也是软件中存在的错误的函数;系统输入将确 定是否会遇到己存在的错误( 如果错误存在的话) ; ( 2 ) 在规定的时间周期内,在所述条件下程序执行所要求的功能的能力。 这个定义随后经美国标准化研究所批准作为美国的国家标准。1 9 8 9 年我国国 标g b 佴1 1 4 5 7 采用了这个定义。这个定义表明,软件可靠性具有定性的和定量 的两层含义。在强调其定量的含义时,工程上常用软件可靠度来代替软件可靠性。 失效、时间和操作环境为软件可靠性定义中的三个要素。 i 失效与错误( f a i l l l r ea n df a u l t ) 失效( 脚l u r e ) :用户发现程序未产生所期望的服务,是一种面向用户的概念。 错误( f h l t ) :程序中的有缺陷指令,在一定条件下执行导致软件系统失效, 是一种面向开发的概念。 i i 时间( 1 缸l e ) 软件可靠性的量化通常用相关时间来定义,常用的时间标准有三种: 执行时问( e x e c 矾o n t i i l l e ) :处理器执行程序所用的时间; 日历时间( c a l e n d “t 妇e ) :普通的时间变量; 时钟时间( c 】o c kt i m e ) :包括程序的执行时间及等待其他程序运行的时间。 i i i 操作环境( e nv j r 0 口m e n t ) 即软件程序的运行环境,通常用运行剖面( o p e r a t i o n a lp r o f d e ) 加以描述。运 第二章软件可靠性测试 行剖面是由软件可执行的操作及其发生的概率组成的集合。 2 2 软件可靠性测试的定义 “测试”一般是指“为了发现程序中的错误而执行程序的过程”。但是在不同的 开发阶段、对于不同的人员,测试的任务是不同的。 软件可靠性测试是指为了保证和验证软件的可靠性要求而对软件进行的测 试。其采用的是按照软件运行剖面( 对软件实际使用情况的统计规律的描述) 对软件 进行随机测试的测试方法。通过软件可靠性测试可以达到以下目的: ( 1 ) 有效地发现程序中影响软件可靠性的缺陷,从而实现可靠性增长:软件可靠 性是指“在规定的时间内,规定的条件下,软件不引起系统失效的能力,其概率度量 称为软件可靠度。”软件的“规定的条件”主要包括相对不变的条件和相对变化的 条件,相对不变的条件如计算机及其操作系统;相对变化的条件是指输入的分布,用 软件的运行剖面来描述。按照软件的运行剖面对软件进行测试一般先暴露在使用 中发生概率高的缺陷,然后是发生概率低的缺陷。而高发生概率的缺陷是影响产品 可靠性的主要缺陷,通过排除这些缺陷可以有效地实现软件可靠性的增长。 ( 2 1 验证软件可靠性满足一定的要求:通过对软件可靠性测试中观测到的失效 情况进行分析,可以验证软件可靠性的定量要求是否得到满足。 ( 3 ) 估计、预计软件可靠性水平:通过对软件可靠性测试中观测到的失效数据 进行分析,可以评估当前软件可靠性的水平,预测未来可能达到的水平,从而为开发 管理提供决策依据。软件可靠性测试中暴露的缺陷既可以是影响功能需求的缺陷 也可以是影响性能需求的缺陷。软件可靠性测试方法从概念上讲是一种黑盒测试 方法,因为它是面向需求、面向使用的测试,它不需要了解程序的结构以及如何实现 等问题。 2 3 软件可靠性测试过程 软件可靠性测试活动包括:测试数据、测试环境的准备、测试运行、可靠性数 据收集、可靠性数据分析和失效纠正。 ( 1 ) 构造运行剖面:软件的运行剖面“是指对系统使用条件的定义。即系统的输 入值用其按时间的分布或按它们在可能输入范围内的出现概率的分布来定义”。粗 略地说,运行剖面是用来描述软件的实际使用情况的。运行剖面是否能代表、刻画 5 电子科技大学硕士学位论文 软件的实际使用取决于可靠性工程人员对软件的系统模式、功能、任务需求及相 应的输入激励的分析,取决于他们对用户使用这些系统模式、功能、任务的概率的 了解。运行剖面构造的质量将对测试、分析的结果是否可信产生最直接的影响。 ( 2 ) 选取测试用例:软件可靠性测试采用的是按照运行剖面对软件进行可靠性 测试的方法。因此。可靠性测试所用的测试用例是根据运行剖面随机选取得到的。 ( 3 ) 测试环境的准备:为了得到尽可能真实的可靠性测试结果,可靠性测试应尽 量在真实的环境下进行,但是在许多情况下,在真实的环境下进行软件的可靠性测 试很不实际,因此需要开发软件可靠性仿真测试环境。比如,对于多数嵌入式软件, 由于与之交联的环境的开发常常与软件的开发是同步甚至是滞后的,因此无法及时 进行软件可靠性测试;有些系统中,由于交联的环境非常昂贵而无法用于需要进行 大量运行的可靠性测试。 ( 4 ) 可靠性测试运行:即在真实的测试环境中或可靠性仿真测试环境中,用按照 运行剖面生成的测试用例对软件进行测试。 ( 5 ) 数据收集:收集的数据包括软件的输入数据、输出结果,以便进行失效分析和 进行回归测试;软件运行时间数据,可叹是c p u 执行时间、日历时间、时钟时间等; 可靠性失效数据包括每次失效发生的时间或一段时间内发生的失效数,失效数据可 以实时分析得到,也可以事后分析得到。数据收集的质量对于最终的可靠性分析结 果有着很大的影响,应尽可能采用自动化手段进行数据的收集,以提高效率、准确性 和完整性。 ( 6 ) 数据分析:主要包括失效分析和可靠性分析。失效分析是根据运行结果判断 软件是否失效,以及失效的后果、原因等;而可靠性分析主要是指根据失效数据,估计 软件的可靠性水平,预计可能达到的水平,评价产品是否已经达到要求的可靠性水 平。为管理决策提供依据。 ( 7 ) 失效纠正:如果软件的运行结果与需求不一致,则称软件发生失效。通过失效 分析,找到并纠正引起失效的程序中的缺陷,从而实现软件可靠性的增长。 软件可靠性增长测试是为了满足用户对软件的可靠性要求、提高软件可靠性 水平而对软件进行的测试。是为了满足软件的可靠性指标要求,对软件进行测试一 可靠性分析修改一再测试一再分析再修改的循环过程。 第三章软件可靠性模型研究的数学基础 3 1 随机过程 第三章软件可靠性模型研究的数学基础 3 1 1 泊松过程 如果非负整数值的计数过程 ( f ) ,f 0 满足: ( 1 ) ( r ) = o : ( 2 ) 具有独立增量; ( 3 ) 对任意o s o ,f = o ,l ,2 ,t 一1 ,似 o ,f _ 0 ,l ,2 ,均为常数,则称随机过程 ( 0 ,f 0 ) 为有限状态e = 0 ,1 ,2 ,一,) 上的生灭过程 3 2 】。当系统状态为可列无限 状态,e = 0 ,l ,2 ,h , 时,则称为无限状态的生灭过程【3 2 】。 32 参数估计方法 参数估计是统计推断的基本问题之一,它的内容很丰富。在讨论参数估计问 题时,分布f ( z ,口) ,其中所古未知参数目的可能的取值范围 称为参数空间,这 里允许目为向量。用来估计某个未知参数口的统计量,称为估计量。这样的估计, 也称为点估计。 3 2 1 最大似然估计法 最常用的经典统计方法为最大似然估计方法口”。此种方法有很多优良性质, 当总体分布类型已知时,最好采用最大似然估计法来估计总体的未知参数。 1 似然函数 设母体j 是连续型随机变量,其分布密度函数,o ,目) ,占e 是未知参数, 且x = ( 五,岛,咒) 是总体j 的一个样本,则样本( 正,噩,) 的联合密度甬 数为兀, ,日) ,当取定拍,后,它只是参数口= ( 日,吼y 的函数,记为( 目) , f = l 即 上( 目) = 兀l 厂( 置,目) , l l 这个函数三称为似然函数,即似然函数就是样本的联合分布函数。 2 最大似然估计法 设总体爿的分布密度函数为,o ,印,其中目= ( 6 l ,岛r 为未知参数。又设 ,而) r 是的一个样本值,如果似然函数 硼即= 丌,( 五,目) 在画= 画( 蜀,正) ( f = l ,2 ,m ) 达到最大值,则称a ,受,赢分别为晶,岛,的 最大似然估计值。 需要注意的是,最大似然估计值画( 扛l ,2 ,) 依赖于样本值,即若在上式中 第三章软件可靠性模型研究的数学基础 将样本值,翰y 换成( m ,而,墨y ,所得到的岔= 酋( 蜀,而) 0 = 1 ,2 ,柳) 分别称为岛( 扭1 ,2 ,埘) 的最大似然估计量。 由于1 1 1 工( 口) = l n ,印,而1 1 l 三( 印与三( 口) 有相同的最大值点,因此,舀为 f ;d 最大似然估计的必要条件为 尝竽护o ,( f :1 2 ,_ m ) ; c , 称它为最大似然函数方程,其中口= ( 岛,岛y 。 求最大似然估计量的一般步骤: 1 写出似然函数1 1 1 上( 臼) ; 2 求出l n 三( 及似然方程 粤竽协o ,( 渊小m ) ; o 3 解似然方程得到最大似然估计画= 岛,粕) ( f _ 1 ,2 ,矾) ; 4 最后得到最大似然估计量画c 蜀,凰) ( f _ 1 ,2 ,肌) 。 3 2 2 最小二乘法 设经过某一变换,寿命分布可以写成与未知参数的线性关系,即: g ( r ( f ) ) = 功 0 ) + + ( f ) 其中皿,i 口m 为未知参数,矗,m 为己知函数的线性不相关集合,于是参数矾,口。 可通过求下列的最小值的方法进行估计: g = ,;一( 口l n ) + + 口m k o ) ) 】z 目 3 2 3 贝叶斯估计法 设母体的密度函数为厂( xi 目) ,假如将未知数日看作是定义在参数空间 上的 一个随机变量,并设其分布函数为日( 口) ,则称日( 目) 为参数目在 上的先验分布。 当臼是。上的连续型随机变量时,口的密度函数 ( 口) 称为先验密度。若按先验密度 汐) 在。上产生一个随机观察值口,再从母体,( z i 口) 中随机抽取一个子样 ( 蜀,而) ,于是子样( 茧,咒) 和参数目的联合密度是: ,( 柏,而,d = ( 而j 口) ,( 耽i 口) - 厂( 翰| 目) ( 曰) 子样( 蜀,五) 的边际密度( 或称无条件密度) 为: 厂( 柏,* ,) = l ,( 柏,- 一,葛,臼) d 臼 9 电子科技大学硕士学位论文 则在给定子样( 蜀,品) 的条件下,参数口的条件密度是: 即阶,= 糕 这就是著名的贝叶斯定理,这个条件密度称为目的后验密度。 第四章软件测试技术 4 1 软件测试概述 第四章软件测试技术 1 软件测试的概念 软件测试指为了发现错误而执行程序的过程。它是根据软件开发各阶段的规 格说明和程序的内部结构精心设计一批测试用例,用这些测试用例去执行程序, 以发现程序错误的过程。软件测试追求的是通过系统的测试方法,发现软件中的 错误。软件测试是软件开发过程中一个非常重要的阶段。其目标是在精心控制的 环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。 2 软件测试的特征 ( 1 ) 软件测试的挑剔性 测试不是为了证明程序是正确的,而是设想在程序有错误的前提下进行的, 其目的就是设法暴露程序中的这些错误和缺陷。 1 测试是程序执行的过程,目的在于发现错误; 2 一个好的测试用例在于能发现至今未能发现的错误; 3 一个成功的测试是发现了至今未能发现的错误; ( 2 ) 测试的系统性 软件工程要求在测试之前,先制定测试计划。测试计划包括目的、标准、步 骤、进度、岗位职责、测试用例标准、工具、机时、有关规程等。这些内容事先 应先严格规定,测试时要严格执行,以排除测试的随意性。 ( 3 ) 完全测试的不可能性 测试就是用精心设计的数据,运行软件,从而发现软件中的错误。一般地说 程序测试的基本方法有两种:黑箱法和白箱法。 黑箱测试( b l a c kb o xt c s t i n g ) 也称为功能测试。它只着眼于程序的外部特性, 即程序能满足哪些功能。测试在程序的接口上进行,检查输入能否正确的接收, 并能否输出正确的结果,外部信息( 如数据文件) 的完整性能否保持。这种测试不 考虑程序的内部逻辑结构。衡量测试数据设计的好坏,是看它们能测试程序逻辑 的哪些功能。 电子科技大学硕士学位论文 白箱测试( w h i t eb o xt e s t i n g ) 也称为结构测试。它着眼于程序的内部结构。测 试时要设计一些数据,对程序的各个逻辑路径进行测试,在不同点上检查程序的 状态,看它的实际状态与预期的状态是否一致。测试数据设计的好坏,在于它能 够覆盖程序逻辑路径的程度。 ( 4 ) 钡4 试的经济性 测试是保证软件质量的关键。但是,完全测试是不可能的。因此,应在程序 逻辑的用途及其重要与测试所花的代价两者之间进行权衡。 在实际工作中,采用黑箱测试与白箱测试相结合的方式对程序进行测试,并 按如下层次进行: 没有语法错误: 运行有结果: 对典型数据能得到正确的结果: 对典型的有效数据能得到正确的结果,无效数据有防范措施: 对一切能得出的数据不出错。 这五个层次一层比一层工作量大,测试更细致。 3 软件测试的种类 接受测试:想要通过测试确定所在机构是否应该接受某个产品。 符合性测试:想要通过测试确定某个产品是否满足实现标准。 可用性测试:想要通过测试确定某个产品是否易于使用。 性能测试:想要通过测试确定某个产品是否满足性能要求。 可靠性测试:想要通过测试确定某个产品是否满足可靠性要求。 健壮性测试:想要通过测试确定某个产品是否具有很强的生命力。 4 软件测试的过程 软件测试过程,可分为五个步骤:单元测试、子系统测试、系统测试、验收测 试和平行运行。 ( 1 ) 单元测试 在设计好的软件系统中,每个模块完成一个清晰定义的子功能,而且每个模 块又是相对独立的。因此,每个模块可以作为个单独的测试单元,而且也比较 容易设计测试用例。单元测试的目的,是保证每个模块作为一个单元能正确运行。 在这个测试中所发现的错误,往往是编码和详细设计的错误。 ( 2 ) 子系统测试 子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。因此模 第四章软件测试技术 块间的相互协调和通信是本测试中的主要任务,而测试模块间接口的正确性是目 的。 ( 3 ) 系统测试 系统测试是把经过测试的子系统装配成一个完整的系统来测试。在这个测试 中发现的错误不仅有设计和编码的错误,还可能有需求说明中的错误。因此,它 是检验系统是否确实能提供需求说明书中指定的功能,以及系统的动态特性是否 也符合预定要求的测试。通常把子系统测试和系统测试也称为集中测试,因为它 们都有组装模块并测试的特性。 ( 4 ) 验收测试 验收测试是把软件系统作为单一的实体进行测试,测试内容与系统测试基本 相同,但是这次测试是在用户的参与下进行的。本测试的目的是,使软件系统能 够满足用户的需要,若测试中发现有错误,则属于需求说明书中的错误。 ( 5 ) 平行运行 平行运行,也称为试运行阶段。它往往是新旧两个系统同时运行,以便进行 新旧两个系统处理结果的比较。平行运行对于关系重大的软件产品是非常必要的。 这样可以使新系统不冒风险,用户有一段熟悉系统的时间,并且用户对使用手册 可以加以验证,也可以对测试结果进行系统性能上的验证。 测试作为软件工程的一个阶段,它的根本任务是保证软件的质量。划分测试 是一种重要的损4 试技术,方法是将程序的输入域分成若干个子域,然后在每个子域 内选取元素进行测试。语句覆盖、分支测试、路径测试、结构测试等都可以看成 是划分测试要注意的是,每个子域并不一定是相互独立的,有可能产生重叠。划分 测试的目的是让子域内的元素具有代表意义,或者让引起错误输出的那些输入元 素更多地集中在某些子域内,然后集中测试这些子域,以发现更多错误,提高程序 的可靠性。由于测试者事先并没有错误分布的信息,不一定能分出这样的子域,所 以,划分策略对于划分测试的效果至关重要。 5 软件测试中遇到的错误类型 测试中发现的错误可能是各式各样的。这里,仅按错误发生的影响和后果以 及错误发生的性质和范围分别加以说明。 ( 1 ) 按错误发生的影响和后果,可分为以下几种类型: 较小错误。这类错误只是对系统的输出结果有一些非实质性影响。例如, 输出的数据格式不符合要求等。 中等错误。对系统的运行有局部的影响。例如,输出的某一部分数据有错 电子科技大学硕士学位论文 误或出现冗余。 较严重错误。系统的行为由于错误的干扰而出现明显不合情理的现象。例 如,系统的输出结果完全不可信赖。 严重错误。系统运行不可跟踪,一时不能掌握其规律,时好时坏。 非常严重的错误。系统运行中突然停机,其原因不明,且无法软启动。 最严重的错误。运行被测软件时导致环境遭到破坏,或是造成事故,引起 生命、财产的损失。 ( 2 ) 按错误性质和范围,可分为以下几种类型: 功能错误。由于功能规格说明书不够完整,或是叙述得不够确切,致使系 统在实现时对功能有误解。例如,给出了错误的功能、缺少了某些功能却多出了 冗余功能。 系统错误。它包括以下各种情况:与外部接口打交道的协议错误、参数调用 错误、子程序调用错误、输入输出地址错误、中断处理错误等等。此外还可能有 与操作系统接口错误、控制顺序错误以及资源管理的问题等。 数据错误。例如,数据内容、结构与属性错误、动态数据与静态数据混淆 或是参数与控制数据混淆等。 编码错误。例如,语法错误、变量名错误、局部变量与全局变量混淆或程 序逻辑错误等。 42 随机测试与划分测试的比较 1 随机铆f 试与划分测试的定义 随机测试可以看成是划分测试的特例,因为它仅有个子域整个输入域, 因此它不必花费精力去研究如何分割输入域以及记录那些子域是否测试过。它往 往简单方便,只需要较少的测试用例选择费用,而且其结果易于统计分析。 随机测试和划分测试的有效性问题一直是人们关注的焦点。参考文献 1 3 以 至少发现一次错误的概率为标准,参考文献 1 4 以发现的期望错误数为标准,分 析和比较了随机测试和划分测试。但是这些方法都是根据已经发现的错误进行研 究,来比较随机测试和划分测试的有效性,而没有考虑测试后剩余的错误对程序 运行的影响。软件测试的最终目的是提高软件的可靠性,评价一次测试的成功与 否,重要的是要看测试后程序的运行情况,也就是测试后程序的可靠性的大小。 文献 1 胡中讨论了测试用例不放回时,随机测试和划分测试发现错误的能力, 第四章软件测试技术 而本节则研究了在测试用倒不放回时,经过一次随机测试或划分测试发现程序错 误数的概率分布及其期望值,并在此基础上提出了从测试后程序的可靠性这个角 度来比较随机测试与划分测试的有效性问题。 2 基本概念及假设 对于一个程序,用d 来表示它的输入域,用d 来表示d 的大小,输入域中引 起故障输出的元素称为故障输入( 筋l u r e - c a l l s i n gi n p m s ) ,其总数用m 表示,则故障 率( 脚l u r er a t e ) 曰= 罢。假设从d 中选取的测试用例总数为 印 m ) ,则盯= 罢表示 盯盯 在d 中的抽样率。 当进行划分测试时,假设d 被划分成i ( 2 ) 个子域,用日表示第j 个子域; 每个子域包含吐个元素,其中有故障输入,故障率只= 阜,o = l ,2 ,j j ) 。珥( 吩 啊) “i 表示从口中选取的测试用例的大小,则q = 阜表示在子域日中的抽样率,并且满 口1 足:肼,= m ,每= d ,疗= 怫。 i = l扛lf = i 在下面的结论中还假设 1 每一个故障输入唯一的对应一个软件错误而且只能由该输入引起; 2 测试后每个被发现的错误都被很好的纠正; 3 在纠错的过程中不引进新的错误。 3 当测试用例不放回时发现程序错误数的概率分布及其期望 ( 1 ) 进行随机测试时发现程序错误数的概率分布及其期望 令随机变量互表示进行一次随机测试发现的错误个数;则有 p 仁:n :掣,其中j :1 ,2 ,川p 仁= n = 玉舞1 ,其中j = 1 ,2 ,册; o d 可以看出变量x 服从超几何分布,进而可以得出盖的期望值,即 e ( z ) = 口 ( 4 - 1 ) ( 2 ) 进行划分测试时发现程序错误数的期望 划分测试实际上是在d l ,d 2 ,皿上分别进行随机测试,令随机变量z 表 示在口上进行一次随机测试发现的错误个数,则由( 4 1 ) 式可得 e ( z ) = q j = 1 ,2 ,; 电子科技大学硕士学位论文 令随机变量j ,表示进行一次划分测试发现的错误个数,则有 r = y 1 + + + 耳 由此可得 以】,) = e ( y ,) + e ( e ) + - + e ( 耳) ( 4 - 2 ) 由( 4 2 ) 式可得 i e ( j ,) = 珥口 1 i l 4 通过测试后程序的可靠性来比较随机测试和划分测试 当纠错完毕后,再从最初( 测试前) 的输入域中选取一个测试用例来验证软 件测试的有效性。 令p 表示从d 任取一个输入并且输出正确的概率;只表示从某一个子域中任 取一个输入并且输出正确的概率。 作者认为可以把p 近似的看作是经过一次随机测试后该程序的可靠性;把只 近似的看作是经过一次划分测试后程序的可靠性。通过比较只和只的大小来比较 随机测试和划分测试的有效性。如果测试后有只只,我们就说划分测试比随机测 试有效,反之则称随机测试比划分测试更有效。 特别的当d 是整个软件的输入域时,作者认为可以通过此方法来近似的评估 测试后软件的可靠性。 下面就来计算只和p 的大小 令事件一= 从d 任取一个输入并且输出正确) 令事件b = 从某一个子域中任取一个输入并且输出正确) 我们可以得到 p = p = p 心= 一p 一= 西 由于 刚陋加l 一掣删:肛譬 d o : 所以有 只= 喜等一争卸一蔼等+ 吉喜,警 第四章软件测试技术 卸一争竽即一争詈 = 1 一目+ 8 仃 ( 4 3 ) 只= 尸 毋2 只p i 从口选取一个输入) 其中只表示从d ,选取测试用例的概率,并且满足b = 1 由( 4 3 ) 式可得 删粕选取一个输入) 小号+ 等 所以有 只= 喜易c 一等+ 挚= ,一喜a 等+ 喜只等 = 1 一n 6 + 马e q ( 4 - 4 通过比较p 和t 的大小,观察遗留在软件中的错误对软件的影响,来比较随 机测试和划分测试的有效性。 比较只和只的大小的关键是如何来确定b 的取值,比较好的做法是根据测试 剖面来确定a ,当测试剖面和运行剖面相一致的时候测试的效果最好。 下面只讨论a2 2 a 2 妻的情形 结论如果对任意的f 均有q2 盯,。2 ,a2 2 鼽2 妻,则只只 证明:当= = 时,对任意的艰= 詈,由( 4 - 4 ) 式可得 只= ,一古喜等+ 吾窑号= 一半喜等 其中每= d : 。一只= c 一詈,+ 詈一c ,一与笋喜号,= 肌c ,一a ,c 吉喜寺一争 下面我们用数学归纳法来证明 古妻专一扣 件5 , 电子科技大学硕士学位论文 当t = 2 时 占手上一三:上手土一三:三( l + 土卜三:l 型= 翌o 2 鲁吐d4 鲁吐d4 、d 一一。面d4 面( d 一面) 一。 所以当女= 2 时,( 4 - 5 ) 式成立 假设当k 一1 时( 4 5 ) 式成立即 击莩# 卸 e , 则有 上上一上:上学上+ 上土一三 # 惫d d辞鲁d j 酵d k d = 譬c 南莩去一壶+ 壶,砖去一吉 七2 、( 七一1 ) 2 j 手一d 一以。d 一吐川七2 以d = 譬击辫去,+ 譬奇垮; 汪, 七2 、( 七一1 ) 2 鲁吐d 以7 七2 d 一以。七2 以d 、 由( 4 6 ) 式可得 譬击豁一壶 2 、( t 1 ) 2 鲁4d 一以一 又因为 譬去砖去一= 黼z 。 七2 d 一矾。七2 或 d 七2 妣( d 一以) 。 显然( 4 7 ) 式非负,所以当取女时,( 4 5 ) 式也成立 所以假设成立,所以有0 只 从这个结论可以看出,当错误平均的分布在每个子域中时,随机测试比划分 测试更有效。我们认为这与实践相吻合。它说明了划分测试的本质不足平均分配 测试,而是为了找出错误集中的区域,然后集中精力测试这样的子域。 在测试用例放回时,w i y u k e r 和j e n g 以及c h e n 和y u 等学者对随机测试和划 分测试进行了较为深入的研究尽管他们认为重复取同一例子的可能性较小,但是, 我们认为下面几种情况使得这种可能性较大:( 1 ) 随机测试次数n 很大。我们对一 个商业软件进行测试的时间长达几个月,测试次数达几千次。( 2 ) 划分测试分得较 小子域,并且该子域的测试次数较大。( 3 ) 还有一个人为因素。人的思维容易局限 于某些方面。这使得在不受鉴别的情况下,重复取同一仍【子的可能性较大在测试 第四章软件测试技术 初期,为了排除错误、提高软件可靠性,如果放回测试用例,那将是愚蠢的行为。 本节在测试用例不放回的情
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 12克服胆怯(教学设计)-大象版心理健康四年级
- 第四单元第1课 身临其境 说课稿-2024-2025学年人教版(2024)初中美术七年级上册
- 第六课 成功贵在坚持说课稿-2025-2026学年小学心理健康川教版五年级上册-川教版
- 2025年高考生物试题分类汇编植物生命活动的调节(解析版)
- 2025年审计专业知识考试题及答案
- 2025年高考生物试题分类汇编:群落及其演替解析版
- 葡萄酒美容知识培训课件
- 小班科学连线题目及答案
- 2025经理聘用合同的范文
- 项目论文题目及答案范文
- 2025全国交管12123驾驶证学法减分考试题库与答案
- 《免除烦恼》课件
- 《非权力影响力》课件
- 2025年江西南昌市西湖城市建设投资发展集团有限公司招聘笔试参考题库附带答案详解
- 职业教育产教融合型数字化教材开发研究
- 文学传播学概论课件
- 第3单元主题活动三《创意玩具DIY》(课件)三年级上册综合实践活动
- 商务英语词汇大全
- 麻醉质量控制专家共识
- 人教PEP版(一起)(2024)一年级上册英语全册教案(单元整体教学设计)
- 反走私课件完整版本
评论
0/150
提交评论