优点是能够较早地发现在主要控制方面的问题。
自底向上集成是从树的叶子开始,并编写相应的测试驱动程序来代替调用的模块。相对自顶向下集成需要开发的桩,要开发的测试驱动的数量要少些。大多数系统在接近叶模块时,都有高扇出低扇入的特点,扇出是指该模块直接调用的下级模块的个数;扇入是指直接调用该模块的上级模块的个数。但是测试驱动程序比桩程序复杂。
上图是一个自底向上集成的过程。随着集成层次向上移动,驱动程序将大为减少。如果对程序模块结构的最上面两层模块采用自顶向下进行集成和测试,可以明显地减少驱动模块的数目,而且可以大大减少把几个系统集成起来所需要做的工作。
自底向上集成方式的缺点是“程序一直未能作为一个实体存在,直到最后一个模块加上去后才形成一个实体”。就是说,在自底向上集成和测试的过程中,对主要的控制直到最后才接触到。
优点是不需要桩程序,同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和测试,可以把最容易出问题的部分在早期解决。此外,自底向上集成的方式可以实施多个模块的并行测试,提高测试效率。
混合集成测试就是把前面介绍的两种方式结合起来进行集成和测试。这样可以兼具两者的优点。下面介绍3种常见的混合式增殖方式:
衍变的自顶向下的增殖方式:它的基本思想是强化对输入/输出模块和引入新算法模块的测试,并自底向上集成为功能相当完整且相对独立的子系统,然后由主模块开始自顶向下进行增殖测试。
自底向上- 自顶向下的增殖测试:它首先对含读操作的子系统自底向上直至根结点模块进行集成和测试,然后对含写操作的子系统作自顶向下进行集成与测试。
回归测试:这种方式采取自顶向下的方式测试所修改的模块及其子模块,然后将这一部分视为子系统,再自底向上测试,以检查该子系统与其上级模块的接口是否匹配。