fsword's blog

A blogging framework for hackers.

持续集成中的缺环-1

| Comments

我们通常说的持续集成,是指通过彻底的自动化手段,让软件在需求、设计、编码、测试这几个环节上自然流动,形成连续的迭代过程,这里的关键词是“持续”,基本技术手段就是“自动化”了

不过说起来容易做起来难,目前为止,很多公司和团队都在一定程度上做了一些努力,我们也是如此,不过在审视自己的工作时,发现有个环节似乎缺失了,这就是联调或者说系统集成。

从某种角度上看,软件开发的过程是将大功能拆成小任务,然后自底向上逐步累积的,如图

software_layer

我们的测试实际上也是循着这个基本前提进行的。众所周知,越是底层的软件单元,越容易进行覆盖性测试,但代价是需要在边界上进行模拟,也许是mock,也许是simulator,而高层的测试可以避免在边界上的这种模拟成本,代价是不能完备的覆盖所有可能的逻辑分支。

通常的做法是结合,我们区分了单元测试、模块测试、集成测试几个层次。在单元测试中,我们使用mock技术尽可能覆盖逻辑分支;而在集成测试环节,更多的是关键路径和用户视角。

但是在我们这样的软件系统中,很少有独立工作的应用系统,大部分系统都是基于某种分布式架构进行协同的,常见的情况是这样的

old way

这样的结构对我们的质量工作提出了挑战,因为我们没有对应系统间协同测试的基础设施(至少我目前没有找到),这迫使我们尝试一条以前没有走过的路。

如前所述,基本的思路还是自动化,只不过现在我们要处理多个系统的自动部署和测试,相对而言,这种场景中的测试更接近验收测试,相对不是很复杂,所以关键就在部署上,我们希望实现这样的一张图

new way

Comments