《第5章 集成测试》由会员分享,可在线阅读,更多相关《第5章 集成测试(30页珍藏版)》请在金锄头文库上搜索。
1、第5章集成测试 5 1集成测试概述5 1 1集成测试的概念集成 Integration 是指把多个单元组合起来形成更大的单元 集成测试 IntegrationTesting 是在假定各个软件单元已经通过了单元测试的前提下 检查各个软件单元之间的相互接口是否正确 1 软件测试过程 模块中有无故障 发现与接口有关的模块之间的问题 增量式集成测试法 是否满足软件需求 结论性评价 证明系统性能 独立的测试机构 向用户表明系统可以像用户预的那样工作 2 5 1集成测试概述 集成测试主要关注下列问题 1 模块间的数据传递是否正确 2 一个模块的功能是否会对另一个模块的功能产生错误的影响 3 全局数据结构是
2、否有问题 会不会被异常修改 4 块组合起来的功能能否满足要求 5 集成后 各个模块的累积误差是否会扩大 是否达到不可接受的程度 3 5 1集成测试概述 4 5 1集成测试概述 2 8原则模块划分遵循的几个原则 1 本次测试希望测试哪个模块 2 把与该模块最紧密的模块集成在一起 3 考虑划分后的外围模块 分析外围模块和被集成模块之间的信息流是否容易模拟和控制 5 5 1集成测试概述 5 1 2集成测试与系统测试的区别 1 测试对象 2 测试时间 3 测试方法 4 测试内容 5 测试目的 6 测试角度 6 5 1集成测试概述 5 1 3集成测试与开发的关系集成测试是和软件开发过程中的概要设计阶段相
3、对应的 而在软件概要设计中关于整个系统的体系结构就是集成测试用例输入的基础 7 5 1集成测试概述 5 1 4集成测试的层次与原则1 集成测试的层次对于传统软件来说 按集成粒度不同 可以把集成测试分为3个层次 即 1 模块间集成测试 2 子系统内集成测试 3 子系统间集成测试对于面向对象的应用系统来说 按集成粒度不同 可以把集成测试分为2个层次 1 类内集成测试 2 类间集成测试 8 5 1集成测试概述 5 1 4集成测试的层次与原则2 集成测试的原则 1 所有公共接口必须被测试到 2 关键模块必须进行充分测试 3 集成测试应当按一定层次进行 4 集成测试策略选择应当综合考虑质量 成本和进度三
4、者之间的关系 5 集成测试应当尽早开始 并以概要设计为基础 6 在模块和接口的划分上 测试人员应该和开发人员进行充分沟通 7 当测试计划中的结束标准满足时 集成测试才能结束 8 当接口发生修改时 涉及到的相关接口都必须进行回归测试 9 集成测试应根据集成测试计划和方案进行 不能随意测试 10 项目管理者应保证测试用例经过审核 11 测试执行结果应当如实的记录 9 5 2集成测试策略 驱动程序 驱动模块 driver 用以模拟被测模块的上级模块 驱动模块在集成测试中接受测试数据 把相关的数据传送给被测模块 启动被测模块 并打印出相应的结果 桩程序 桩模块 stub 也有人称为存根程序 用以模拟被
5、测模块工作过程中所调用的模块 桩模块由被测模块调用 它们一般只进行很少的数据处理 例如打印入口和返回 以便于检验被测模块与其下级模块的接口 10 5 2集成测试策略 5 2 1非渐增式集成非渐增式集成方法首先对每个子模块进行测试 即单元测试 然后将所有模块全部集成起来一次性进行集成测试 例5 1 对如图5 3所示的程序 采用非渐增式集成方法进行集成测试 11 5 2集成测试策略 12 5 2集成测试策略 5 2 2渐增式集成渐增式集成与 一步到位 的非渐增式集成相反 它把程序划分成小段来构造和测试 在这个过程中比较容易定位和改正错误 对接口可以进行更彻底的测试 可以使用系统化的测试方法 因此
6、目前在进行集成测试时普遍采用渐增式集成方法 当使用渐增方式把模块结合到程序中去时 有自顶向下和自底向上两种集成策略 13 5 2集成测试策略 1 自顶向下集成自顶向下集成方法是一个日益为人们广泛采用的测试和组装软件的途径 从主控制模块开始 沿着程序的控制层次向下移动 逐渐把各个模块结合起来 在把附属于 及最终附属于 主控制模块的那些模块组装到程序结构中去 或者使用深度优先的策略 或者使用宽度优先的策略 例5 2 对如图5 3所示的程序 采用自顶向下集成方法 按照深度优先方式进行集成测试 14 5 2集成测试策略 用以下4个步骤实现自顶向下的结合策略 1 对主控模块进行测试 测试时用桩模块代替所
7、有直接附属于主控模块的模块 2 根据选定的结合策略 每次用一个实际模块代换一个桩模块 新结合进来的模块往往又需要新的桩模块 3 在结合进一个模块的同时进行测试4 为了保证加入模块没有引进新的错误 可能需要进行回归测试 15 5 2集成测试策略 图5 5自顶向下集成 16 5 2集成测试策略 优点 在测试过程早期 对主要的控制点或判决点进行检验 在分解得很好的软件结构中 判决需要在结构层次的较高层确定 如果主要控制点有问题 早点认识到这个问题就变得很重要 如果选用按深度方向组装的方式 可以首先实现和验证一个完整的软件功能 可先对逻辑输入的分支进行组装和测试提供保证 此外 功能可行性较早得到证实
8、还能够给开发者和用户带来成功的信心 缺点 在测试较高层模块时 低层处理采用桩模块替代 不能反映真实情况 重要数据不能及时回送到上层模块 因此测试并不充分 17 5 2集成测试策略 2 自底向上集成自底向上测试从 原子 模块 即在软件结构最底层的模块 开始组装和测试 因为是从底部向上结合模块 总能得到所需的下层模块处理功能 所以不需要桩模块 例5 3 对如图5 3所示的程序 采用自底向上集成方法 按照深度优先方式进行集成测试 18 用以下4个步骤实现自底向上的结合策略 1 把低层模块组合成实现某个特定软件子功能的族 2 写一个驱动程序 用于测试的控制程序 以协调数据的输入和输出 3 对由模块组成
9、的子功能族进行测试 4 去掉驱动程序 沿软件结构自下向上移动 把子功能族组合起来形成更大的子功能族 19 5 2集成测试策略 20 5 2集成测试策略 优点 由于驱动模块模拟了所有调用参数 测试模块返回结果不影响驱动模块 生成测试数据也没有困难 如果关键模块是在结构图的底部 自底向上的测试是有优越性的 另外自底向上的组装测试不必开发桩模块 缺点 当最后一个模块尚未测试时 还没有呈现出被测软件系统的雏形 21 5 2集成测试策略 5 2 3三明治集成三明治集成是一种混合增量式测试策略 综合了自顶向下和自底向上两种集成方法的优点 这种方法桩模块和驱动模块的开发工作都比较小 不过代价是在一定程度上增
10、加了定位缺陷的难度 例5 4 对如图5 3所示的程序 以B模块所在层为界 采用三明治集成方法进行集成测试 22 5 2集成测试策略 23 5 3集成测试用例设计 1 为系统运行设计用例可使用的主要测试分析技术有 1 等价类划分 2 边界值分析 3 基于决策表的测试 24 5 3集成测试用例设计 2 为正向测试设计用例假设在严格的软件质量控制下 软件各个模块的接口设计和模块功能设计完全正确无误并且满足要求 那么作为正向集成测试的一个重点就是验证这些集成后的模块是否按照设计实现了预期功能 可是用如下几种主要测试分析技术 1 输入域测试 2 输出域测试 3 等价类划分 4 状态转换测试 5 规范导出
11、法 25 5 3集成测试用例设计 3 为逆向测试设计用例集成测试中的逆向测试包括分析被测接口是否实现了需求规格没有描述的功能 检查规格说明中可能出现的接口遗漏 或者判断接口定义是否有错误 以及可能出现的接口异常错误等 可使用的主要测试分析技术有 1 错误猜测法 2 基于风险的测试 3 基于故障的测试 4 边界值分析 5 特殊值测试 6 状态转换测试 26 5 3集成测试用例设计 4 为满足特殊需求设计用例5 为覆盖设计用例可使用的主要测试分析技术有 1 功能覆盖分析 2 接口覆盖分析 27 5 4集成测试过程 一个测试从开发到执行遵循一个过程 不同的组织对这个过程的定义会有所不同 根据集成测试不同阶段的任务 可以把集成测试划分为5个阶段 计划阶段 设计阶段 实施阶段 执行阶段 评估阶段 图5 8集成测试过程 28 思考题 1 在集成测试过程中 为什么要设计桩模块和驱动模块 2 何为正向测试 何为逆向测试 3 从覆盖的角度来设计用例时 集成测试和单元测试有何区别 29 4 对右图所示程序分别进行自顶向下 自底向上和三明治集成测试 给出测试过程 30