关于白盒测试 软件测试
一、白盒测试的定义
白盒测试定义:白盒测试也称结构测试或逻辑驱动测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。
二、白盒测试的重要性
1、时间方面
影响系统集成联调,花费大量的时间去定位一些很低级的问题
2、测试效果
能够将集成测试和系统测试不能发现的问题暴露出来
3、测试成本
测试成本和定位问题成本
4、产品质量
产品质量要求较高的模块
三、白盒测试评估
1、测试完备性评估,主要检查测试过程中是否已经执行了所有的测试用例,对新增的测试用例是否已及时更新测试方案等。
2、代码覆盖率评估,主要是根据代码覆盖率工具提供的语句覆盖情况报告,检查是否达到方案中的要求,公司要求语句覆盖达到100%。但很多情况下,第一轮测试用例执行完后是很难达到的,这时在评估过程中要对覆盖率进行分析,主要从以下方面来考虑:
1)不可能的路径或条件
2)不可达的或冗余的代码
3)不充分的测试用例
3、从覆盖的角度看,测试应该覆盖:
1)功能覆盖
2)输入域覆盖
3)输出域覆盖
4)函数交互覆盖
5)代码执行覆盖
大多数有效的测试用例都来自于分析,而不是仅仅为了达到测试覆盖率目标而草率设计测试用例。千万不要误解测试覆盖,测试覆盖并不是我们最求的目的,它只是评价测试的一种方式,为测试提供指导和依据。
四、白盒测试技术中的逻辑覆盖
一个或者多个条件组成一个判定,一个程序中可以有多个判定。
首要的是建立一个二维的真值表,各列为判定和条件,各行为每组值的T或者F。
1、语句覆盖
为了暴露程序中的错误,至少每个语句应该执行一次。
这也是最弱的逻辑覆盖标准咯。
2、判定覆盖
每个判定的每种可能结果都要执行一次。
建立判定表以后,要保证每种判定的结果中都包含了T和F,才满足判定覆盖。
3、条件覆盖
不但每个语句需要执行一次,而且判定表达式中的每个条件都要取到可能的结果。
建立判定表以后,要保证每种条件的结果中都包含了T和F,才满足条件覆盖。
4、判定/条件覆盖
使得每个判定以及每个判定中的每个条件都取到可能的结果。
建立判定表以后,要保证每个判定结果包含T和F,而且每种条件的结果包含T和F。
也就是综合了上面的条件覆盖和判定覆盖。
5、条件组合覆盖
使得每个判定中的条件的各种组合至少出现一次。
也就是说,先把程序中的条件列出来,排列组合,写出所有的可能性,看有没有那组值同时满足这些排列组合。
6、路径覆盖
每条可能的路径都至少执行一次。
就是看源程序中的判断,都有哪些组合,比如T ,FF,FT,等等,看看哪个满足包含了所有的组合。
因为这些不同的组合就代表了程序中执行的不同路径。