复习

单元测试 针对代码 主要用白盒测试技术 函数 类 几个函数合并成一个单元

静态测试 检查代码

动态测试 针对独立路径或判定设计用例

Junit5 使用注解的方式

@Test

@BeforeEach//每一个测试方法之前都执行一次

@Beforeall // 只执行一次

@After… 静态方法

参数化 把数据元 放到一个文件里 如果多个参数 可以用csv写多个列

断言 : 比较实际结果与预期结果

批量执行测试类 一般都是以test来结尾

集成测试

​ 集成测试是在单元测试结束后,将所有已通过的单元测试模块按照设计要求组装为***子系统或系统*** 并进行测试

目的是 确保各单元模块组合在一起 后能按照 既定意图协作运行

1.1集成测试内容

​ 将模块组装起来,检查穿越模块接口的数据是否会丢失。

​ 判断子功能是否实现父功能

​ 单个模块的误差是否放大到不可接受

1.2集成测试的方法

(1)成对测试

将每个测试用例限定在一对调用单元上

Ø基本思想:将每个集成测试用例限定在一对调用单元上,每个集成测试用例都是最小的集成单元,仅涉及一对调用的接口

Ø测试用例设计:两个典型的模块成对集成

Ø规模估算:共m个模块,n条边,因每条边对应一对调用接口,确定一个成对测试用例,因此包含n个测试用例

特点

驱动模块 是 上级模块

桩模块 是 下级模块

中间的部分既需要 驱动模块 和 桩模块

优势 容易定位缺陷

劣势 用例数较多

(2)邻居集成

与该模块涉及到的 所有上级模块 和 下级模块(邻居)

特点

减少测试用例 导致定位缺陷比较困难

(3)基于独立路径的测试

函数控制流图 来找独立路径

这个用到了思想 这个是依据函数调用图(涉及多个模块)

增加一个 虚拟出口 switch 4个分支的可以判断 成 3个判定节点1

特点

不需要开发桩模块和驱动模块但定位更加困难

2.集成测试的遍历顺序

2.1大爆炸集成

将所有经过单元测试的模块一起测

达到用例规模的最小化

优点:测试规模小

缺点:缺陷难以定位

适用场景:稳定的软件版本,只修改其中的一个模块,或涉及的模块和接口数量不多

2.2自顶向下集成

1、对根节点进行集成测试,所有被根节点直接调用的模块均用桩模块来代替。

2、根据选择的推进策略,用实际模块替换桩模块,并用新的桩模块代替新加入的模块。

深度优先 :先测根节点 然后测下级直到下级没有了

优点

有助于早期实现并验证系统主要功能

l优先从根节点开始测试,有助于早期实现并验证系统主要功能,给开发团队和用户带来成功的信心,也便于早期验证主要的控制和判断,避免主控程序的缺陷,确保开发进度

l单个测试用例包含多个模块,可从整体上降低测试用例规模

l采用递增方式展开测试,每个新的测试用例一般仅加入一个新的模块,便于缺陷定位

不足

l桩模块的开发和维护工作量较大

l难以早期发现底层模块中复杂算法的缺陷,且随着测试的进行,系统越来越复杂,底层模块的测试很难保证充分性

l不利于测试的并行,难以充分展开人力

2.3自底向上的集成

l优先从叶子节点开始测试,有助于早期发现底层模块中复杂算法的缺陷,且驱动模块的开发有利于规范和约束系统上层模块的设计,在一定程度上增加系统可测试性

l多个集成测试可并行展开,确保测试工作进度

Ø不足

l驱动模块的开发和维护工作量较大

l难以早期发现上层模块中有关逻辑和控制方面的缺陷

l直至加入最后一个模块才能看到整个系统框架,难以早期发现时序问题和资源竞争问题

2.4混合集成

三明治集成

将自顶向下集成 自底向上的集成 并在子树上大爆炸集成

策略一 :将系统划分为3层 中间层为目标层 测试时对上面的层 自顶向下集成 下面的 自底向上的集成、

中间层进行 大爆炸集成。

项目 测试用例数目 桩模块 驱动模块 缺陷定位 并行测试 系统概貌
成对集成 由边数决定 需要 需要 非常容易 可以 不确定
邻居集成 主要由中间节点数决定 需要 需要 困难 可以 不确定
大爆炸 不需要 不需要 非常困难 N/A 早期
自顶向下 较多 需要 不需要 较容易 困难 早期
自底向上 较多 不需要 需要 较容易 可以 较晚
三明治 较多 需要 需要 较困难 可以 早期