
1目的
1)介绍产品集成计划编制时需考虑的集成准则,集成方法,供进行产品集成过程选择使用。
2集成准则
2)集成的准则是为了集成过程中需要遵循的集成的规则,各项目的集成准则可根据此内容编写适合项目的集成准则:
1)必须检查集成相关的文档和构件的完备性,描述的准确性和内容的一致性;
2)必须验证集成构件或模块的版本,和对应的文档说明;
3)必须按照测试计划检测系统集成的环境和配置要求;
4)必须确认集成测试方法和用例,要说明确认测试应测试哪些方面,并给出必要的测试用例。除了考虑功能、性能以外,还需检验其它方面的要求。例如,可移植性、兼容性、可维护性、人机接口以及开发的文件资料等是否符合要求。对于非功能性模块需要明确测试的对象,明确测试的时间和测试用例,规定预期的结果和评价指标;
5)必须建立和维护集成环境和评价标准;
6)必须对集成过程中发现的问题进行记录,确定原因,制定解决办法和解决计划。
3集成方法
3.1一次性集成方式
3)一次性集成方式是一种非增值集成方式,也叫整体拼装。按这种集成方式,首先对每个模块分别进行模块测试,然后再把所有模块集成在一起进行测试,最终得到要求的软件系统。单元测试和集成顺序如图所示。
图31一次性集成方式
4)在图中,模块d1,d2,d3,d4,d5是对各个模块做单元测试时建立的驱动模块,s1,s2,s3,s4,s5是为单元测试而建立的桩模块。这种一次性集成方式试图在辅助模块的协助下,在模块单元测试的基础上,将所测模块连接起来进行测试。但是由于程序中不可避免地存在模块间接口、全局数据结构等方面的问题,所以一次试运行成功的可能性并不很大。其结果发现有错误,但茫然找不到原因。查错和改错都会遇到困难。
3.2增殖式集成方式
5)增值式集成方式又称渐增式集成。首先是对一个个模块进行模块单元测试,然后将这些模块集成成较大系统,在集成的过程中边连接边测试,以发现连接过程中产生的问题。最后增殖逐步集成成为要求的软件系统。
3.3自顶向下的集成方式
6)这种集成方式是将模块按系统程序结构,沿控制层次自顶向下进行集成。其步骤如下:
1)以主模块为所测模块兼驱动模块,所有直属于主模块的下属模块全部用桩模块对主模块进行测试。
2)采用深度优先(depth-first)(如图11-2)或宽度优先(breadth-first)的策略,用实际模块替换相应桩模块,再用桩代替它们的直接下属模块,与已测试的模块或子系统集成成新的子系统。
3)进行回归测试(即重新执行以前做过的全部测试或部分测试),排除集成过程中引起的错误的可能。
4)判断是否所有的模块都已集成到系统中?是则结束测试,否则转到(2)去执行。
图 自顶向下集成方式(按深度方向集成)
7)自顶向下的集成方式在测试过程中较早地验证了主要的控制和判断点。在一个功能划分合理的程序模块结构中,判断常常出现在较高的层次里,因而较早就能遇到。如果这主要控制有问题,尽早发现它能够减少以后的返工,所以这是十分必要的。如果选用按深度方向集成的方式,可以首先实现和验证一个完整的软件功能,可先对逻辑输入的分支进行集成和测试,检查和克服潜藏 的错误和缺陷,验证其功能的正确性,就为其后对主要加工分支的集成和测试提供了保证。
8)此外,功能可行性较早得到证实,还能够给开发者和用户带来成功的信心。自顶各下的集成和测试存在一个逻辑次序问题。在为了充分测试较高层的处理而需要较低层处理的信息时,就会出现这类问题。在自顶向下集成阶段,还需要用桩模块代替较低层的模块。
9)为了能够准确地实施测试,应当让桩模块正确而有效地模拟子模块的功能和合理的接口,不能是只包含返回语句或只显示该模块已调用信息,不执行任何功能的哑模块。如果不能使桩模块正确地向上传递有用的信息,可以采用以下解决办法。
1)将很多测试推迟到桩模块用实际模块替代了之后进行;
2)进一步开发能模拟实际模块功能的桩模块;
3)自底向上集成和测试软件。
3.4自底向上的集成方式
10)这种集成的方式是从程序模块结构的最底层的模块开始集成和测试。因为模块是自底向上进行集成,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经集成并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。自底向上增殖的步骤如下:
1)由驱动模块控制最底层模块的并行测试;也可以把最底层模块组合成实现某一特定软件功能的簇,由驱动模块控制它进行测试。
2)用实际模块代替驱动模块,与它已测试的直属子模块集成成为子系统。
3)为子系统配备驱动模块,进行新的测试。
4)判断是否已集成到达主模块。是则结束测试,否则执行(2)。
11)用下图来说明自底向上集成和测试的顺序。
图 32自底向上增值集成方式
12)自底向上进行集成和测试时,需要为所测模块或子系统编制相应的驱动模块。常见的几种类型的驱动模块如图所示:
图33驱动模块的几种选择
13)随着集成层次的向上移动,驱动模块将大为减少。如果对程序模块结构的最上面两层模块采用自顶向下进行集成和测试,可以明显地减少驱动模块的数目,而且可以大大减少把几个系统集成起来所需要做的工作。
3.5混合集成方式
14)自顶向下增殖的方式和自底向上增殖的方式各有优缺点。一般来讲,一种方式的优点是另一种方式的缺点。
15)自顶向下集成方式的缺点是需要建立桩模块。要使桩模块能够模拟实际子模块的功能十分困难,因为桩模块在接收了所测模块发送的信息后需要按照它所代替的实际子模块功能返回应该回送的信息,这必将增加建立桩模块的复杂度,而且导致增加一些附加的测试。同时涉及复杂算法和真正输入/输出的模块一般在底层,它们是最容易出问题的模块,到集成和测试的后期才遇到这些模块,一旦发现问题,导致过多的回归测试,而自顶向下集成方式的优点能够较早地发现在主要控制方面的问题。
16)自底向上集成方式的缺点是"程序一直未能作为一个实体存在,直到最后一个模块加上去后才形成一个实体"。就是说,在自底向上集成和测试的过程中,对主要的控制直到最后才接触到。但这种方式的优点是不需要桩模块,而建立驱动模块一般比建立桩模块容易,同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和测试,可以把最容易出问题的部分在早期解决。此外自底向上增殖的方式可以实施多个模块的并行测试,提高测试效率。因此,通常是把以上两种方式结合起来进行集成和测试。下面简单介绍三种常见的综合的集成方式。
17)衍变的自顶向下的增殖测试:它的基本思想是强化对输入/输出模块的和引入新算法模块的测试,并自底向上集成成为功能相当完整且相对的子系统,然后由主模块开始自顶向下进行增殖测试。
18)自底向上-自顶向下的增殖测试:它首先对含读操作的子系统自底向上直至根结点模块进行集成和测试,然后对含写操作的子系统做自顶向下的集成与测试。
19)回归测试:这种方式采取自顶向下的方式测试所修改的模块及其子模块,然后将这一部分视为子系统,再自底向上测试,以检查该子系统与其上级模块的接口是否适配。
20)在集成测试时,测试者应当确定关键模块,对这些关键模块及早进行测试。关键模块至少应具有以下几种特征之一:(1)满足某些软件需求;(2)在程序的模块结构中位于较高的层次(高层控制模块);(3)较复杂、较易发生错误;(4)有明确定义的性能要求。
21)在做回归测试时,也应该集中测试关键模块的功能。
