软件测试系列培训课程之一单元测试.pptVIP

软件测试系列培训课程之一单元测试.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

创奇研究院

软件测试系列培训课程之一

目录

为什么要单元测试

第一个单元测试

测试哪些内容

讨论一些话题

从一个案例开始

小萍和小迪共同负责一个项目,项目最后交付的期限越来越近了。

小萍每天都在心急火燎的编写代码,写完一个类又写一个类,写完一个函数又接着写另一个函数,还经常不得不停下来做一些调整,使得代码能够通过编译。

小萍一直保持着这种工作方式,直到最后期限的前一天。而这时已经到了演示所有代码的时候了。

小萍运行了最上层的程序,但是一点输出也没有,什么也没有。

这时只好用调试器来单步跟踪了。

“鞥,绝不可能是这样的,这个变量绝不是0啊”

时间已经越来越晚了,小萍终于找到并且纠正了这个BUG;但在这个过程中,小萍又找到了其他好几个BUG;如此几次之后,BUG还是存在,而程序输出仍然没有结果。

小萍已经精疲力尽了,一下子陷入到了无助和无奈的状态。

与此同时,小迪并没有像小萍那么快的写代码。

小迪在每写一个函数的时候,会附带写一个简短的测试程序来测试这个函数。

用这个简单的测试,来验证函数的功能是否和程序员期望的一致。

小迪在未对刚写的函数做出确认之前,是不会接着写新代码的。也就是说,只有等到已知函数都得到确认之后,小迪才会继续编写下一个函数。

最后期限终于到了,小萍没有能完成任务。而小迪的代码被集成到整个系统中,并且能够很好地运行。

什么是单元测试

开发者编写的一小段代码,用于检验被测代码的功能是否正确。

不写测试的接口

1.编写单元测试太花时间了

2.运行测试的时间太长了

3.测试代码并不是我的工作

4.我并不清楚代码的行为,所以也就无从测试

5.我写的这些代码都能够编译通过,所以都是没有问题的,没必要测试

6.公司请我来是为了写代码,而不是写测试

7.如果我让测试员或者QA人员没有工作,那我我会很内疚

8.我的公司并不会让我在真实系统中运行单元测试

为什么需要单元测试

计划你的测试

思考一下如何测试下面这个方法:

StaticintFindMax(int[]list);

比如:给定一个数组[7,8,9],结果应该返回9,这就是一个很合理的测试。

除此之外,你还想到了多少测试呢?

对于一个给定的List而言,元素的位置对该方法的结果不会产生影响:

[7,8,9]→9

[9,8,7]→9

[8,9,7]→9

如果list中有两个相等的最大值呢?

[7,9,8,9]→9

[7,9,9,8]→9

如果list中包含负数,会怎样呢?

[-8,-9,-7]→-7

如果list中只包含一个数呢

[1]

建议借助测试工具快速构建单元测试

本培训试图抛开语言束缚,旨在让开发人员重视单元测试,执行单元测试

测试哪些内容

Right-BICEP

Right--结果是否正确?

B--是否所有的边界条件都是正确的?

I--能查一下反向关联吗?

C--能用其他手段交叉检查一下结果吗?

E--你是否可以强制错误条件发生?

P--是否满足性能要求?

Right--结果正确

如果代码能够正确运行,怎样才能知道它是正确的呢?

在写代码之前,应该先明确需求

建议先设计测试,然后通过“测试驱动”代码编写。

Right--结果正确

2.使用数据文件

对于大量的测试数据,需要考虑用一个独立的数据文件来存储,然后让单元测试程序读取该文件。

B-边界条件

找边界条件是做单元测试最有价值的工作之一,因为bug一般就出现在边界上。

常见的考虑条件:

完全伪造或者不一致的输入数据

格式错误的数据

空值或者不完整的值

一些与意料中的合理值相去甚远的数值

如果要求的是一个不允许出现重复数值的list,但是传入的是一个存在重复值的list

如果要求的是一个有序list,但是传入的是一个无序的list

事情到达的次序是错误的,或者碰巧和期望的次序不一致

可能的边界条件

CORRECT

Conformance(一致性)值是否和预期一致

Ordering(顺序性)值是否如应该的那样,是有序或者无序的

Range(区间性)值是否位于合理的最小值和最大值之内

Reference(依赖性)代码是否引用了一些不在代码本身控制范围之内的外部资源

Existence(存在性)值是否存在

Cardinality(基数性)是否恰好有足够的值

Time(相对或者绝对的实践性)所有事情的发生是否是有序的,是否在正确的时刻?是否恰好及时?

I-检查反向关联

对于一些方法,我们可以使用反向的逻辑来验证。

C-使用其他手段交叉检查

C-使用其他手段交叉检查

用已知可行的手段与被测方法交叉验证是否正确。

E-强制产生错误条件

P-性能特性

优良测试的品质

文档评论(0)

173****2055 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档