第七章-软件测试汇总.docx

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章-软件测试汇总 第七章软件测试 编码完成之后,就是对源程序进行测试。软件测试是一项“劳民 伤财”的工作,统计表明,开发大规模的软件,有 40%以上的精力 是耗费在软件测试上(40-20-40 规则,Myers认为软件测试占大 约50%的项目时间和超过 50%总成本)。为了保证软件的正确可靠、 为了防患于未然,无论怎样强调软件测试的重要性,都不过分。 关于软件测试,曾有种种似是而非的说法,众多的术语和测试 技术,也常使我们眼花缭乱。在这里我试尝给大家勾画出一个清晰 的逻辑轮廓。 7.1基本概念 7.1.1软件测试的目的(与地位) 说测试不能不提到 G.J.Myers的经典著作《软件测试技巧》, 他在书中说道:“测试是为了 发现错误 而执行程序的过程。” E.W.Dijkstra 则说:“程序测试能证明错误的存在,但不能证 明错误不存在。” 在这里,他们明确指出:测试的目的是发现程序中的错误,是 为了证明程序有错,而不是证明程序无错。(其实你也证明不了) 在软件开发过程中,分析、设计、编码等工作都是建设性的, 唯独测试带有“破坏性”,因为它抱着“吹毛求疵”的目的,明确 宣布要在程序中“找岔子”。他们认为这种吹毛求疵的态度是至关 重要的(态度决定一切!)。如果你是为了证明程序无错而去进行测 试,错误就可能在你的眼皮底下漏过,反之,只要你抱着证明程序 有错的目的去测试,就会尽心尽力去找程序中的错误。 根据Myers的说法,测试又是一个“(在计算机上)执行程序 的过程”。分析和设计阶段都要对文档进行技术审查和管理复审, 源程序完成后,也要进行代码复审( code review )。这些审查对 减少软件错误有重要作用,但都不能代替在计算机上进行的测试, R.S.Pressman 认为,测试可视为分析、 设计、编码3个阶段的“最 终复审(ultimate review ) ”,可见测试在软件质量保证中的重 要地位。 现在我们干脆把 Myers的:“程序测试是为了发现错误而执行 程序的过程。”作为软件测试的定义。 另一个与测试密切相关的活动叫纠错(debugging ),我们也 常常说起“纠错和调试”。 [纠错和调试]测试的目的是发现错误,纠错则是为了确定错误的性质, 并且加以纠正。因此,软件测试其实是这样一个过程: … ,这种边测试边debugging routine )人工测试r … ,这种边测试边 debugging routine ) 人工测试 r (代码复审) 软件 测试 晟鹏{ 代码会审 走査(或排练) 办公桌检査 萸盒测试技术 白盒am试技术 测试一一纠错一一测试一一纠错 纠错的活动,常常借助于一种称为调试程序( 的专用工具,所以也有人把纠错称为调试。 7.1.2软件测试的方法和技术 广义地说,软件测试不仅指在计算机上进行的测试(机器测 试),也应包括用人工方式进行的代码复审(人工测试),下面 我们列出这两类测试所采用的方法和技术。 (1)机器测试和人工测试 程序通过编译后,先要经代码复审,然后再进行机器测试。 机器测试是用设定的测试数据 (test data)执行被测程序的过程, 故又称为动态测试(dynamic testing )。代码复审采用人工的 方式进行,目的在于检查程序的静态结构,找出编译不能发现的 错误。经验表明,组织良好的代码复审,可以发现程序中 30%到 70%的编码和逻辑错误,从而加快动态测试的进程,提高整个测 试的效率。 根据Myers的研究:人工测试和机器测试是互补的。而且, 机器测试只能发现错误的症状,人工测试一旦发现了错误,也就 同时确定了错误的位置与性质。人工测试并不是可有可无的,或 是为了节约计算机机时而采取的权宜之计, 它是机器测试的准备, 也是测试中不可缺少的环节。 白盒测试和黑盒测试 动态测试是一个包括:①设计“测试用例”宀②执行被测程 序-③分析测试结果并发现错误的过程。 [测试用例]以发现程序的错误为目的,而精心设计的一组测试 输入 数据,以及用这组数据执行被测程序时所 期望的输出结果。 测试用例={输入数据+期望结果} 【注】其中{ } 表示重复 在这一过程中,毫无疑问①设计“测试用例”是最关键!这 是因为只有合理设计的“测试用例”,才可能最大限度地发现程序 中的错误,从而有效地完成测试任务。 我们按照在设计“测试用例”时,是否涉及程序的内部结构, 把动态测试分为:“白盒测试”和“黑盒测试”。 r白盒测试:瞬騎结构入手’g的诙 动态 测试 J黑盒测试:器翻孵麟卿漏 检査它能否拒绝一切不应该做的事情 白盒测试和黑盒测试 白盒测试和黑盒测试 穷举测试和选择测试 能不能通过动态测试,发现程序中的所有错误呢? 人们自然地想到:应该让被测程序在 一切可能的输入情况 下执行一遍,这就是

文档评论(0)

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

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

1亿VIP精品文档

相关文档