软件单元测试方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个单元测试(6)
其他考虑到的测试方法的尝试
存在重复的最大值的情况 [9,7,9,8] 只有一个元素的情况 [1] 全是负值的情况 [-9,-8,-7] 编译源文件并运行修改后的测试,发现重复最大值和只有一个元素
的情况,测试都通过了。但是全是负值的情况出现了问题,如下:
一个单元测试(7)
一个单元测试(5)
再次进行源文件被测试方法的bug查找与修改
为什么返回的最大值是8,好像程序根本没有考虑list中的最 后一个元素似的。
查看源文件,发现for循环结束得早了。 修改:将for循环中i < length-1修改成为i < length 编译源文件并运行该测试,程序将没有failure输出。
第二个开发者:期限的前一天,集成代码到整个系统中,并 且能够很好的运行;虽然在其中也出现了一个小问题,但是 很对就发现了问题所在,并在几分钟之内就解决了这个问题。
序言(3)
不写测试的借口
编写单元测试太花时间了 运行测试的时间太长了 测试代码并不是我的工作 我并不清楚代码的行为,所以也就无从测试 这些代码都能够编译通过 公司请我来是为了写代码,而不是写测试 如果我让测试员或者QA人员没有工作,那么我会觉得很内疚 我的公司并不会让我在真实系统中运行单元测试
return 0; } …… }
1. 序言 2. 一个单元测试示例 3. 测试内容及方法 4. 边界条件 5. 单元测试工具 6. Mock对象 7. 好的测试品质 8. 在项目中进行测试
提纲
测试内容
单元测试的对象:软件设计的最小单位——模块或函数
如果数组为null,会出现什么情况? 如果数组的长度为0,会出现什么情况?
通常,我们会认为这是一个错误,将抛出一个异常,修改方法: int Largest(int list[], int length) {
int i, max; if ( list == null || length == 0) {
一个单元测试(3)
测试一个简单的方法
编写测试代码
TEST(CheckResult, Max_Int) {
int list[] = {7,8,9}; CHECK(Largest(List, 3) == 9); }
编译结果如下
一个单元测试(4)
源程序中被测试方法的错误查找与修改
发现max值没初始化 然后进行修改并且设置max的初始数值:max=0 重新编译并运行测试 测试运行结果如下:
第二个模块者:写一个模块的时候,会附带写一个简短的测 试程序来测试这个方法。并且在未对刚写的方法做出确认 (通过测试确认之前的方法和他所期望的结果一致)之前, 是不会接着写新代码的。
序言(2)
两种不同的做法带来的两种不同的结果:
第一个开发者:期限的前一天,集成演示时,一点输出都没 有;利用调试器跟踪,经过长时间的琢磨,找到并纠正了这 个bug,但是,同时又发现了其他好几个bug。结果,筋疲力 尽,而且未能及时完成任务。
第三次进行源文件被测试方法的bug查找与修改
为什么返回的最大值是0,它是从哪里来的? 看来用0来初始化max是个错误的做法 我们应该用list[0]来作为max的初始值 修改过后,便以并重新运行该测试,结果也通过了该测试。
一个单元测试(8)
是否说明获取数组最大值的方法已经完全没有问题了 呢?
计划你的测试
给定一个数组[7,8,9],这个方法返回9。这就构成了一个合 理的测试。
你能想出其他一些测试么?
如果list中有两个相等的最大值,将会出现什么情况? [7,9,8,9] → 9
如果list中只有一个元素,结果会是怎么样的呢? [1] → 1
如果list所包含的是负数,结果又会怎么样呢? [-9,-8,-7] → -7
单元测试
什么是单元测试
单元测试是开发者编写的一小段代码,用于检验被测代码的 一个很小的、很明确的功能是否正确。
通常而言,一个单元测试是用于判断某个特定条件(或者场 景)下某个特定函数的行为。
执行单元测试,是为了证明某段代码的行为确实和开发者所 期望的一致
为什么要使用单元测试
单元测试不但会使你的工作完成的更轻松,而且会令你的设 计变得更好,甚至大大减少你花在调试上面的时间。
软件单元测试方法
工业通讯技术部 张国亮
1. 序言 2. 一个单元测试示例 3. 测试内容及方法 4. 边界条件 5. 单元测试工具 6. Mock对象 7. 好的测试品质 8. 在项目中进行测试
提纲
Biblioteka Baidu言(1)
要向客户演示系统的基本功能,且临近最终期限时, 两个开发者的两种不同的做法:
第一个开发者:每天着急地写代码,写完一个类又写一个类, 写完一个方法又接着写两一个方法,有时不得不停下来做一 些调整,使得代码能够编译通过。
单元测试可以提高底层代码的正确性,从而提高调用它的高 层代码的正确性。
使用单元测试这个简单有效的技术就是为了令代码变得更加 完美。
目的与范围
目的
为了提高软件开发效率和质量 统一单元测试风格 保证文档与单元 测试编码的一致性 方便开发人员进行单元测试的开发 使单元测试能够有效正常的自动执行
范围
单元测试属于软件模块开发过程中的活动
1. 序言 2. 一个单元测试示例 3. 测试内容及方法 4. 边界条件 5. 单元测试工具 6. Mock对象 7. 好的测试品质 8. 在项目中进行测试
提纲
一个单元测试(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)