好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第七章-集成测试过程.ppt

38页
  • 卖家[上传人]:公****
  • 文档编号:587916901
  • 上传时间:2024-09-06
  • 文档格式:PPT
  • 文档大小:400KB
  • / 38 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第6章 集成测试 本章大纲p本章讨论与集成测试相关的内容,包括:n集成测试过程n集成策略p大爆炸p自顶而下p自底而上p三明治集成p基于MM-路径的集成n集成测试计划n集成测试设计n集成测试执行 p定义定义n集成经过单元测试的各组件评估它们之间交互的测试过程集成测试(Integration Testing)在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现什么是集成测试 n目的n在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;n一个模块的功能是否会对另一个模块的功能产生不利的影响;n各个子功能组合起来,能否达到预期要求的父功能;n全局数据结构是否有问题;n单个模块的误差累积起来,是否会放大,以至达到不能接受的程度 集成测试必要性n(1)一个模块可能对另一个模块产生不利的影响n(2)可能会发现单元测试中未发现的接口方面的报告n(3)将子功能合成时不一定产生所期望的主功能n(4)独立可接受的误差,在组装后可能会超过可接受的误差程度n(5)在单元测试中无法发现时序问题n(6)在单元测试中无法发现资源竞争问题 集成测试的层次n传统软件:按集成粒度不同,可分为:模块间集成测试,子系统内集成测试,子系统间集成测试;n面向对象的应用系统:类内集成测试,类间集成测试 集成策略p集成策略集成策略n在对测试对象分析的基础上,描述软件单元集成(组装)的方式和方法。

      p是集成测试过程中各种活动的基础,集成策略包括1.基于功能分解图的集成p大爆炸p渐增式集成p自顶而下p自底而上p混合集成2.基于MM-路径的集成 功能分解图p功能分解定义功能分解定义n一种基于系统功能和子功能将系统分解为多个组件的模块分解方式SATMSATM系统系统设备传感与控制设备传感与控制中央银行通信中央银行通信终端传感与控制终端传感与控制管理会话管理会话通道传感与控制通道传感与控制槽传感与控制槽传感与控制屏幕驱动器屏幕驱动器键盘传感器键盘传感器验证卡验证卡验证验证PINPIN取数字取数字管理事务管理事务结束会话结束会话 大爆炸集成p定义定义n把各个单元一次性集成为一个完整的系统中进行测试,而不是分阶段进行p备注备注n大爆炸法是一个折中的集成测试策略n如果系统很小或者定位缺陷不是那么复杂,可以采用大爆炸法不然,比较好的办法基于某种集成测试策略一步步集成各单元 自顶而下集成p定义定义n从顶层开始,采用同设计顺序一样的思路对被测系统进行测试,一般集中于顶层的组件,然后逐步测试处于底层的组件,被上层单元调用的下层单元以桩出现p自顶而下的集成方式自顶而下的集成方式n深度优先p从最顶层单元开始,持续向下到下一层,选择一个分支,自顶而下一个一个的集成这条分支上的所有单元,直到最底层,然后转向另一个分支,重复这样的集成操作直到所有的单元都集成进来n广度优先p从最顶层单元开始,持续向下到下一层, 一个个完成下一层上所有单元集成后,再转向下面一层,重复这样的集成操作直到所有的单元都集成进来 广度优先集成举例p步骤步骤1.从U1开始测试, 被U1调用的U2,U3,U4被S1,S2,S3这3个桩模块代替 集成从左向右进行2.移到下一层,将U1和U2集成,被U2调用的U5被桩模块S4代替,U3,U4被S2,S33.集成U1、U2,U3,U5被S4代替,U4被S3代替4.集成U1,U2,U3和U4,被U4调用的U6,被S5代替,U5用S4代替5.移到下一层,集成U2,U1,U3,U4和U5,用S5代替U66.将U6与其它单元集成 U1U2U3U4U5U6U1S1S2S3U1S4S2S3U2U1S3U2U1U2U5U3U4S5U1U2U3U4U5U6Step 5Step 4Step 3Step 1Step 2Step 6S4U3U1U4U2S4U3S5广度优先集成举例 《软件测试方法和应用》 7-13深度优先集成举例p步骤步骤1.从U1开始,被U1调用的U2、U3、U4被3个桩模块S1、S2、S3代替,基于功能树,选择一个U1的分支,集成自顶而下。

      在本例中选择最左面的一个分支2.将U1和U2集成,被U2调用的U5用桩模块S4代替,U3、U4被S2、S3代替3.将U1、U2和U5集成,U3、U4用桩模块S2、S3代替4.转回到第二级,将U1、U2、U5和U3集成,用S3代替U45.转回到第二级,将U1、U2、U3、U5和U4集成,用S5代替U36.将U6与其它模块集成 U1U2U3U4U5U6U1S1S2S3U1S4S2S3U2U1S2S3U2U1S3U2U3U1U2U3U4S5U1U2U3U4U5U6Step 4Step 3Step 1Step 2Step 6U5U5U5深度优先集成举例 《软件测试方法和应用》 7-15自下而上p定义定义n从最底层组件开始,按照分解树的结构,逐层向上集成,调用下层单元的上层单元以驱动出现p自下而上举例n步骤1.从最底层U5,U3,U6开始,开发3个驱动模块d1,d2,d3调用它们2.用U5集成U2,U6,U4被d4,d5代替3.将所有单元集成在一起 d1d3d2自下而上举例U1U2U3U4U5U6U1U2U3U4U5U6U5U3U6d4d5U2U4U5U6Step 1Step 2Step 3 《软件测试方法和应用》 7-17三明治集成p定义定义n为减少桩模块和驱动模块,在分解树的子树上进行集成p举例举例n步骤1.基于功能树,选择完全分支/子分支作为集成单元,在本例中,我选择了3个子树1.为了测试U2和U5的集成,开发一个驱动器d12.开发两个桩S1和S2测试U1和U3的集成3.为了测试U4和U6,开发一个驱动器d22.将所有的测试子树集成在一起 《软件测试方法和应用》 7-18三明治集成举例U1U2U3U4U5U6U1U2U3U4U5U6d1U2U5Step 1Step 2U1S1U3S2d2U4U6subtree1subtree2subtree3 《软件测试方法和应用》 7-19p定义定义n这种方法由Paul C. Jorgensen提出,MM路径法是英文Message-Method的简称nMM路径可以用于描述单元之间的控制转移。

      基于MM路径的集成 《软件测试方法和应用》 7-20p下图展示了一条基于调用关系的单元A,B和C的MM路径基于MM路径的集成123456123412345ABC一条MM路径 p相关概念相关概念n源节点:程序执行开始时或重新开始处的语句片断 可能是单元中的第一个可执行语句或者是紧接着转移控制到其它单元节点之后的节点n汇节点:程序执结束处的语句片断 可能是单元中的最后一个可执行语句或者转移控制到其它单元的节点n模块执行路径:以源节点开始,以汇节点结束的一系列语句,中间没有插入汇节点基于MM路径的集成 基于MM路径的集成123456123412345ABCA的模块执行路径: MEP(A,1) = <1,2,3,6> MEP(A,2) = <1,2,4> MEP(A,3) = <5,6>B的模块执行路径: MEP(B,1) = <1,2> MEP(B,2) = <3,4>C的模块执行路径 : MEP(C,1) = <1,2,4,5> MEP(C,2) = <1,,3,4,5>n 源节点:A模块:节点1,5;B模块:节点1,3;C模块:节点1n 汇节点:A模块:节点4,6;B模块:点2,4;C模块:节点5 p相关概念相关概念n消息:一种程序设计语言机制,通过这种机制一个单元将控制转移给另一个单元。

      p不同的程序设计语言消息的含义可能不同,可能是函数调用,也可能是消息接收nMM-路径是穿插出现模块执行路径和消息的序列,是描述包含在单独单元之间控制转移的模块执行路径序列基于MM路径的集成MEP(a,2)MEP(b,1)MEP(c,1)MEP(b,2)MEP(a,3) 《软件测试方法和应用》 7-24p应用应用n基于系统中的调用关系、或者对象之间协作图、顺序图等建模信息和代码标识系统的MM-路径n最低要求所有消息均被覆盖至少一次p难点难点nMM-路径的标识基于MM路径的集成 基于MM路径的集成举例p功能说明功能说明nNextDate:nextDate(month,day,year) 实现输出输入日期的下一个日期,其中1≤month ≤12, 1≤day ≤31, 1900≤year ≤2060nNextDate由5个类实现,这5个类通过彼此发送消息交互:pCalendarUnit是一个抽象类ptheDate是CalerdarUnit的一个子类pDay是CalerdarUnit的一个子类pMonth是CalerdarUnit的一个子类pYear是CalerdarUnit的一个子类 CalendarUnit.java theDate.java Day.java 《软件测试方法和应用》 7-29 Month.java Year.java 测试用例设计和实现pNextDate问题集成测试的关键点在于 theDate类的increment()方法,为了覆盖所有的消息,设计了3个方法:1.testDayIncrement()方法执行msg7的true分支2.testMonthIncrement()方法执行msg7的false分支,msg8和msg11的true分支3.testYearIncrement()方法执行msg7的false分支,msg8,msg9,msg10的false分支p通过执行这3个方法,各类间的所有消息发送都被覆盖到了 《软件测试方法和应用》 7-32testNextDatemaintheDateprintDate()DayDay()MonthMonth()YearYear()Date()Increment()msg1msg4setCurrentPos()Increment()setDay()getDay()msg21setCurrentPos()Increment()getYear()isLeap()setCurrentPos()Increment()setMonth()getMonth()getMonthSize()msg5msg18msg19msg6msg15msg16msg7msg17msg20msg12msg14msg13msg2msg3Jan. 16th 2007 MM路径testDayIncrement()方法的MM路径, 这条路径不能覆盖msg8,msg9,msg10 and msg11 《软件测试方法和应用》 7-33testNextDatemainDateprintDate()DayDay()MonthMonth()YearYear()Date()Increment()msg1msg4setCurrentPos()Increment()setDay()getDay()msg21setCurrentPos()Increment()getYear()isLeap()setCurrentPos()Increment()setMonth()getMonth()getMonthSize()msg5msg18msg19msg6msg15msg16msg7msg17msg20msg12msg14msg13msg2msg3Jan.31st 2007 的MM路径testMonthIncrement() 方法的MM路径,这条路径不能覆盖msg9 and msg10msg8msg11 《软件测试方法和应用》 7-34testNextDatemainDateprintDate()DayDay()MonthMonth()YearYear()Date()Increment()msg1msg4setCurrentPos()Increment()setDay()getDay()msg21setCurrentPos()Increment()getYear()isLeap()setCurrentPos()Increment()setMonth()getMonth()getMonthSize()msg5msg18msg19msg6msg15msg16msg7msg17msg20msg12msg14msg13msg2msg3Dec.31st 2006 的MM路径testMonthIncrement() 方法的MM路径,这条路径覆盖了剩余的消息msg8msg11msg9msg10 p与单元测试类似,主要的测试活动包括n集成测试计划n设计集成测试用例n实现测试用例n搭建集成测试环境n执行测试n测试总结n评估测试工作量p很多时候采用黑盒和白盒相结合被称为灰盒测试的测试方法p集成测试可由开发人员也可由测试人员承担集成测试过程 p集成测试环境中的要素n执行集成测试的硬件和软件n数据库环境n网络环境n接口仿真器n集成测试用例、桩和驱动p集成测试报告n与单元测试报告类似搭建集成测试环境 n不要过份区分单元测试、集成测试和系统测试的界限n关键单元尤先集成,关键单元可能是:p系统的基础单元p与多个其它单元关系密切的单元n如果测试人员执行集成测试,最好在开发人员指导下进行n采用适合组织结构的缺陷跟踪过程n确保修改缺陷不引入新的问题n报告集成测试缺陷并保存缺陷报告n基线化集成测试过程资产建议 小结n集成测试是评估单元间交互的测试过程n常用的集成策略包括n大爆炸n自顶而下n自底而上n三明治集成n基于MM-路径的集成 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.