1、为什么总是集成不起来?为什么总是集成不起来?2Integration Testing34被测被测模块模块单元单元测试测试设计设计信息信息集成集成测试测试被测被测模块模块单元单元测试测试被测被测模块模块单元单元测试测试测试过测试过的模块的模块确认确认测试测试系统系统测试测试软件软件需求需求其它系其它系统元素统元素装配好装配好的软件的软件 确认确认的软件的软件可运可运行的行的软件软件56集成集成测试测试系统系统测试测试单元单元测试测试灰盒测试灰盒测试,采用较多黑采用较多黑盒方法构造盒方法构造测试用例测试用例 黑盒测试黑盒测试大量采用大量采用白白盒测试盒测试方法方法测试方法测试方法模块间模块间的的集
2、成和调集成和调用关系用关系整个系统整个系统,包括系统包括系统软硬件等软硬件等模块内部模块内部程序错误程序错误对象对象找出与软件设计相找出与软件设计相关的程序结构,模关的程序结构,模块调用关系,模块块调用关系,模块间接口方面的问题间接口方面的问题对整个系统进行一对整个系统进行一系列的整体、有效系列的整体、有效性测试性测试消除局部模块逻辑消除局部模块逻辑和功能上的错误和和功能上的错误和缺陷缺陷目的目的系统结构设计系统结构设计目标说明书目标说明书需求说明书等需求说明书等程序结构设计程序结构设计模块逻辑设计模块逻辑设计模块外部说明模块外部说明测试依据测试依据78910集成测试的原则集成测试的原则n(1
3、)所有公共接口必须被测试到;)所有公共接口必须被测试到;n(2)关键模块必须进行充分测试;)关键模块必须进行充分测试;n(3)集成测试应当按一定层次进行;)集成测试应当按一定层次进行;n(4)集成测试策略选择应当综合考虑质量、成本和进度三者之间的关系;)集成测试策略选择应当综合考虑质量、成本和进度三者之间的关系;n(5)集成测试应当尽早开始,并以概要设计为基础;)集成测试应当尽早开始,并以概要设计为基础;n(6)在模块和接口的划分上,测试人员应该和开发人员进行充分沟通;)在模块和接口的划分上,测试人员应该和开发人员进行充分沟通;n(7)当测试计划中的结束标准满足时,集成测试才能结束;)当测试计
4、划中的结束标准满足时,集成测试才能结束;n(8)当接口发生修改时,涉及到的相关接口都必须进行回归测试;)当接口发生修改时,涉及到的相关接口都必须进行回归测试;n(9)集成测试应根据集成测试计划和方案进行,不能随意测试;)集成测试应根据集成测试计划和方案进行,不能随意测试;n(10)项目管理者应保证测试用例经过审核;)项目管理者应保证测试用例经过审核;n(11)测试执行结果应当如实的记录。)测试执行结果应当如实的记录。 12131415161718192021222324实例实例n对如图对如图5.3所示的程序,采用自顶向下集成方所示的程序,采用自顶向下集成方法,按照深度优先方式进行集成测试。法,
5、按照深度优先方式进行集成测试。 ABCDEFG 图5.3 程序结构图实例 ASBSCSD(a)测试AABSCSDSESF (b)测试BABCSDEFSG (e)测试CABCSDEFG (f)测试GABCDEFG(g)测试DABSCSDESF (c)测试EABSCSDEF (d)测试F图5.5 自顶向下集成27282930实例 测试E测试F测试G测试D测试(A、B、CD、E、F、G) 图5.6 自底向上集成测试(B、E、F)测试(C、G)3233343536实例测试E测试F测试G测试A测试(A、B、CD、E、F、G) 图5.7 三明治集成测试(B、E、F)测试(C、G)38394041逆向测试是
6、指,当你输逆向测试是指,当你输入无效的输入时并且期入无效的输入时并且期望得到一个错误的信息。望得到一个错误的信息。424344计划阶段设计阶段实现阶段执行阶段分析评估缺陷跟踪根据项目组提供设计模型和集成构建计划,制定出适合本项目的集成测试计划根据集成测试计划和设计模型设计集成测试用例及测试过程获取工作版本后,由测试设计员创建测试脚本(可选)、更新测试过程,由设计员负责设计驱动程序和桩,实施员负责实施驱动和桩测试人员根据测试脚本(可选)和工作版本执行集成测试,并记录测试结果依照集成测试计划和测试结果,由测试设计员负责会同集成员、编码员、设计人员评估此次测试,并生成测试评估摘要 454647484
7、95051525354555657585960计划阶段设计阶段实现阶段执行阶段分析评估缺陷跟踪集成测试计划集成测试设计方案集成测试用例、规程、(代码、脚本、工具)集成测试报告5.5 面向对象的集成测试 5.5.1对象交互对象交互涵盖了程序中的绝大部分活动。它包括了对象及其组件的消息,还包括了对象和与之相关的其他对象之间的消息。对象的正确协作(即交互)对于程序的正确性是非常重要的。对象交互的测试方法:原始类、汇集类、协作类,分别讨论。原始类的测试使用类的单元测试方法。 5.5 面向对象的集成测试n汇集类测试n 可以使用测试原始类的方法来测试汇集类,测试驱可以使用测试原始类的方法来测试汇集类,测试
8、驱动程序要创建一些实例,这些实例作为消息中的参数动程序要创建一些实例,这些实例作为消息中的参数被传递给一个正在测试的集合。测试的目的主要是保被传递给一个正在测试的集合。测试的目的主要是保证那些实例被正确从集合中移出。有些测试用例会说证那些实例被正确从集合中移出。有些测试用例会说明集合对其容量所做的限制。假如在实际应用中可能明集合对其容量所做的限制。假如在实际应用中可能要加入要加入40或或50条信息,那么生成的测试用例至少要增条信息,那么生成的测试用例至少要增加加50条信息。如果无法估算出一个有代表性的上限,条信息。如果无法估算出一个有代表性的上限,那么就使用集合中的大量对象进行测试。那么就使用
9、集合中的大量对象进行测试。5.5 面向对象的集成测试 协作类测试 凡不是汇集类的非原始类就是协作类,该类的一个凡不是汇集类的非原始类就是协作类,该类的一个或多个操作中使用其他的对象并将其作为它们的实现中或多个操作中使用其他的对象并将其作为它们的实现中不可缺少的一部分。当类接口中的一个操作的某个后置不可缺少的一部分。当类接口中的一个操作的某个后置条件引用了一具对象的实例状态,并且(或者)说明那条件引用了一具对象的实例状态,并且(或者)说明那个对象的某个属性被使用或修改了,那么这个类就是一个对象的某个属性被使用或修改了,那么这个类就是一个协作类。协作类测试的复杂性远远高于汇集类或原始个协作类。协作
10、类测试的复杂性远远高于汇集类或原始类的测试。类的测试。5.5 面向对象的集成测试 5.5.2面向对象集成测试的常用方法 1抽样测试 抽样测试提供了一种运算法则,它使我们能够从一组可能的测抽样测试提供了一种运算法则,它使我们能够从一组可能的测试用例中选择一个测试序列。但并不要求一定要首先明确如何来确试用例中选择一个测试序列。但并不要求一定要首先明确如何来确定测试用例的总体。测试过程的目的在于定义感兴趣的测试总体,定测试用例的总体。测试过程的目的在于定义感兴趣的测试总体,然后定义一种方法,以便在这些测试用例中选择哪些被构建、哪些然后定义一种方法,以便在这些测试用例中选择哪些被构建、哪些被执行。被执
11、行。 2. 正交阵列测试 正交阵列测试提供了一种特殊的抽样方法,这种方法通过定正交阵列测试提供了一种特殊的抽样方法,这种方法通过定义一组交互对象的配对方式组合,以尽力限制测试配置的组合数目义一组交互对象的配对方式组合,以尽力限制测试配置的组合数目激增。激增。 5.5 面向对象的集成测试5.5.3分布式对象测试 分布式对象的概念和特点 在类的层次上进行更彻底的测试。在类的层次上进行更彻底的测试。 在记录事件发生顺序的同时,执行大量的测试用例。在记录事件发生顺序的同时,执行大量的测试用例。 指定标准的测试环境。指定标准的测试环境。 2测试中需要注意的情况 局部故障。局部故障。 超时。超时。 结构的动态性。结构的动态性。 线程。线程。 同步。同步。