单元测试
概念:单元测试是针对程序的最小单元来进行正确性检验的过程。
单元:一个单元可能是单个程序、类、对象、方法(函数)等。
优点:
1. 减少BUG
2. 快速定位BUG
3. 提高代码质量
4. 减少调试时间
缺点:
1. 周期时间长
2. 耗费资源
3. 能力要求高
单元测试流程
1. 单元测试-计划
1) 确定要测试代码范围
2) 评估标准(确定被测代码的覆盖率)
2. 测试策略-设计
1) 拿到开发代码进行调整(可独立执行)
3. 测试策略-实现
1) 根据调整好的代码-画流程图
2) 根据流程图画流图-确定复杂度、路径
3) 根据复杂度和路径确定测试用例(测试数据)
4. 单元测试-执行
1) 使用测试框架(UnitTest)编写单元测试用例
2) 测试用例(代码)和测试数据分离
3) 生成测试报告
1. 单元测试-计划
概念:对要测试代码的确定以及这些被测代码的评估标准、优先级等说明
1. 确定单元测试范围(那些代码要做单元测试)
2. 评估标准-(被测代码的逻辑覆盖率)
1.1 如何确定单元测试代码范围?
依据:二八原则(20%的代码中隐藏了80%的缺陷)
如何确定20%代码?
1. 频率:使用频率高的代码段;
2. 复用性:(是否已被复用)
1). 全新
2). 部分复用
3). 全部复用
3. 开发人员:
1). 技术
2). 业务
4. 复杂度:业务逻辑复杂度(一般认为圈复杂度在7级以上代码包括在20%的代码中)
如何确定圈复杂度等级?
圈复杂度:在学习测试策略实现时讲解
附录-测试范围汇总格式
1.2 评估标准
如何确定逻辑覆盖率?
1. 语句覆盖率
2. 分支覆盖率
3. 条件覆盖率
4. 路径覆盖率
5. 分支-条件覆盖率
流程图
说明:使用统一规定标准图形,描述程序运行的具体步骤
目的:
1) 确定覆盖率
2) 根据流程图画流图 (流图-->测试策略实现时学习)
(1) 语句覆盖率
语句:非分支非判断的代码
计算方式:被覆盖语句/总语句
(2)分支覆盖率
分支:判断语句的分支;如:if判断有两个分支
计算方式:覆盖分支/总分支数
流程图和覆盖率:
(3)条件覆盖率
条件:结果为true或false
计算方式:覆盖的条件/总条件
(4)路径覆盖率
路径:从开始到结束的过程
计算方式:覆盖路径/全部路径
(5)分支-条件覆盖率
说明:分支和条件的组合
计算方式:条件和分支概率的分子、分母分别相加(如:1/2、3/4-->4/6)
流程图和覆盖率: