白盒测试:分析组件、系统的内部结构,并设计相应的测试用例进行的测试
(结构测试、透明盒测试、逻辑驱动测试、基于代码的测试)
1.为什么要引入白盒测试:
对于行业严格要求的代码,比如军事、金融、医学等必须严格白盒测试
可以洞察程序中的一切,往往可以进行比较完整的测试
2.分类:
静态白盒测试,动态白盒测试
白盒测试方法:控制流分析、数据流分析、覆盖分析、路径分析、符号测试
3.白盒测试应用范围:
可以用于所有的系统开发阶段,包括单元测试、集成测试和系统测试。
通常进行路径测试,可以测试单元内部。单元之间、子系统之间以及系统内部的各种执行路径。
4.白盒测试的优缺点:
优点:
使程序员注意代码的自我审查,
测试代码中每条分支路径,对代码的测试比较彻底,可以测试证明工作完整性。
揭示隐藏在代码中的缺陷,保证程序中没有不该存在的代码
根据内部结构进行最优化测试
缺点:
执行路径可能非常多,导致无法测试
测试员必须会编程
效率不高导致成本过高
5.白盒测试过程:瞎掰掰easy
6.静态白盒测试:评审:正式/非正式
非正式:桌面审查
聊天
伙伴测试
结对编程
正式: 确定问题 -> 遵守规则 -> 准备 -> 编写报告
管理、技术评审
走查(答辩)
审查(专人报告)
审计
(涉及编码标准和规范,通用代码审查清单、静态白盒测试工具C++ test PC - Lint)
7.动态白盒:
① 基于数据流的白盒测试(数据覆盖):查看代码中变量的定义和引用等情况,可判定软件可能存在的数据方面的隐患或者错误。
变量被定义 + 变量被引用:变量必须先定义,再引用;被定义了就要被使用
基于数据流的白盒测试已经非常成熟了
② 基于控制流的白盒测试(代码覆盖):测试程序的状态及其中的程序流程,设法进入和退出每个模块,执行每一个代码,追踪所有的逻辑和分支。
(通常情况下进行彻底的数据流路径测试不现实)
控制流图:节点 + 控制流线
节点:进程快 + 判定点 + 连接点(具体画法百度)
(具体由边和节点限定的范围被称为区域)啊哈!
特点:有唯一的入口节点(源节点代表开始),唯一的出口节点(中止接点代表结束),判定节点发出的边必须终止于一个节点
※ 流程图化成控制流图
测试覆盖标准:逻辑覆盖:语句覆盖、判定覆盖、条件覆盖、判定 / 条件覆盖、组合覆盖、路径覆盖(功能点覆盖率 和 结构覆盖率)
循环覆盖:
基本路径测试:(McCabe圈覆盖)
独立路径(多次出入每次都不完全一样)
环形复杂度:(也叫圈复杂度:程序模块独立路径数量,确保所有路径执行一次的下界 ※ 环形复杂度计算公式
基本路径测试方法:画程序流图 -> 计算环形复杂度,独立路径条数 -> 导出基本路径集 -> 设计测试用例输入数据和预期输出
※ 几种不同的覆盖以及代码举例
8.Foster的ESTCA覆盖准则:
9:Xunit简介:
白盒测试是主要的单元测试方法
一般由开发人员实施白盒单元测试
目前广泛使用的动态白盒测试工具是xUnit测试框架家族
单元测试工具分为两类:
自动化单元测试工具:C++ Test 、Visual Unit 自动产生用例,执行测试、生成测试报告等
单元测试框架:提供类库和接口,用户自己编写测试代码来进行单元测试,如 xUnit 家族(xUnit 家族有哪些可以自行百度)