基本概念:
基于一个应用代码的内部逻辑知识,基于覆盖全部代码,分支,路径,条件,使用程序设计的控制结构导出测试用例,是软件测试的主要方法之一,白盒测试一般是以单元或者模块为基础,
4大原则:
1)保证一个模块中的所有独立路径至少被测试一次
2)所有逻辑值均需要测试真和假两种情况
3)检查程序的内部数据结构,保证其结构的有效性
4)在上,下边界及可操作范围内运行所有循环
白盒测试在不同的测试阶段的侧重点:
1)单元测试:代码检查,逻辑覆盖
2)集成测试:增加静态结构分析,静态质量度量
3)系统测试:根据黑盒测试结果,采用白盒测试
白盒测试的依据和流程
1.白盒测试的依据
1)软件产品的需求报告
2)软件产品的需求规格说明书
3)软件产品的设计文档
4)软件产品的界面
5)软件产品的编码规范
6)软件产品的开发命名标准
7)软件产品设计文档的相关规范
2.白盒测试流程
1)界面对象测试流程
界面对象的优点:便于测试人员从界面层直观的录入数据
界面对象的缺点:进行回归测试时,需要重复录入数据
2)业务对象测试流程
业务对象是从底层开始测试,底层测试通过了在依次向上一层测试
业务对象的优点:进行回归测试,需要再输入数据,执行一边测试程序即可
业务对象的缺点:需要给中间层编写一个测试小程序,即根据程序中类的对象构造输入数据及将结果输出到控制台上
3.白盒测试的方法
代码检查法
桌面检查
走查
代码审查
4.静态结构分析法
静态结构分析法是测试人员通过测试工具分析程序源代码的系统结构,数据结构,数据接口,内部控制逻辑等内部结构,生成函数调用关系图,模块控制流程图,内部文件调用关系图
5.静态质量度量法
1)软件质量:
功能性
可靠性
可用性
有效性
可维护性
轻便性
2)质量度量
优秀:符合模型框架中的所有规则
良好:未大量偏离模型框架中的规则
一般:违背了模型框架中的大量规则
较差:无法保证正常软件可维护性(不可以接受)
6.逻辑覆盖法
1)测试覆盖率
2)逻辑覆盖
①语句覆盖------利用选择足够多的测试数据,使得程序的每个可执行语句至少执行一次
②:判断覆盖------通过设计足够多的测试用例,使程序中的每一个判断至少获得一次'真'值和'假'值,或者使程序中的每一个取真的分支或取假的分支至少经历一次,也称为分支覆盖
③:条件覆盖------设计足够多的测试用例,使得程序中的每个判断包含的每个条件的可能取值都至少满足一次
④:条件判断组合覆盖-----程序中每个判断包含的每个条件的所有条件的所有情况至少出现一次,并每个判断本身的判断结果也至少出现一次
⑤:多条件覆盖----每个判断中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)
⑥:修正条件判断覆盖-----每个程序模块的入口点和出口点都至少考虑被调用一次,从每个程序的判断到所有可能的结果值至少转换一次
⑦:组合覆盖----通过执行足够的测试用例,使程序中每个判断的所有可能的条件取值组合都至少出现一次
⑧:路径覆盖----设计足够多的测试用例,覆盖程序中所有可能的路径
3)面向对象的覆盖
①继承上下文覆盖
②基于状态的上下文覆盖
4)测试覆盖准则
①错误敏感测试用例分析ESTCA
②线性代码序列与跳转LCSAJ
线性代码序列与跳转是指一组顺序执行的代码,以控制流跳转为结束点,可以产生4层覆盖
第一层:语句覆盖
第二层:分支覆盖
第三层:LCSAJ覆盖
第四层:两两层LCSAJ覆盖,一直到N个LCSAJ
7.基本路径测试法
步骤:
1)画出程序的控制流图
2)计算程序的环路复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个执行语句至少执行一次所必须的测试用例数目的上界
3)导出基本路径集,确定程序的独立路径
4)根据3中的独立路径,设计测试用例的输入数据和预期输出
8.域测试法
域测试法是一种基于程序结构的测试方法,基于对程序输入空间(域)的分析,选择测试点进行测试,主要错误包括域错误,计算型错误,丢失路径错误
9.符号测试法
符号测试法的基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,符号值可以是基本的符号变量值,也可以死符号变量值得表达式
10.Z路径覆盖法
Z路径覆盖法对循环机制进行了简化,减少了路径的数量,使得覆盖所有路径成为可能,简化循环意义下的路径覆盖称为Z路径覆盖,循环简化的目的是限制循环的次数,不考虑循环的形式和循环体实际执行的次数,简化的循环测试只考虑执行循环体一次和零次两种情况,考虑执行时进入循环体一次和跳过循环体这两种情况
11程序变异测试法
程序变异是一种错误驱动测试,错误驱动测试是针对某类特定程序错误的,即专门测试某类错误是否存在,优点是便于测试对软件危害最大的可能错误,使测试效率具有最大的提高,并降低了成本
文章截取书籍<<软件测试与软件测试技术>>