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