- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
代码检查、走查与评审 静态的白盒测试 静态测试和动态测试 ? 静态测试(人工测试) ? 不运行程序进行测试,即检查和审阅 ? 静态黑盒测试 —— 检查产品说明书 ? 静态白盒测试 —— 检查代码,在不执行的条件下有 条理地仔细审查软件设计、体系结构和代码,从而 找出软件缺陷的过程,有时称为 结构分析 。 ? 动态测试(基于计算机的测试) ? 运行和使用软件以发现错误,即通常意义上的测试 人工测试 ? 人工测试方法的正规性、精确性不如基于计算机测试,但 并不妨碍测试取得成功,相反可以提高测试的功效和可靠 性 ? 错误发现得越早,改正错误成本越低,正确改正错 误可能性越大 ? 程序员在开始基于计算机的测试时要经历一个心理 上的转变,改正早期发现的错误比改正后期计算机 执行发现的错误时失误更少 ? 更容易定位以及发现由该错误引发的其他缺陷(如 连锁错误或类似错误)降低调试成本 ? 通常会有效地查找出 30 %- 70 % 的逻辑设计和 编码错误 代码检查 ? 负责静态测试的人员不是固定的。在某些小 组中,程序员就是组织和审查的人员,软件 测试员被要求作为独立的观察者。还有一些 小组,软件测试员是该任务的执行人,要求 编写代码的程序员和其他同时帮助审查。采 用何种方式取决于开发小组的自身状况。 代码检查 ? 静态白盒测试一般面临的情况是不能善始善 终,因为小组会认为太好使,费用太高,没 有产出。 ? 原因是人们认为程序员的任务就是编写代码, 而任何破坏代码编写效率的事情都会减缓开 发过程。 代码检查 ? 四个基本要素 ? 确定问题 . ? 遵守规则 . ? 准备 . ? 编写报告 . 代码检查 ? 实施过程 ? 协调人在代码检查前几天分发程序清单和设计规范 ? 编码人员讲述程序的逻辑结构,其他人员提问题并判断 是否存在错误 ( 对照历来常见的编码错误列表 ) ? 注意力集中在发现错误而非纠正错误上(非调试) ? 会议结束后,程序员会得到一份已发现错误的清单 ? 代码检查的其他作用 ? 程序员会得到编程风格、算法选择及编程技术等方面的 反馈信息其他参与者也可以同样受益 代码检查 ? 人员组成( 4 人) ? 一人负责协调:分发材料、安排进程、确保错误随后得到改正 ? 被测试程序的编码人员 ? 程序的设计人员和一名测试专家 ? 实施过程 ? 协调人在代码检查前几天分发程序清单和设计规范 ? 编码人员讲述程序的逻辑结构,其他人员提问题并判断是否存 在错误 ? 对照历来常见的编码错误列表分析程序 ? 注意力集中在发现错误而非纠正错误上(非调试) ? 会议结束后,程序员会得到一份已发现错误的清单 代码检查的错误列表 ? 1. 数据引用错误 ? 变量使用前是否赋值或初始化? 容易引起变量使用错误,特别是对于指针或引用变量。 在 java 中要求变量在使用前必须初始化。 ? 数组下标的范围和类型 是否存在下标越界错误,下表类型是否为整型。 ? 通过指针引用的内存单元是否存在(虚调用)? 如在函数返回局部变量的指针或引用时会产生虚调用错误。 ? 被引用的变量或内存的属性是否与编译器预期的一致? 如 A 类型的指针或引用是否指向的是非 A 类型对象。 代码检查的错误列表( cont ) ? 2. 数据声明错误 ? 是否所有变量都已声明? 绝大多数编程语言要求变量先定义后使用,可保证变量使用的 安全性。 ? 默认的属性(默认值)是否正确? ? 变量的初始化是否正确?变量的初始化是否与 其存储空间的类型一致? ? 是否每个变量都有正确的长度、类型和存储类 别? ? 是否存在相似名称的变量? ? 3. 运算错误 ? 是否存在非算术变量之间的运算? ? 是否存在混合模式的运算?( int 与 float 类型) ? 是否存在不同字长变量之间的运算?( int 与 long 类型) ? 目标变量大小是否小于所赋值的大小?(精度损失或越 界错误) ? 中间结果是否上溢或下溢? ? 是否存在除 0 错误? ? 操作符的优先顺序是否正确? ? 整数除法是否正确?(精度问题,如 2* ( i/2 ) ==i ) 代码检查的错误列表( cont ) 代码检查的错误列表( cont ) int x = 1; int y = 2; float z = 0; z = x/y; System.out.println (z = z); OU
文档评论(0)