在软件开发生命周期过程中,有很多种软件测试模型,不同的测试模型其对应的测试级别也有不同,以最典型的V模型为例,软件测试级别可以分为组件测试、集成测试、系统测试和验收测试。今天我们先来了解一下什么是组件测试。
组件测试在实际的测试过程中所对应的阶段是我们的单元测试阶段,组件测试是最低层的一个级别的测试。在整个开发过程中,单元模块是开发工程师最先开发出来的,单元模型是最小的组件,通常单元模块是我们说的函数或类,对于第二代语言,单元模块就是函数,对于面向对象的语言,单元模块就是类。把对于这类单元模块的测试称为组件测试。
组件测试的具体目的如下:
(1)验证代码是与设计相符合的。
(2)发现设计和需求中存在的错误。
(3)发现在编码过程中引入的错误。
关于组件测试需要关注两个维度的内容:功能方面和非功能方面。功能方面主要是内部的逻辑结构,验证程序内部逻辑结构是否满足设计要求,当然除此之外还包括内部数据结构、独立路径集等方面的内容。非功能测试主要是其他逻辑设计之外的内容,主要包括代码性能、内存泄漏、代码健壮性、代码可靠性等。
单元测试需要一个环境,也就是如果要测试一个函数或类,它不可能独立运行,它需要存在一定的条件下才能运行,在这个环境中会涉及两个重要的组成部分:桩模块和驱动模块。
桩模块(Stub)是指模拟被测试的模块所调用的模块,而不是软件产品的组成部分。主模块作
为驱动模块,与之直接相连的模块用桩模块代替。
驱动单元(Driver):所测函数的主程序,它接收测试数据,并把数据传送给所测试单元,最后再输出实测结果。
当然如果每测试一个单元模块都需要写这么多桩模块和驱动模块,那么工作效率就会很低,所以现在有很多的一些专业的工具来实现,如Gtest、Junit 等。