- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c_10_942507182
* 第十讲 调试与测试 参考书: 《实用C++程序调试指南》Ann R.Ford Toby J.Teorey 著 於春景 译 《软件测试技术概论》古乐 史九林 编著 本讲主要内容 调试 调试概述 常见的语法和语义错误 跟踪技术 使用调试器 测试 测试概述 白盒测试 黑盒测试 单元测试 集成测试 调试概述 程序调试是对错误进行定位并排除错误 调式方法 手动跟踪 程序跟踪 使用调试器 语法错误的排除 语法错误由编译器指出,根据编译器提供的信息修改程序。 编译器带来的难题 编译器有时“偏离方向”,不指出真正的错误,而是指出之后的某处。 遇到一个语法错之后,编译器往往产生很多错误信息。 策略 如果在编译器指出的行未发现错误,向前寻找 如果出现大量错误信息,改正第一个以后重新编译 常见语法错误 漏写分号 变量名未声明 括号不匹配 字符串没有结束符 赋值语句左侧不是左值 带返回值的函数缺少return语句 语法警告 虽然语法规则没有被破坏,但是可能会有隐含错误。针对常见的编程错误,编译器中专门嵌入了错误检查功能。 要认真对待警告。 常见警告: 将“=”用作“==” 变量未初始化 语法错误及警告错误举例 12_1.c 12_2.c 12_3.c 常见语义错误 死循环 混淆了运算符的优先级 else搭配不当 off-by-one(偏一)错误 将代码不适当地放在循环体中 应该使用复合语句时未使用复合语句 数组下标上下限错误 例:12_4.c 跟踪技术 使用交互式的调试器跟踪程序 例:12_5.c 软件测试概述 软件测试的目的在于发现错误;一个好的测试用例在于发现从前未发现的错误;一个成功的测试是发现了从前未发现的错误的测试。(Mery G. The Art of Software Testing) IEEE的定义 软件测试定义为:“使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别” 测试在软件开发中的角色 测试是执行或者模拟一个系统或者程序的操作 测试是为了建立一个信心,即软件是按照他所要求的方式进行的,而不会执行它不被希望的操作 测试是带着发现问题和错误的意图来分析程序的 测试是度量程序的功能和质量的 测试是评价程序和项目工作产品的属性和行为能力的,并且评估其是否获得了期望和可接受的成果 ——Norm Brown. Little Book of Testing Vol I. 调试与测试的不同 调试是随机的,不可重复的过程,它用于隔离和确认问题发生的原因,然后修改软件来纠正问题。 测试是有计划的,可重复的过程,目的是为了发现预先定义的规格和标准不符合的问题。 白盒测试 白盒测试是一种测试用例设计方法 使用白盒测试方法产生的测试用例能够: 保证一个模块中的所有独立路径至少被使用一次 对所有逻辑值均需测试“真”和“假”; 在上下边界可操作范围内运行所有循环; 检查内部数据结构以确保其有效性。 常用的白盒测试技术 静态分析技术 静态分析不执行程序,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。 代码检查 主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面;在检查前,应准备好需求描述文档、程序设计文档、程序的源代码清单、代码编码标准和代码缺陷检查表等。 静态结构分析 主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。 代码质量度量 ISO/IEC 9126国际标准所定义的软件质量包括六个方面:功能性、可靠性、易用性、效率、可维护性和可移植性。软件的质量是软件属性的各种标准度量的组合。 常用的白盒测试技术 动态分析技术 程序在受控的环境下使用特定的数据运行 路径测试使程序能够执行尽可能多的逻辑路径 分支测试需要程序中的每个分支至少被经过一次 覆盖率分析 主要对代码的执行路径覆盖范围进行评估,可以指导测试用例的设计。主要有:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、路径覆盖。 黑盒测试 在测试中主要关注于被测试软件的功能实现,而不是内部逻辑。 黑盒测试试图发现以下类型的错误: 功能错误或遗漏 界面错误 数据结构或外部数据库访问错误 性能错误 初始化和终止错误 单元测试 对软件的基本组成单元进行测试 在纯C语言代码中,一般认为一个函数就是一个单元 目的: 验证代码是与设计相符合的 跟踪需求和设计的实现 发现需求和设计中存在的错误 发现在编码过程中引入的错误 为什么要进行单元测试 问题一、单元测试花费了太多时间 未经单元测试的程序,集成起来能够正常工作的可能性是很小的 问题二、单元测试仅仅是证明这些代码做了什么 首先要有详细的规格说明
文档评论(0)