跳转至

Lecture 14. Integration Testing 集成测试

单元测试做完之后,就是集成测试。

单元测试是测试每一个独立的组件。

集成测试的目的是,确保程序当中的每一个组件都能结合得很好。

然而其实集成测试做的不多,而且关于集成测试的工具也比较少。

驱动模块桩模块

驱动模块

驱动和桩模块,是软件的临时成分。

驱动模块的目的很单纯,就是为了访问类库的属性和方法,来检测类库的功能是否正确。

驱动模块是用来模拟被测试模块的上一级模块,相当于被测模块的主程序,调用被测模块。

~~然后走神了~~

桩模块

~~有些走神~~

专供测试用的「假」模块(替身)称为被测模块的桩模块。

关系

驱动模块 调用 软件 调用 桩模块

事实上驱动模块更好写,因为驱动模块只需要考虑怎么调用,而桩模块需要考虑如何实现。打个比方,桩模块就是平衡树的各个功能,非常长,而驱动模块就是主函数,只有几行调用

集成测试常用方法

对于增量集成:

  • 自顶向下(top-down)集成
  • 自底向上(bottom-up)集成
  • 三明治(sandwich)集成,说白了就是前两种合在一起。

此外还有不增量集成。

增量集成大概就说循序渐进的意思,而不增量的比较粗暴,全都直接测了。

自顶向下

差不多就是,先测第一层,没问题就延申到前两层一起测,再没问题就前三层一起测,以此类推……

好处就是,可以比较早期的了解到程序的基本结构框架(虽然细节部分可能还没设计好)

坏处就是,要写好多桩模块。而桩模块可能不是那么好写。而且如果有新的下层模块加入,上层模块可能还要重新测,比如可能上层对下层的调用会隐含着 bug。

自底向上

跟自顶向下相反了。先测最底层,没问题就网上扩展一层,再没问题就继续,以此类推……

好处就是,可以看到各个功能模块的功能。而且桩模块不用来回写了!但是驱动模块每一层都要换一下。同时

缺点就是,知道了细节和底层,但是可能不太了解整体。而且用户通常是最顶层的调用者,所以最后阶段才能以用户的视角进行测试。

三明治

实践中,大部分软件开发都是三明治测试。

有点类似双线程双向搜索的感觉。

具有自顶向下和自底向上的两种好处。但是中间层怎么选择比较困难。

小结

需要设计桩模块和驱动模块。需要考虑到~~考虑到啥来着?~~

端对端

与敏捷测试结合使用。

提了一嘴,好像不太重要?