• 1. 1软件测试技术主讲人:刘 伟
  • 2. 2第05章 集成测试什么是集成测试 集成测试策略 集成测试用例设计 集成测试过程 面向对象的集成测试
  • 3. 3软件测试的过程被测 模块单元 测试设计 信息集成 测试被测 模块单元 测试被测 模块单元 测试测试过 的模块确认 测试系统 测试软件 需求其它系 统元素装配好的软件 确认 的软件可运 行的 软件
  • 4. 4什么是集成测试也叫做组装测试、联合测试、子系统测试和部件测试。 是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统,进行集成测试。
  • 5. 5单元测试、集成测试与系统测试的差别集成测试系统测试单元测试灰盒测试,采用较多黑盒方法构造测试用例 黑盒测试大量采用白盒测试方法测试方法模块间的集成和调用关系整个系统,包括系统软硬件等模块内部程序错误对象找出与软件设计相关的程序结构,模块调用关系,模块间接口方面的问题对整个系统进行一系列的整体、有效性测试消除局部模块逻辑和功能上的错误和缺陷目的系统结构设计目标说明书 需求说明书等程序结构设计模块逻辑设计 模块外部说明测试依据
  • 6. 6集成测试关注的重点在把各个模块连接起来时,穿越模块接口的数据是否会丢失。 各个子功能组合起来,能否达到预期要求的父功能。 一个模块的功能是否会对另一个模块的功能产生不利的影响。 全局数据结构是否有问题,会不会被异常修改。 单个模块的误差积累起来,是否会放大,从而达到不可以接受的程度。
  • 7. 7集成测试的层次产品开发过程:一个分层设计和逐步细化的过程 系统结构图:
  • 8. 8软件结构图:软件模块结构图:
  • 9. 9集成测试的层次可分成3个层次: 模块内集成测试 子系统内集成测试 子系统间集成测试 面向对象的应用系统来说,可分为2个层次: 类内集成测试 类间集成测试
  • 10. 10第05章 集成测试什么是集成测试 集成测试策略 集成测试用例设计 集成测试过程 面向对象的集成测试
  • 11. 11集成测试策略1)非增量方式 先测试好每一个软件单元,然后一次组装在一起再测试整个程序。 2)增量方式 逐步把下一个要被组装的软件单元或部件,同已测好的软件部件结合起来测试。 增量方式主要包括自顶向下、自底向上、自顶向下与自底向上相结合等方法。
  • 12. 12集成测试策略非增量方式 大爆炸(Big Bang) 增量方式 自顶向下方法(Bottom-Up) 自底向上方法(Top-Down) “三明治”方法(Sandwich)
  • 13. 13大爆炸集成(Big Bang)将所有系统组件一次性集合到被测系统中d1、d2、d3、d4、d5是为单元测试时建立的驱动模块s1、s2、s3、s4、s5是为单元测试而建立的桩模块
  • 14. 14大爆炸集成(Big Bang)优点: 可以迅速完成集成测试;并且只要极少数的驱动和桩模块;用例也是最少的;简单;资源利用率高 缺点: 一次试运行成功的可能性不大,问题定位和修改比较困难,许多接口错误很容易躲过测试。 适应于一个维护型项目或被测试系统较小
  • 15. 15集成测试策略非增量方式 大爆炸(Big Bang) 增量方式 自顶向下方法(Bottom-Up) 自底向上方法(Top-Down) “三明治”方法(Sandwich)
  • 16. 16自顶向下方法(Bottom-Up)从顶层控制开始,采用同设计顺序一样的思路对被测系统进行测试,以验证系统的接口稳定性 集成的方式有两种: 深度优先组装法 广度优先组装法
  • 17. 17深度优先组装方式
  • 18. 18广度优先组装方式
  • 19. 19集成步骤(1)以主模块为所测模块兼驱动模块,所有直属于主模块的下属模块全部用桩模块对主模块进行测试。 (2)采用深度优先或广度优先的策略,用实际模块替换相应桩模块,再用桩代替它们的直接下属模块,与已测试的模块或子系统集成为新的子系统。 (3)进行回归测试(即重新执行以前做过的全部测试或部分测试),排除集成过程中引起错误的可能。 (4)判断是否所有的模块都已集成到系统中,是则结束测试,否则转到(2)去执行。
  • 20. 20优缺点分析优点: 较早地验证了主要控制和判断点; 按深度优先可以首先实现和验证一个完整的软件功能; 功能较早证实,带来信心; 只需一个驱动,减少驱动器开发的费用; 支持故障隔离。
  • 21. 21优缺点分析缺点: 桩的开发量大; 底层验证被推迟; 底层组件测试不充分。
  • 22. 22适用范围产品控制结构比较清晰和稳定; 高层接口变化较小; 底层接口未定义或经常可能被修改; 产口控制组件具有较大的技术风险,需要尽早被验证; 希望尽早能看到产品的系统功能行为。
  • 23. 23自底向上方法(Top-Down)从具有最小依赖性的底层组件开始,按照依赖关系树的结构,逐层向上集成,以检验系统的稳定性。 集成示意图:
  • 24. 24集成步骤(1)起始于模块依赖关系树的底层叶子模块,也可以把两个或多个叶子模块合并到一起进行测试 (2)使用驱动模块对步骤1选定的模块(或模块组)进行测试 (3)用实际模块代替驱动模块,与它已测试的直属子模块组装成一个更大的模块进行测试 (4)重复上面的行为知道系统最顶层模块被加入到已测系统中
  • 25. 25优缺点分析优点: 对底层组件行为较早验证; 工作最初可以并行集成,比自顶向下效率高; 减少了桩的工作量; 支持故障隔离。
  • 26. 26优缺点分析缺点: 驱动的开发工作量大; 对高层的验证被推迟,设计上的错误不能被及时发现。 适用范围: 适应于底层接口比较稳定; 高层接口变化比较频繁; 底层组件较早被完成。
  • 27. 27“三明治”方法(Sandwich)混合式集成 把系统划分成三层,中间一层为目标层,目标层之上采用自顶向下集成,之下采用自底向上集成
  • 28. 28三明治集成策略
  • 29. 29集成步骤(1)首先对目标层之上一层使用自顶向下集成,因此测试A,使用桩代替B,C,D (2)其次对目标层之下一层使用自底向上集成,因此测试E,F,使用驱动代替B,D (3)其三,把目标层下面一层与目标层集成,因此测试(B,E),(D,F),使用驱动代替A (4)最后,把三层集成到一起,因此测试(A,B,C,D,E,F)
  • 30. 30优缺点分析 优点: 集合了自顶向下和自底向上两种策略的优点 缺点: 中间层测试不充分 适用范围: 适应于大部分软件开发项目
  • 31. 31修改过的三明治集成
  • 32. 32第05章 集成测试什么是集成测试 集成测试策略 集成测试用例设计 集成测试过程 面向对象的集成测试
  • 33. 33 1、为系统运行设计用例 目的:测试各个模块的接口是否能用,验证系统最基本功能 可使用的主要测试分析技术有: (1)等价类划分。 (2)边界值分析。 (3)基于决策表的测试。
  • 34. 342、为正向测试设计用例目的:验证集成后的模块是否按照设计实现了预期的功能。 可使用如下几种主要测试分析技术: (1)输入域测试。 (2)输出域测试。 (3)等价类划分。 (4)状态转换测试。 (5)规范导出法。正向测试是指,当你输入一个有效的输入并且期望软件能够完成一些根据说明书规定的行为。
  • 35. 353、为逆向测试设计用例目的:测试是否多余功能、接口遗漏、接口错误、接口异常。 可使用的主要测试分析技术有: (1)错误猜测法。 (2)基于风险的测试。 (3)基于故障的测试。 (4)边界值分析。 (5)特殊值测试。 (6)状态转换测试。负向测试是指,当你输入无效的输入时并且期望得到一个错误的信息。
  • 36. 36集成测试用例设计4、为满足特殊需求设计用例 可使用的主要测试分析技术为规范导出法。 5.为高覆盖设计用例 可使用的主要测试分析技术有: (1)功能覆盖分析。 (2)接口覆盖分析。
  • 37. 37第05章 集成测试什么是集成测试 集成测试策略 集成测试用例设计 集成测试过程 面向对象的集成测试
  • 38. 38集成测试流程计划阶段设计阶段实现阶段执行阶段分析评估缺陷跟踪根据项目组提供设计模型和集成构建计划,制定出适合本项目的集成测试计划根据集成测试计划和设计模型设计集成测试用例及测试过程获取工作版本后,由测试设计员创建测试脚本(可选)、更新测试过程,由设计员负责设计驱动程序和桩,实施员负责实施驱动和桩测试人员根据测试脚本(可选)和工作版本执行集成测试,并记录测试结果依照集成测试计划和测试结果,由测试设计员负责会同集成员、编码员、设计人员评估此次测试,并生成测试评估摘要
  • 39. 39计划阶段输入 需求规格说明书 概要设计文档 产品开发计划路标 输出 集成测试计划
  • 40. 40计划阶段活动步骤 确定被测试对象和测试范围 评估集成测试被测试对象的数量及难度,即工作量 确定角色分工和划分工作任务 标识出测试各阶段的时间、任务、约束等条件 考虑一定的风险分析及应急计划 考虑和准备集成测试需要的测试工具、测试仪器、环境等资源 考虑外部技术支援的力度和深度,以及相关培训安排 定义测试完成标准
  • 41. 41设计阶段输入 需求规格说明书 概要设计 集成测试计划 输出 集成测试设计方案
  • 42. 42设计阶段活动步骤 被测对象结构分析 集成测试模块分析 集成测试接口分析 集成测试策略分析 集成测试工具分析 集成测试环境分析  集成测试工作量估计和安排
  • 43. 43体系结构分析从两个角度出发 划分出系统实现上的结构层次图 划分系统组件之间的依赖关系图
  • 44. 44模块的大小 驱动和桩模块数量 消息接口的复杂度 ……
  • 45. 45模块分析模块划分可以从以下几个角度出发考虑: 本次测试主要希望测试哪个模块 这个模块与哪几个模块有最密切的关系 把该模块与关系最密切的模块首先集成在一起 再考虑外围模块,消息流是否容易模拟,是否方便控制
  • 46. 46接口分析接口分析可以通过以下几个步骤来完成: 确定系统的边界、子系统的边界和模块的边界 确定模块内部的接口 确定子系统内模块间接口 确定子系统间接口 确定系统与操作系统的接口 确定系统与硬件的接口 确定系统与第三方软件的接口
  • 47. 47环境分析可以从以下几个方面进行 硬件环境 操作系统环境 数据库环境 网络环境
  • 48. 48集成测试环境示意图
  • 49. 49实现阶段输入 需求规格说明书 概要设计 集成测试计划 集成测试设计 输出 集成测试用例 集成测试规程 集成测试代码、集成测试脚本、集成测试工具(如果有)
  • 50. 50实现阶段活动步骤 集成测试用例设计 集成测试规程设计 集成测试代码设计(如果需要) 集成测试脚本(如果需要) 集成测试工具(如果需要)
  • 51. 51执行阶段输入 需求规格说明书 概要设计 集成测试计划 集成测试设计 集成测试用例 集成测试规程
  • 52. 52执行阶段集成测试代码(如果有) 集成测试脚本(如果有) 集成测试工具(如果有) 详细设计 代码 单元测试报告 输出 集成测试报告
  • 53. 53执行阶段活动步骤 执行集成测试用例 回归集成测试用例 撰写集成测试报告
  • 54. 54相应过程的测试文档计划阶段设计阶段实现阶段执行阶段分析评估缺陷跟踪集成测试计划集成测试设计方案集成测试用例、规程、(代码、脚本、工具)集成测试报告