单元测试和集成测试是软件测试中基本且非常重要的测试技术,它们是按照测试的阶段进行划分的。程序在开发的过程是分段构建和测试的,到最后合起来实现更大的功能。
1.单元测试
单元测试又叫模块测试(module testing),是指对软件中最小的可测试单元进行测试。不同的人对于单元的理解可能不同,如果将图8-3所示的小房子看成一个软件,那么单元就是组成这个小房子的积木。对每一块积木都可以进行单元测试。同样,单元也可以理解成Java语言里的类或C语言里的函数等。

图8-3 单元测试
那么单元测试应该在何时进行呢?通常在大企业里单元测试代码是由程序员进行编写的,在功能模块实现的同时,对应的单元测试代码也应该编写完成。建议程序员自己或测试工程师执行测试用例,如果由程序员执行,必须交叉测试,以免自己测试自己的代码。
案例2:单元测试的例子。
下面的Java程序,在main()方法里定义了一个整数型数组,用一个for循环接收数组元素的输入,并且每接收到一个数组元素后都会调用iszero()方法,判断当前的值是否为0,如果为0则打印1,不为0就输入自身。
在进行单元测试时,首先需要通过对照代码规范进行静态测试,然后对程序进行编译运行,检测程序是否可正确运行,最后进行动态测试,进一步检查运行结果是否正确。
首先,类似案例1,这段代码不规范的地方在于缺少注释,并且变量定义和方法之间也没有添加空行。


其次,编译程序,检查是否存在编译问题,如果编译通过则运行程序,输入“54029”,按Enter键,最终输出结果为“54129”,结果正确。(https://www.xing528.com)
最后,通过动态测试进一步检查程序是否正确运行。可以尝试输入一些非法数据检查程序的容错性和边界值等问题。
(1)对于非法数据的容错性。用户的输入是不可知的,程序要求只能输入5个整数,但用户可能只输入了4个整数,或者输入了6个整数,或者输入了字母,那么这时程序的容错性到底如何呢?设计一条测试用例,要求输入“d e r e k”,然后按Enter键,其运行结果如图8-4所示。

图8-4 程序运行结果
可以看到,这时程序报错,所以还需要进一步修改完善代码,将这部分容错能力加强。
(2)边界值问题。程序用一个for循环接收5个整数[for(i=0;i<=4;i++){}],用户输入的是不可知的5个数。假如用户输入了6个整数,程序会怎么响应呢?这里输入“5402900”,按Enter键,程序运行结果如图8-5所示。

图8-5 程序运行结果
测试的结果与预期的结果相符,程序自动过滤掉了输入的第6、7两个数,或者说数组a在接收完5个整数后便不再接收数据。美中不足的是,当发现用户输入超过5个整数后,程序不能够给用户一些提示。
2.集成测试
当单个单元通过测试以后,就需要将单元集成到一起,组成一个软件或软件片段,进入集成测试阶段。集成测试更多注意各个单元之间的接口问题。采取这种测试策略对于隔离软件缺陷非常有效,在某个单元发现问题时,这个问题肯定就在这个特定单元,如果在集成后发现问题,那很大程度上就是在单元集成时单元交互出现了问题。
集成测试应该在何时进行呢?集成测试一般在单元测试通过以后进行,但在实际工作中不可能等到所有单元都开发并测试完成后才进行集成测试,二者往往交叉进行,即在测试完几个单元后,再把这几个测试完的单元集成在一起进行集成测试。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
