《高效编程十八式》(10/13)测试
2012-01-10 19:21
267 查看
测试
王伟冰测试就是指检验程序是否能运行得出正确的结果。“黑盒测试”是指不考虑程序内部如何实现,只检查程序能否对各种不同的输入得出正确的输出结果;“白盒测试”是指深入程序代码内部,测试每一个操作的执行是否正确。测试的方法有很多,而且有专门用来测试的软件,这里都不讲,这里只讲一些测试的原则。
1. 自动化原则:尽量把测试所要做的人工操作减到最少。
比如你想测试程序对于10种不同的输入的结果是否正确,你可以重复启动10次你的程序,每次输入不同的结果,看结果是否正确,但是这样是不是很麻烦?你可以把10次的输入和结果都先放在数组里,然后在主函数里用一个循环,每一次循环就调用你程序的主计算的代码,自动输入,并检查输出是否与预期的一致。这样只需运行一次,结果对不对就自动都出来了。
当然,这样做破坏了原来的代码。如果不想破坏原来的代码,可以另外写一个测试程序,或者直接用测试软件来测试。
2. 写到哪就测到哪。
如果等到整个程序写完再测试,那出了问题上哪找原因?问题可能出在代码的任一个角落,找起来就很麻烦。所以,每写完一个小单元,就要测试一下,确保没有问题了,再写下一个小单元。一个单元就是一个函数或一个类。一般情况下,经过充分测试的小单元存在bug的概率要比没有经过测试的小得多,所以当某次测试结果出错的时候,那么问题很有可能就在最新写进去那个单元里。
写写测测,是不是太麻烦了?但是,如果不测试,那以后出了问题,找起来那可要麻烦得多。相比之下,写写测测的效率还是高一些。
3. 合理安排测试的顺序。
一般情况下,先测试核心功能,再测试其它功能;先测试没有把握的代码,再测试有把握的代码。然后,既然是写到哪测到哪,那么测试的顺序也就是写的顺序。
总之,如果A单元的执行正确性依赖于B单元的正确性,那么B单元应该比A单元先测试。如果彼此不依赖,那次序就无所谓了。
4. 测试不同的平台和环境。
如果你的程序想在不同的操作系统下都能运行,那么就要确保它在每个操作系统下都正确运行。对于网页上的程序,则要测试它在不同浏览器下的正确性。对于汇编程序,则要测试不同的机器。
如果你的程序和操作系统的互动比较多,那么不同平台上的测试工作最好早点进行,除非是很有把握。如果一直都在某个平台上测试,等到最后快完工了再测试其它的平台,可能会突然间冒出很多的错误。
5. 测试集尽量多样化。
测试集就是测试时输入数据的集合。输入数据可能有很多种可以取的值,无法一一测试,所以会找出一些代表,组成测试集。比如测试一个一元函数f(n),n可能取1到100中的整数,要取10个代表,那么找哪些代表好呢?1,2,3,……10,这样都是些小数值,缺乏代表性;10,20,30,……100,这样都是10的倍数,也不太好;还是多样化一些比较好,比如:1,8,31,42,……,85,100。
6. 要测试非法输入和边界值附近的输入。
还是上面的例子f(n),n可取1到100的整数。除了测试输入1到100的值能否得到正确结果,还要测试输入非法数值会出现什么事,比如说输入-10,输入200,输入4.5,输入abc,看看是什么结果。可能程序会崩溃,可能程序会算出一个莫名其妙的结果,可能程序会死循环,可能程序会输出一条友好的信息提示输入有误请重新输入。不管怎么样,结果要符合你的预期才对。
还要测试边界值附近的输入,比如上面1和100是边界值,那么一定要特别测试一下0、1、100、101这四个输入会得到的结果,因为有可能程序里检查边界的代码有误,比如<=100被写成<100,那么输入100会被错误地认为是非法输入。
相关文章推荐
- MDT2012/13功能测试(10)—刷新WinXPx86到Win8.1x64
- caffe学习(五):cifar-10数据集训练及测试(Ubuntu)
- MDT2012/13功能测试(6)—USMT升级安装(Refresh)
- 9-13 测试组工作报告 (by snail)
- 研究生课程 软件测试10: 兼容性测试
- 近期打字测试的成绩(10)
- Window10安装TensorFlow(GPU)与可行性测试
- MDT2012/13功能测试(11)—Rules参数示例(New Computer)
- (转) ASCII码对应表chr(9)、chr(10)、chr(13)、chr(32)、chr(34)、chr(39)、chr(
- 一步一步学Streams:第二部分(13)实践之创建Streams全库复制环境(3)测试
- 变量(10-13)
- 2014 年 10 款有用的 PHP 测试框架
- P51T7,8,9,10,11,12,13
- 基础算法测试——生成一个1-10之间的随机整数组合
- 【软件性能测试-LoadRunner实战技能 13】== LoadRunner_差异并发和同步的Vuser
- BIOS INT 10-13功能调用的“另类”玩法
- AspNet MVC4 教学-10:Asp.Net MVC4 @Html.Action及@Html.RenderAction 的测试
- chr(9)、chr(10)、chr(13)、chr(32)、chr(34)讲解
- TensorFlow深度学习进阶教程:TensorFlow实现CIFAR-10数据集测试的卷积神经网络
- Daily Scrum 10/13