复习
单元测试 针对代码 主要用白盒测试技术 函数 类 几个函数合并成一个单元
静态测试 检查代码
动态测试 针对独立路径或判定设计用例
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 | 早期 |
自顶向下 | 较多 | 需要 | 不需要 | 较容易 | 困难 | 早期 |
自底向上 | 较多 | 不需要 | 需要 | 较容易 | 可以 | 较晚 |
三明治 | 较多 | 需要 | 需要 | 较困难 | 可以 | 早期 |