- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
防不胜防的软件错误 —— 例1:1963年, 美国, 飞往火星的火箭爆炸, 损失$ 10 million. 原因: FORTRAN循环 DO 5 I = 1, 3 误写为 DO 5 I = 1.3 软件测试是保证软件质量的关键步骤,是对软件规格说明、设计和编码的最后复审,其工件量约占总工作量40%以上(对于人命关天的情况,测试相当于其它部分总成本的3 — 5倍)。 §1. 基本概念 1、定义:测试是为了发现程序中的错误而执行程序的过程。 注意:① 只能尽可能查错,不能证明程序中 没有错; ② 测试员与程序员不应是同一个人。 2、黑盒和白盒测试 ? 白盒测试(white-box , or open-box, clear-box testing): Use the structure of the program to test. —— Structural testing 例:(White-box) 下图所示的程序中共有 520?1014条可能的执行通路,显然,每条通路都执行一遍是不现实的。 §2. 单元测试(白盒) 主要测试以下五个方面: 1、模块接口: ? 内部检查:传输参数的数目、属性、单位、次序是否匹配;全程变量的定义是否一致;只做输入的变元有无被修改,等等。 ? 外部检查:打开、结束、关闭文件的操作;文件和属性;I\O错误处理;输出拼写,等等。 2、局部数据结构: 数据说明(declaration);初始化与缺省值的设置;变量名拼写;数据类型的相容性;上\下溢出及地址异常,等等。 §2.单元测试 3、重要的执行通路: 由于穷尽测试不可能,故通常针对最常见的错误设计测试方案。较常见的错误有: 计算次序问题 不同类型混合运算(例:比较类型不同的量) 初值设置错误 精度问题(例:精度不够导致两变量不可能相等,而程序中等待相等条件的出现) 表达式错误 循环终止条件错误(例:次数差1,或陷入死循环) 4、出错处理通路: 预见出现错误的条件,设置处理。较常见的问题有: ? 输出的错误信息难以理解,不能确定错误位置 ? 描述的错误与实际错误不符 ? 处理之前系统已经干预 ? 处理不正确 1、代码审查(code inspection) ? Walk-through: 例如 Lucent Technologies 的测试策略,是由三人一组(包括 author, reader, 和recorder),逐行检查源代码。 ? Rehearsal:由人扮演computer,模拟执行情况。 §3.集成测试 两种方式的比较: ? Incremental testing 可以较早发现模块间的接口错误;Big-bang testing 最后才组装,因此错误发现得晚。 ? Big-bang testing 中发现错误后难以诊断定位; Incremental testing 中,出现的错误往往跟最新加入的模块有关。 ? Incremental testing 在不断集成的过程中使模块不断在新的条件下受到新的检测,测试更彻底。 ? Incremental testing 较 Big-bang testing 费时。 Big-bang testing 可以同时并行测试所有模块,能充分利用人力。 ⑴ Top-down testing 第1步:测试顶端模块,用存根程序(stub)代替直接附属的下层模块 Stub: to simulate the activity of the component which is not yet tested. 第2步:根据深度优先或宽度优先的策略,每次用一个实际模块代换一个stub。 ⑵ Bottom - up testing 第1步:把低层模块组合成族,每族实现一个子功能。 第2步:用驱动程序(Driver)协调测试数据的I\O,测试子功能族。 ⑶ Sandwich testing §4. 验收测试(Acceptance testing) 任务:验收软件的有效性(功能和性能达标)。 手段:黑盒测试;用户参与;主要用实际数据进行测试。 内容:按合同规定审查软件配置; 设计测试计划,使通过测试保证软件能满足所有功能、性能要求;
文档评论(0)