白盒测试day01

单元测试基础

目标
1. 了解单元测试流程
2. 了解单元测试用例设计
3. 在UnitTest框架中使用该数据分离

什么是单元测试?

概念:单元测试是针对程序的最小单元来进行正确性检验的过程。
单元:一个单元可能是单个程序、类、对象、方法(函数)等。
优点:
1. 减少BUG
2. 快速定位BUG
3. 提高代码质量
4. 减少调试时间
缺点:
1. 周期时间长
2. 耗费资源
3. 能力要求高

单元测试流程

1. 单元测试-计划
        1) 确定要测试代码范围
        2) 评估标准(确定被测代码的覆盖率)
2. 测试策略-设计
        1) 拿到开发代码进行调整(可独立执行)
3. 测试策略-实现
        1) 根据调整好的代码-画流程图
        2) 根据流程图画流图-确定复杂度、路径
        3) 根据复杂度和路径确定测试用例(测试数据)
4. 单元测试-执行    
        1) 使用测试框架(UnitTest)编写单元测试用例
        2) 测试用例(代码)和测试数据分离
        3) 生成测试报告

单元测试-计划

概念:对要测试代码的确定以及这些被测代码的评估标准、优先级等说明

1. 确定单元测试范围(那些代码要做单元测试)
2. 评估标准-(被测代码的逻辑覆盖率)

如何确定单元测试代码范围?

依据:二八原则(20%的代码中隐藏了80%的缺陷)
如何确定20%代码
1. 频率:使用频率高的代码段;
2. 复用性:(是否已被复用)        
   1). 全新
   2). 部分复用
   3). 全部复用
3. 开发人员:     
   1). 技术
   2). 业务
4. 复杂度:业务逻辑复杂度(一般认为圈复杂度-->流图在7级以上代码包括在20%的代码中)
如何确定圈复杂度等级?
圈复杂度:在学习测试策略实现时讲解
附录-测试范围汇总格式

 

 

评估标准确定被测代码覆盖率

如何确定逻辑覆盖率?
1. 语句覆盖率
2. 分支覆盖率
3. 条件覆盖率
4. 路径覆盖率
5. 分支-条件覆盖率

流程图

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

什么是语句覆盖率

语句:非分支非判断的代码
练习
提示用户输入一个数,如果该数大于0则加1,如果小于0则减1;        
代码:        
流程图: 
测试数据
1. 输入  3
2. 输入  0
3. 输入 -2

语句覆盖率-总结

1. 语句
2. 计算方式:被覆盖语句/总语句

分支覆盖率

分支:判断语句的分支;如:if判断有两个分支
被测代码流程图

分支覆盖率总结

1. 分支
1. 计算方式:覆盖分支/总分支数

条件覆盖率

条件:结果为true或false
练习
输入用户名和密码,如果用户名为:admin,密码为:123456,输出验证成功;否则输出验证失败;
代码流程图
练习2
输入两个数a,b,如果a>5 and b<5 执行语句3;否则 elif a==5 or b<10 执行语句4;否则执行语句5
代码流程图
练习3
输入用户名和密码:
如果 username= "admin" and password="123456" 执行语句3;否则执行语句4
如果 username= "zhangsan" and password="654321" 执行语句5;否则执行语句6

条件覆盖率总结

说明:一个条件有两个结果 true、false
注意:条件之间使用逻辑符 and连接  第一个条件如果失败,不会在去判断第二个条件;如果为or第一个条件失败,会继续去判断第二个条件
计算方法 走过的条件个数 / 条件数*2(这是因为一个条件有两个结果 true、false)

路径覆盖率

路径:从开始到结束的过程

路径覆盖率总结

1. 路径概念
2. 计算方式:覆盖路径/全部路径
3. 路径和分支区别
说明:从开始-到结束的过程
注意:路径的分子永远为1
提示 练习四路径有4条,但有一条永远不可成立,所以路径为3条。永远不可成立的那条路径就是 YY这条路 (NN NY YN三条可以的路径)

分支条件覆盖率

1.分子=分支覆盖率的分子+条件覆盖率的分子
2.分母=分支覆盖率的分母+条件覆盖率的分母

 

原文地址:https://www.cnblogs.com/st998/p/13830998.html