集成测试—软件测试核心技术(13)

发表于:2020-9-02 09:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:51Testing教研团队    来源:51Testing软件测试网原创

  第11章 集成测试
  现在比较热门的接口测试本质上就是集成测试,只不过是跨系统的集成。集成测试重点检查的是接口的正确性。
  11.1 什么是集成测试
  集成测试也称组装测试、联合测试、子系统测试或部件测试。在单元测试的基础上,将所有模块按照概要设计要求(如根据结构)组装成子系统或系统之后,才能进行集成测试。也就是说,在集成测试之前,单元测试已经完成,并且集成测试所使用的对象应当是已经经过单元测试的单元。如果不经过单元测试,那么集成测试的效果将受到影响,并且成本会更高。如前所述,单元测试和集成测试所关注的范围是不同的,因此它们在发现的问题集合上包含了不相交的区域,不能使用单元测试来替代集成测试,反之也一样。
  11.1.1 集成测试与系统测试的区别
  系统测试所测试的对象是整个系统及与系统交互的硬件和软件平台。系统测试主要从用户的角度对系统做功能性的验证,同时还对系统进行一些非功能性的验证,包括性能测试压力测试、容量测试、安全性测试、恢复性测试等。系统测试的依据是用户的需求说明书和行业中已形成的标准。
  集成测试所测试的对象是模块间的接口,其目的是找出在模块接口(包括整体体系结构)上的问题。集成测试的依据是系统的高层设计(构架设计)。
  11.1.2 集成测试关注的重点
  实践表明,一些模块虽然能够单独工作,但并不能保证模块连接之后也能正常工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。因此,集成测试应当考虑以下问题。
  ●在把各个模块连接起来时,穿越模块接口的数据是否会丢失?
  ●各个子功能组合起来,能否达到预期要求的父功能?
  ●一个模块的功能是否会对另一个模块的功能产生不利的影响?
  ●全局数据结构是否有问题?会不会被异常修改?
  ●单个模块的误差积累起来是否会放大,从而达到不可接受的程度?
  因此,单元测试后,有必要进行集成测试,发现并排除在模块连接中可能发生的上述问题,最终构成满足要求的软件子系统或系统。
  11.1.3 集成测试和开发的关系
  集成测试与软件开发的概要设计阶段相对应,软件概要设计中关于整个系统的体系结构是集成测试的输入基础。体系结构是把一个大的系统分成可以管理的和可实现的组件或子系统的结构。Booch认为集成是面向对象开发中最关键的活动。其实即使在结构化设计中,集成也是同样重要的。
  集成测试与构架设计之间具有相互的依赖性,如果构架的设计不明确,集成测试的设计将无法很好地完成。同样,集成测试可以用来发现构架设计中的错误、遗漏和二义性问题,包括前期的验证活动和后期的确认测试中的问题。
  11.1.4 集成测试的层次
  产品的开发过程是一个分层设计和逐步细化的过程,从最初的产品逐步细化到最小的单元。该层次大致可以通过图11-1~图11-3表示出来。
图11-1  系统结构

图11-2  软件结构

图11-3  软件模块的结构
  一般单元级测试针对该体系结构最底层的叶子节点,而系统测试是产品级的测试,而当中各层测试都需要通过集成测试来完成。由于集成的力度不同,一般可以把集成测试划分成3个级别。
  ●模块内集成测试。
  ●子系统内集成测试。
  ●子系统间集成测试。
  11.2 集成测试的策略
  集成测试的策略就是在分析测试对象的基础上,描述软件模块集成(组装)的方法。集成测试的基本策略比较多,分类比较杂,Mayer分析、比较了大爆炸集成(big bang integration)、自顶向下的集成(top-down integration)、自底向上的集成(bottom-up integration)和三明治集成(sandwich integration)的异同。Beizer提出了基干集成(backbone integration)。Jacoboson提出了关于面向对象系统中集成的策略。
  11.2.1 大爆炸集成
  大爆炸集成的目的是在最短的时间内把系统组装出来,并且通过最少的测试来验证整个系统。
  大爆炸集成属于非增值式集成(non-incremental integration)方法,也称一次性组装或整体拼装。大爆炸集成把所有系统组件一次性集合到被测系统中,不考虑组件之间的相互依赖性或者可能存在的风险。应用一个系统范围内的测试包来证明系统最低限度的可操作性。
  在大爆炸集成中,首先对每个模块分别进行单元测试,然后把所有单元组装在一起进行测试,最终得到要求的软件系统。图11-4(a)表示一个系统结构,其单元测试和组装顺序分别如图11-4(b)和(c)所示。
   (a)系统结构                   (b)单元测试                                 (c)组装顺序
图11-4  一次性组装
  在图11-4中,模块d1、d2、d3、d4、d5是对各个模块做单元测试时建立的驱动模块,s1、s2、s3、s4、s5是为单元测试而建立的桩模块。
  大爆炸集成的优点如下。
  ●在有利的情况下,可以迅速完成集成测试,并且只要极少数的驱动和桩模块设计(如果需要)。
  ●需要的测试用例是最少的。
  ●该方法比较简单。
  ●多个测试人员可以并行工作,对人力、物力资源的利用率较高。
  大爆炸集成的缺点如下。
  ●这种一次性组装方式试图使用辅助模块,在模块单元测试的基础上,将所测模块连接起来进行测试。但是由于模块间接口、全局数据结构等方面的问题,因此试运行一次就成功的可能性并不很大。
  ●在发现错误的时候,定位和修改问题都比较困难。
  ●即使被测系统能够一次性集成,许多接口错误也很容易躲过集成测试而进入系统测试内。
  我们一般不推荐单独使用大爆炸集成方法。
  大爆炸集成的使用范围如下。
  ●维护型项目(或功能增强型项目),其以前的产品已经很稳定,并且新增的项目中只增加或修改了少数几个组件。
  ●被测系统比较小,并且它的每个组件都经过了充分的单元测试。
  ●产品使用了严格的净室软件工程过程,并且每个开发阶段的工作产品质量和单元测试质量都相当高。

查看《软件测试核心技术 从理论到实践》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号