《软件测试》课堂笔记05

Integration Test(集成测试)

一. 概念:

  集成:是指把多个单元组合起来形成更大的单元。

  集成测试:是在假定各个单元已经通过单元测试的前提下,检查各个软件单元之间的相互接口是否正确。

二. 集成测试与单元测试之间的关系:

  

三. 集成测试与系统测试的区别:

  

四. 集成测试的层次与原则:

  1. 层次:

   对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即:集成测试、子系统内集成测试、子系统间集成测试

   对于面向对象的应用系统来说,按集成粒度不同,可以把集成测试分为2个层次:类内集成测试、类间集成测试

  2. 原则:

  所有公共接口必须被测试到。

  关键模块必须进行充分测试。

  集成测试应当按一定层次进行。

  集成测试策略选择应当综合考虑质量、成本和进度(Q.C.D)三者之间的关系。

  集成测试应当尽早开始,并以概要设计为基础。

  在模块和接口的划分上,测试人员应该和开发人员进行充分沟通。

  当测试计划中的结束标准满足时,集成测试才能结束。

  当接口发生修改时,涉及到的相关接口都必须进行回归测试。

  集成测试应根据集成测试计划和方案进行,不能随意测试。

  项目管理者应保证测试用例经过审核。

  测试执行结果应当如实的记录。

五. 集成测试策略:

  1. 非渐增式集成:

  非渐增式集成方法首先对每个子模块进行测试(即单元测试),然后将所有模块全部集成起来一次性进行集成测试。

  

  优点:(1)在有利的情况下,可以迅速完成集成测试。

     (2)集成测试用例最少。

     (3)比较简单。

     (4)多名测试人员可以并行工作。

  缺点:(1)复杂的程序遇到问题时很难定位和修改。

     (2)很难一次运行成功。

     (3)很多接口很容易漏检。

  2. 渐增式集成:

把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误。

    (1)自顶向下:自顶向下集成(Top-Down Integration):从主控模块开始,沿着程序 控制层次向下移动,逐渐把各模块组合起来。可以使用深度优先或是广度优先的组合策略。

    

     步骤:

    ①对主控模块进行测试,用桩模块替代被主控模块调用的子模块

    ②根据选定的策略(深度/广度),每次用一个实际模块代换一个桩模块

    ③进行集成测试

    ④为了保证加入的模块没有引进新的错误,根据需要进行回归测试。②-④循环。

     优点:

    能够在测试的早期对主要的控制模块进行检验

    深度优先的结合策略可以在早期实现软件的一个完整功能,并可验证其功能。增强开发人员及用户的信心

     缺点:

    没有底层返回来真实数据流,需要推迟许多需要真实数据支持的测试

    (2)自底向上:(Bottom-Up Integration)自底向上测试从软件结构最底层的模块开始组装和测试。因为是从底部向上结合模块,总能得到所需的下层模块处理功能,所以不需要桩模块。

    

     步骤:

    ①把底层模块组合成实现某个特定子功能的族

    ②编写测试驱动程序,协调测试数据的输入输出

    ③对该子功能族进行测试

    ④去掉测试驱动程序,自底向上移动,把子功能组合成更大的子功能族。②-④循环。

     优点:

    允许对底层模块的早期验证。

    可在任何一个叶子节点就绪的情况下进行集成测试。

    可以并行进行集成对被测模块可测性。

    要求比自顶向下集成策略低。

    减少了桩模块的工作量。

    支持故障隔离。

     缺点:

    驱动模块开发量大。

    对高层测试被推迟到最后,整体设计的错误发现较晚。

    集成到顶层时将变得越来越复杂

    (3)三明治集成:三明治集成(Sandwich Integration)是一种混合增量式测试策略,综合了自顶向下和自底向上两种集成方法的优点。这种方法桩模块和驱动模块的开发工作都比较小,不过代价是在一定程度上增加了缺陷的定位难度。

     步骤:

    ①选定结构中的某一层为目标层

    ②对目标层所在层下面的各层使用自底向上的集成策略

    ③对目标层上面层次使用自顶向下的集成策略

    ④对目标层与其下一层集成

    ⑤把②③④的结果集成系统整体进行测试

     优点:结合了自顶向下和自底向上两种策略的优点。

     缺点:目标层在集成前测试不充分。

时间: 2024-08-21 06:10:18

《软件测试》课堂笔记05的相关文章

JAVA的面向对象编程--------课堂笔记

JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么(方法):告诉外界对象有那些功能. 后者以前者为基础. 大的对象的属性也可以是一个对象.   为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律. 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节. 方法的定义非常重要.方法有参

2017年5月26日课堂笔记

2017年5月26日 星期五 晴 空气质量:中度污染 内容:JavaScript:初识js,按钮的点击事件,变量的使用,数据类型,typeof的使用, string的使用,数组的使用,运算符的运用,逻辑控制语句的使用 备注:5月28日补课堂笔记 一.初识js 老师代码: <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>初

九章算法系列(#2 Binary Search)-课堂笔记

前言 先说一些题外的东西吧.受到春跃大神的影响和启发,推荐了这个算法公开课给我,晚上睡觉前点开一看发现课还有两天要开始,本着要好好系统地学习一下算法,于是就爬起来拉上两个小伙伴组团报名了.今天听了第一节课,说真的很实用,特别是对于我这种算法不扎实,并且又想找工作,提高自己的情况. 那就不多说废话了,以后每周都写个总结吧,就趁着这一个月好好把算法提高一下.具体就从:课堂笔记.leetcode和lintcode相关习题.hdu和poj相关习题三个方面来写吧.希望自己能够坚持下来,给大家分享一些好的东

SWIFT学习笔记05

1.Swift 无需写break,所以不会发生这种贯穿(fallthrough)的情况.2.//用不到变量名,可用"_"替换 for _ in 1...power { answer *= base } 3.case 可以匹配更多的类型模式,包括区间匹配(range matching),元组(tuple)和特定类型的描述. 可以这样用case case 1...3: naturalCount = "a few" 4.如果存在多个匹配,那么只会执行第一个被匹配到的 ca

2017年5月12号课堂笔记

2017年5月12号 星期五 空气质量:轻度污染(昨天的北风转今天的南风) 内容:html表格的基本使用,表格跨行跨列,高级表格,播放音乐,播放视频,网页布局,iframe内联框架: 文本框,密码框,单选按钮,复选框,下拉框  备注:周日晚想起来补上的周五课堂笔记(一带一路今天开会天气好晴朗) 一.html表格的基本使用 模仿老师代码: <!DOCTYPE html><html><head lang="en"> <meta charset=&q

?统计学习精要(The Elements of Statistical Learning)?课堂笔记(一)

前两天微博上转出来的,复旦计算机学院的吴立德吴老师在开?统计学习精要(The Elements of Statistical Learning)?这门课,还在张江...大牛的课怎能错过,果断请假去蹭课...为了减轻心理压力,还拉了一帮同事一起去听,eBay浩浩荡荡的十几人杀过去好不壮观!总感觉我们的人有超过复旦本身学生的阵势,五六十人的教室坐的满满当当,壮观啊. 这本书正好前阵子一直在看,所以才会屁颠屁颠的跑过去听.确实是一本深入浅出讲data mining models的好书.作者网站上提供免

?统计学习精要(The Elements of Statistical Learning)?课堂笔记(三)

照例文章第一段跑题,先附上个段子(转载的哦~): I hate CS people. They don't know linear algebra but want to teach projective geometry. They don't know any probability but want to use graphical models. They don't understand stats at all but still do machine learning like c

线程(java课堂笔记)

1.两种方式的差异 2.线程的生命周期 3.线程控制(线程的方法) 4.线程同步 5.线程同步锁 一. 两种方式的差异 A extends Thread :简单 不能再继承其他类了(Java单继承)同份资源不共享 B implements Runnable:( 推荐) )多个线程共享一个目标资源,适合多线程处理同一份资源. 该类还可以继承其他类,也可以实现其他接口. 二. 线程的生命周期 新建:当程序使用new创建一个线程后,该线程处于新建状态,此时他和其他java对象一样,仅仅由Java虚拟机

《掌握需求过程》阅读笔记05

<掌握需求过程>阅读笔记05 我们的产品因为其功能而为用户使用而有意义,我们的产品才会有价值.而产品的需求又分为功能性需求和非功能性需求. 功能性需求就是因为产品存在的根本原因而存在的需求.功能性需求指明了产品必须做的事情,是产品功能的规格说明书,源于产品的基本目标.为了实现存在的根本理由,产品必须执行的一些动作,这些动作就与功能性需求有关. 我们可以通过用例描述.用户场景描述等地方挖掘出我们产品的功能性需求.那些我们产品必不可少的功能.目标就是我们产品的功能性需求.但是在分析功能性需求的时候