网站大量收购独家精品文档,联系QQ:2885784924

第5章 软件检验 计算机软件技术基础教程 教学课件.ppt

第5章 软件检验 计算机软件技术基础教程 教学课件.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 软件检验 计算机软件技术基础教程 教学课件

第5章 软 件 检 验 5.2 静 态 检 验 5.3 正?确?性?证?明 5.4 测 试 步 骤 5.1 动态检验 5.2 静态检验 5.3 正确性证明 5.4 测试步骤 第5章 软件检验 返回主目录 5.1 动 态 检 验 动态检验就是指传统的测试,这种方法是使程序有控制地运行,并从不同角度观察程序运行的行为,以发现其中的错误。测试的关键是如何设计测试用例。测试方法不同,所使用的测试用例也不同。常用的测试方法有黑盒法和白盒法。黑盒法是指测试人员将程序看成一个“黑盒”,也就是说,他不关心程序内部是怎样做的,而只想检查程序是否符合它的“功能说明”。所以黑盒法测试时,测试用例都是完全根据程序的功能说明来设计的。如果想用黑盒法发现程序中的所有错误,则必须用输入数据的所有可能值来检查程序是否都能产生正确的结果。 图5.1 程序的输入变量与输出变量 白盒法是指测试人员必须了解程序的内部结构,此时,测试用例是根据程序的内部逻辑结构来设计的。如果想用白盒法发现程序中的所有错误,则至少必须使程序中每种可能的执行路径都执行一次。 例如,图5.1是一个很简单的程序,它有两个输入变量x、y,一个输出变量z。假定程序是在字长为32位的计算机上运行,且x、y都是整数,则输入数据的可能值有232×232=264种。 如果这个程序执行一次需0.5 ms,则执行264次运算将需2.9亿年! 图5.2是一个小程序控制流程图。这个程序由一个循环语句组成,循环次数达20 次,循环体内是一组嵌套的IF语句,其可能的路径有多条,所以从A到B的路径多达520条。 图5.2 程序控制流程图 如果用这么多情况测试它,并假设执行一条路径需0.5 ms,则完成测试需1512年! 这两种测试方法在设计测试用例上是不可取的,也是不可行的。为此,设计人员提出了以下几种设计测试用例的方法:随机抽取测试用例、抽取典型测试用例、抽取边界测试用例、抽取混合测试用例。这些设计测试用例的方法各有特点,至于使用哪种,可根据测试对象的不同分别选用一种,或联合使用。 静态检验是指用人工阅读文档和程序,从中发现错误,或用一些辅助工具来完成这种工作,这种技术也称为评审。实践证明它是一种很有效的技术。 评审的种类很多,包括需求复查、概要设计(总体设计)复查、详细设计复查、程序复查和走查等,其正规化的程度、方式和参加的人员有所不同。本节就此概括讨论评审过程和评审条款等问题。 1.评审过程 为了尽早发现并纠正错误,应将评审工作与开发过程结合起来,使评审成为前一阶段之后必须进行的步骤,这样的模式可用图5.3来说明。 图5.3 评审模式 由于评审的目的是发现错误,为了获得较好的效果,评审应由开发人员之外的人来主持,开发人员与评审人员相互独立是保证评审质量的重要措施之一。评审人员应在软件开发技术和检验技术方面受过良好的训练,有丰富的软件开发经验。 程序走查(Code Walkthrough)是另一种有效的评审活动。走查的关键在于:以人工运行作为媒介,通过这种方式启发与会者向程序员提出种种问题,从而发现程序中的错误。 2.评审条款 评审的目的是尽量快、尽量多地发现错误,所以一般的做法是将软件中常见的各类错误列成清单作为评审条款。评审过程中按评审条款有针对性地进行检查,就可达到多、快、好、省的目的。 评审条款随系统的不同可有所不同,可根据软件系统的性质和复查专家的经验来设定。 动态检验和静态检验的基本问题在于不可能说明软件中不存在错误,人们所能做到的最好的结果是发现错误,因此自然希望能找到某种方法能确切地证明程序是没有错误的,这就出现了程序正确性证明的研究领域。 程序证明最常用的方法是归纳断言法,它对程序提出一组命题,如能用数学方法证明这些命题成立,就可以保证程序中不存在错误,即它对所有的输入都会产生预期的正确输出。但是程序证明存在两个问题:其一是如何设置命题和证明命题,其二是在证明中如何定义“错误”。 总之,程序正确性证明是一个鼓舞人心的想法,但距离实用还有一段路要科学技术人员去走。 软件开发过程经历了分析、设计、编程等阶段,每个阶段都可能产生各种各样的错误。据统计,开发早期犯下的错误(如误解了用户的要求、模块界面之间有冲突等)比编程阶段犯的错误要多。为了发现各阶段产生的错误,测试过程应该与分析、设计、编程的过程具有类似的

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档