软件单元测试方法.pptVIP

  1. 1、本文档共93页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件单元测试方法 工业通讯技术部 张国亮 提纲 序言 一个单元测试示例 测试内容及方法 边界条件 单元测试工具 Mock对象 好的测试品质 在项目中进行测试 序言(1) 要向客户演示系统的基本功能,且临近最终期限时,两个开发者的两种不同的做法: 第一个开发者:每天着急地写代码,写完一个类又写一个类,写完一个方法又接着写两一个方法,有时不得不停下来做一些调整,使得代码能够编译通过。 第二个模块者:写一个模块的时候,会附带写一个简短的测试程序来测试这个方法。并且在未对刚写的方法做出确认(通过测试确认之前的方法和他所期望的结果一致)之前,是不会接着写新代码的。 序言(2) 两种不同的做法带来的两种不同的结果: 第一个开发者:期限的前一天,集成演示时,一点输出都没有;利用调试器跟踪,经过长时间的琢磨,找到并纠正了这个bug,但是,同时又发现了其他好几个bug。结果,筋疲力尽,而且未能及时完成任务。 第二个开发者:期限的前一天,集成代码到整个系统中,并且能够很好的运行;虽然在其中也出现了一个小问题,但是很对就发现了问题所在,并在几分钟之内就解决了这个问题。 序言(3) 不写测试的借口 编写单元测试太花时间了 运行测试的时间太长了 测试代码并不是我的工作 我并不清楚代码的行为,所以也就无从测试 这些代码都能够编译通过 公司请我来是为了写代码,而不是写测试 如果我让测试员或者QA人员没有工作,那么我会觉得很内疚 我的公司并不会让我在真实系统中运行单元测试 单元测试 什么是单元测试 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。 通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。 执行单元测试,是为了证明某段代码的行为确实和开发者所期望的一致 为什么要使用单元测试 单元测试不但会使你的工作完成的更轻松,而且会令你的设计变得更好,甚至大大减少你花在调试上面的时间。 单元测试可以提高底层代码的正确性,从而提高调用它的高层代码的正确性。 使用单元测试这个简单有效的技术就是为了令代码变得更加完美。 目的与范围 目的 为了提高软件开发效率和质量 统一单元测试风格 保证文档与单元 测试编码的一致性 方便开发人员进行单元测试的开发 使单元测试能够有效正常的自动执行 范围 单元测试属于软件模块开发过程中的活动 提纲 序言 一个单元测试示例 测试内容及方法 边界条件 单元测试工具 Mock对象 好的测试品质 在项目中进行测试 一个单元测试(1) 简单的例子: 查找list[]中的最大值:int Largest(int list[], int length); 首份实现代码如下: int Largest(int list[], int length) { int i,max; for(i = 0; i (length – 1); i ++ ) { if(list[i] max) { max=list[i]; } } return max; } 一个单元测试(2) 计划你的测试 给定一个数组[7,8,9],这个方法返回9。这就构成了一个合理的测试。 你能想出其他一些测试么? 如果list中有两个相等的最大值,将会出现什么情况? [7,9,8,9] → 9 如果list中只有一个元素,结果会是怎么样的呢? [1] → 1 如果list所包含的是负数,结果又会怎么样呢? [-9,-8,-7] → -7 一个单元测试(3) 测试一个简单的方法 编写测试代码 TEST(CheckResult, Max_Int) { int list[] = {7,8,9}; CHECK(Largest(List, 3) == 9); } 编译结果如下 一个单元测试(4) 源程序中被测试方法的错误查找与修改 发现max值没初始化 然后进行修改并且设置max的初始数值:max=0 重新编译并运行测试 测试运行结果如下: 一个单元测试(5) 再次进行源文件被测试方法的bug查找与修改 为什么返回的最大值是8,好像程序根本没有考虑list中的最后一个元素似的。 查看源文件,发现for循环结束得早了。 修改:将for循环中i length-1修改成为i length 编译源文件并运行该测试,程序将没有failure输出。 一个单元测试(6) 其他考虑到的测试方法的尝试 存在重复的最大值的情况 [9,7,9,8] 只有一个元素的情况 [1] 全是负值的情况 [-9,-8,-7] 编译源文件并运行修改后的测试,发现重复最大值和只有一个元素的情况,测试都通过了。但是全是负值的情况出现了

文档评论(0)

haocen + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档