单元测试

概念:单元测试是针对程序的最小单元来进行正确性检验的过程。
单元:一个单元可能是单个程序、类、对象、方法(函数)等。

优点:

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%的代码中)

如何确定圈复杂度等级?

圈复杂度:在学习测试策略实现时讲解

附录-测试范围汇总格式

使用copliot写单元测试 使用单元测试的步骤_使用copliot写单元测试

1.2 评估标准

如何确定逻辑覆盖率?

1. 语句覆盖率
2. 分支覆盖率
3. 条件覆盖率
4. 路径覆盖率
5. 分支-条件覆盖率

流程图

说明:使用统一规定标准图形,描述程序运行的具体步骤
目的:
    1) 确定覆盖率
    2) 根据流程图画流图        (流图-->测试策略实现时学习)

(1) 语句覆盖率

语句:非分支非判断的代码
计算方式:被覆盖语句/总语句

(2)分支覆盖率

分支:判断语句的分支;如:if判断有两个分支
计算方式:覆盖分支/总分支数

流程图和覆盖率: 

使用copliot写单元测试 使用单元测试的步骤_流程图_02

(3)条件覆盖率

条件:结果为true或false
计算方式:覆盖的条件/总条件

(4)路径覆盖率

路径:从开始到结束的过程
计算方式:覆盖路径/全部路径

(5)分支-条件覆盖率

说明:分支和条件的组合  
计算方式:条件和分支概率的分子、分母分别相加(如:1/2、3/4-->4/6)

流程图和覆盖率:

使用copliot写单元测试 使用单元测试的步骤_单元测试_03