单元测试:
概念: 对软件最小单元的测试. 白盒测试. 依据是程序设计指南. 代码风格规范, 程序设计, 结构设计和业务逻辑的静态分析.
接口测试: 数据的正确输入和输出
局部数据: 数据在局部算法的保存与正确性
全局数据: 全局数据对单元的影响
边界分析: 单元在极限状态下的执行
语句覆盖: 每个语句执行
错误路径: 错误路径进行测试
集成测试
概念: 测试单元接口交互有关的问题. 把通过单元测试的模块拿出, 形成一个程序设计中描述的结构, 采用增量集成的方法
自顶向下集成: 从主模块开始, 对隶属于其的模块进行深度优先或者广度优先进行集成
自底向上集成: 从某个单元开始, 对同属于某个高层模块的单元集成. 不用测试桩
顺序:
- 确认测试目标, 标准和关键点
- 确定阶段和进度安排
- 确定测试修正计划
- 清理系统结构
- 确定集成方法组合
- 真对集成顺序编写测试用例, 确定方案
- 准备测试桩
- 测试软件准备
- 测试
- 生成测试结果报告
- 对报告进行分析
- 缺陷管理
- 修正测试
- 提交测试
系统测试–黑盒测试, 自动测试, 手动测试
概念: 根据需求规范完成系统测试, 确保系统满足需求. 系统测试人员相当于用户发言人, 在设计阶段确保系统的可测性
内容:
- 所有功能需求得到满足
- 所有性能需求得到满足
- 其他需求得到满足(安全性, 兼容性, 容错性等)
回归测试–黑盒测试, 自动测试, 手动测试
概念: 在缺陷被修改后, 新功能添加后, 重新测试. 确保缺陷被修复, 修改没有增加新的缺陷
测试方式:
- 覆盖测试: 选择基线用例中的全部测试组成回归测试包, 成本最高
- 基于风险选择测试: 基于一定的风险标准选择回归测试包. 首先选择风险最高, 最关键, 最可疑的测试. 从主要特征到次要特征.
- 基于操作剖面选择测试: 选择那最重要, 重复最多的功能进行测试
- 重新测试修改的部分: 将回归测试放在修改的部分上
用户验收测试
内容:
- 配置审查: 确保已开发软件的所有资料齐全并分类编目
- alpha测试: 用户到开发者的场所进行测试, 在一个可控的环境
- beta测试: 用户在一个多个场所测试, 开发者不在场, 用户将遇到的问题发给开发者, 开发者准备最终上线的软件
白盒测试
逻辑覆盖法:
-
语句覆盖:
设计若干个测试用例, 确保每个语句至少执行一遍, 发现语句错误和缺陷.
覆盖率公式:
被评价到的语句数 / 可执行语句总数 * 100%
缺点: 程序执行逻辑的覆盖很低 -
判定覆盖:
设计的测试用例使得每个判定条件的真分支和假分支都判定一次
判定覆盖率=被评价到的判定分支个数/判定分支的总数X100%
优点: 比语句覆盖更强的逻辑覆盖, 相对简单
缺点: 若仅仅判断最终结果, 肯定会忽略部分路径判定取值的结果, 仍然是弱的逻辑覆盖,
-
条件覆盖: 设计足够多的测试, 使得每个判定的取值条件都至少被满足一次
公式: 被评价到的条件取值个数 / 所有条件的取值
缺点: 只考虑到条件的取值, 没有考略到所有的条件分支, 不能覆盖所有分支
-
判定条件覆盖
判定覆盖 + 条件覆盖
缺点: 不能判断单一判定对结果的影响
-
条件组合覆盖
设计足够多的测试, 使得每个判定中条件的各种组合都被执行一次
公式: 被评价到的条件组合/所有条件组合
缺点: 判定语句多时, 条件组合很多
-
路径覆盖
设计足够多的测试, 使得程序的所有路径都被执行至少一次
公式: 被评价的路径/程序总路径
步骤:
-
程序测试留图
-
程序圈的复杂度
V(G)=E-N+2, E是边的数量, N是节点数量
V(G)=P + 1, P 是判定节点数量 -
导出测试用例
确定基本路径集合
-
准备测试用例
为每个基本路径设计测试用例
-
黑盒测试
在程序接口上的测试. 在完全不考虑程序内部的设计与结构的情况下, 依照说明书对程序进行测试. 测试程序接口能不能接收输入并产生正确的输出.
测试方法
等价类划分法:
等价类: 输入域的子集合. 对集合中的代表值测试就等于对集合的其他值测试.
- 有效等价类: 对程序的规格来说是合理的
- 无效等价类: 与上相反
等价类的划分:
- 输入值一个取值范围 -》一个有效等价类和两个无效等价类
- 输入值的集合 -》一个有效等价类和一个无效等价类
- 输入值是boolean -》 一个有效等价类和一个无效等价类
- 输入数据为一组值n -》 n个有效等价类和一个无效等价类
- 输入数据必须遵守的规则 -》 一个有效等价类和n个无效等价类(从多个角度违反)
- 等价类下可划分更小的等价类
边界值分析法:
错误推测法
可能发生的错误, 0, 空输入
因果图法
---------未完待续----------