- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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-性能特性
优良测试的品质
您可能关注的文档
最近下载
- 华为手机营销方法论IPMS和GTM高级培训课件(第一部分)glz.pptx VIP
- (高清版)DB4401∕T 166-2022 《1:500 1:1000 1:2000地形图图式》.docx VIP
- HXD3D型机车检修作业指导书.doc VIP
- 华为GTM与IPMS流程解析glz.pptx VIP
- 家庭治疗历史与流派(2020年10月整理).pdf VIP
- 3.《特殊作业监护人履责管理要求(征求意见稿)》.pdf
- 癸酉本石头记.doc VIP
- 2025至2030中国己内酯行业项目调研及市场前景预测评估报告.docx
- 模具材料价格信息.PDF VIP
- 西门子HMI设备Smart 700 IE、Smart 1000 IE操作说明.pdf VIP
原创力文档


文档评论(0)