白盒测试是通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试,以确定实际运行状态与预期状态是否一致。
白盒测试又被称为:
透明盒测试
结构化测试
逻辑驱动测试
基于代码的测试
白盒测试的常用技术分类
一、静态分析:
数据流分析
控制流分析
信息流分
二、动态分析:
循环覆盖
基本路径覆盖
优缺点
一、优点:
迫使测试人员去仔细思考软件的实现
可以检测代码中的每条分支和路径
揭示隐藏在代码中的错误
对代码的测试比较彻底
让软件最优化
二、缺点:
昂贵
无法检测代码中遗漏路径和数据敏感性错误
不验证规格的正确性
原则(采用白盒测试方法必须遵循以下原则)
保证一个模块中的所有独立路劲至少被测试一次
对所有的逻辑判定均需测试取真和取假俩种情况
在上下边界及可操作范围内运行所有循环
检查程序的内部数据结构,保证其结构的有效性
工具
jtest java语言的单元测试框架
JUnit验证java的工具
cppunit跨平台的c++单元测试框架
gtest跨平台的c++单元测试框架
PhpUnit Php
Bounds Checker C++,Delphi API和OLE错误检查、指针和泄露错误检查、内存错误检查
True Time C++,Java,Visual Basic代码运行效率检查、组件性能的分析
插桩原理
对jvm的字节码插桩
基于block插桩
计算覆盖的代码块
逻辑覆盖
语句覆盖:就是指每条语句至少执行一次
判定覆盖:每个判定的分支都要至少执行一次
条件覆盖:要使每个判定的每个条件应取到各种可能的值
判定/条件覆盖:要同时满足判定中各条件的每一种组合至少出现一次
条件组合:是指每个判定中各条件的每一种组合至少出现一次
路径覆盖:程序当中的每一条可能的路径,至少被执行一次
点覆盖:选取足够多的测试数据,使得程序执行路劲至少经过流图的每个结点一次
边覆盖:选取足够多的测试数据,使程序的每条可能路径都至少只执行一次
白盒测试
正确使用白盒测试,就要先从代码分析入手,根据不同的代码逻辑规则,语句执行情况,选用适合的覆盖方法,任何一个高效的测试用例,都是针对具体测试场景的,逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!