白盒测试技术
白盒测试技术也称结构性测试,是一种设计测试用例的方法,一般用于分析程序的内部结构,使用该方法测试程序时测试者可以看到被测试程序,并分析其内部结构。
按照被测试测试时是否需要执行测试程序可以分为静态和动态测试,白盒测试也可以据此划分。最常用的时白盒静态测试方法。包括代码审查,结构设计检查程序的可靠性。由于测试时围绕测试用例进行的白盒测试也是一种优秀的测试用例设计的方法。
在测试中穷举法是不可能的这是测试的原则之一,因此在有限的集合内设计特殊且最优的测试用例才能才能最有效的完成测试工作。白盒测试使用覆盖率来度量测试的完整性。测试覆盖率四程序被一组测试用例执行的百分比。
覆 盖 率 = 至 少 被 执 行 一 次 的 被 测 试 项 数 被 测 试 项 总 数 覆盖率=\frac{至少被执行一次的被测试项数}{被测试项总数} 覆盖率=被测试项总数至少被执行一次的被测试项数
逻辑覆盖法
逻辑覆盖是以程序内部的逻辑结构为基础的测试⽅法,属“⽩盒”测试。 这⼀⽅法是⼀系列测试过程的总称,这组测试过程逐渐 进⾏越来越完整的通路测试,要求测试⼈员对程序的逻辑结构有清楚的了解。 从覆盖源程序的语句的详尽程度分析,⼤致可以 分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
满足条件组合覆盖准则一定满足判定覆盖,条件覆盖和判定条件覆盖。该命题使充分不必要条件。
逻辑覆盖法的实例
对于程序:
void TestExample (int x,int y,int z)
{
int k=0,j=0;
if(x>3)&&(z<10)
{
k=x*y+1;
j=2x+y;
}
if(x==4||y>5)
{
j=x*y+10;
}
}
对于上述程序使用白盒测试设计测试用例。
- 语句覆盖的测试用例
根据语句覆盖的原理,程序由两个分支,在这两个分支中至少有一个被执行。例如第一个被执行,取x=4,y=5,z=5。
输入 | 预期输出 |
---|---|
x=4,y=5,z=5 | j=12k=19 |
满足两个分支又有一个执行即可
- 判定覆盖的测试用例
根据该原理两个分支的至少获得一次真一次假。例如取第一个为真,第二个为假,x=4,y=5,z=5。
输入 | 输出 |
---|---|
x=5,z=1,y=1 | k=6,j=11 (分支一为真,分支二为假) |
x=2,y=6,z=1 | k=0,j=22 (分支一为假,分支二为真) |
满足每个分支都取到一次真假即可。
- 条件覆盖的测试用例
根据条件覆盖的原理,每个条件的可能取值都执行一次。也就是:(分支一为真,分支二为假;分支一为假,分支二为真;分支一为真,分支二为真;分支一为假,分支二为假)。据此设计测试用例即可。
基路径测试法
路径测试法是从程序入口开始,执行所经历的各个语句的完整过程。做到所有路径都覆盖是不可能的,如果某个程序的独立路径都被执行那么就可以认为每个语句都检查过了。
基路径测试是在程序控制的基础上,有过分析控制环路复杂性到处基本可执行路径。包括四个步骤和一个工具方法:
- 根据过程设计将结果画出程序控制流图;
- 计算程序的环路复杂度;
- 导出基本路径集确定程序的独立路径;
- 设计相应的测试用例。
案例:
void TestExample (int x,int y,int z)
{
int k=0,j=0;
if(x>3)&&(z<10)
{
k=x*y+1;
j=2x+y;
}
if(x==4||y>5)
{
j=x*y+10;
}
}
控制流图是描述程序控制流的一种有向图表示了程序控制流的结构。
上述代码的控制流图为if结构:
计算环路复杂度的公式为:
V ( G ) = e − n + 2 V(G)=e-n+2 V(G)=e−n+2
e是图中边的数目,n表示节点总数。
确定独立路径:1-2-4,1-3-5。
设计测试用例:根据确定的独立路径设计测试用例,确保基本路径都能执行。
其他设计测试用例的方法:循环语句测试,数据流测试等。
白盒测试的流程
白盒测试的流程包括界面对象测试和业务对象测试。
向下延展
向上延展
黑河测试技术
黑盒测试:将被测软件看作黑盒,主要根据功能需求测试用例进行测试,注重软件功能需求,检查程序goon给你是否正常,黑盒测试完全从用户观点出发。
黑盒测试能够发现一下几类错误:
- 功能不对或者遗漏;
- 界面错误;
- 数据结构或者外部数据库访问错误;
- 性能错误。
- 初始化和终止错误。
黑盒测试方法
等价类是指输入域互补相交的子集,所有等价类的并集便是整个输入域。等价划分法就是根据程序规格说明书对输入范围划分,把所有可能输入的数据,即程序输入域划分为若干互不相交的子集(等价类),然后从等价类中选取少量的具有代表性的数据作为测试用例,进行测试。
等价类划分原则:
- 按区间划分;
- 按数值划分;
- 按数值集合划分;
- 按限制条件或规格划分。
案例:
输入a,b,c三个整数作为三角形的三边,通过程序判断类型是:等边三角形,等腰三角形,一般三角形和非三角形。
分析:由于是三个整数,范围都在1-100,1一下和100以上都是无效等价类,1-100是有效等价类。
那么在有效等价类的范围类根据三角形特性设计测试用例:
测试用例 a b c d test1 5 5 5 等边三角形 test2 2 2 3 等腰三角形 test3 3 4 5 一般三角形 test4 4 1 2 非三角形
边界值分析法用于列出单元功能,输入,状态及合法边界和非法边界值对数据进行测试。对于一个变量的程序边界值分析会产生4n+1
个测试用例。
边界值分析法是以边界情况的处理作为主要目标专门设计测试用例的方法。例如在上述三角形问题上满足两边之和大于第三边,两边只差小于第三边才能构成三角形。若>
写为>=
就无法构成了。
在边界值分析测试中利用输入变量的最小值,稍大于最小值,域内任意值,稍小于最大值,最大值
的数据进行测试。于是就得到了边界值分析测试的测试用例:
测试用例 a b c d test1 1 2 4 非三角形 test2 3 4 5 一般三角形 test3 55 80 20 非三角形 test4 100 100 20 等腰三角形
健壮性边界值分析是边界值分析的一种扩展,除了考虑变量的最小值,稍大于最小值,域内任意值,稍小于最大值,最大值
的数据外还要考虑一个略超过最大值
和一个略小于最小值
的数据。健壮性边界值分析将产生6n+1
个测试用例。
在使用边界值分析法设计测试用例时还需要遵循以下原则:
- 条件对取值进行限制的,应以边界内部以及刚超出取值范围的值作为测试用例。
- 对取值个数限制了的应该以稍大于最大,最大,稍小于最大,中等,稍大于最小,最小,稍小于最小作为测试用例。
- 如果程序规格说明书指明输入输出域是一个有序集合,则应该注意选取有序集合的第一个和最后一个元素作为测试用例。
因果图法是一种适于描述对于多种条件的组合,相应产生多个动作的形式的方法,利用图解分析输入各种组合情况,从而设计测试用例的方法。因果图最终生成的是判定表,合适检查程序输入条件的各种组合情况。
因果图测试方法设计测试用例的步骤:
- 确定软件规格的原因和结果;
- 确定原因和结果之间的逻辑关系;
- 确定因果图中的各个约束;
- 把因果图转化为决策表;
- 根据决策表设计测试用例。
参考https://zhuanlan.zhihu.com/p/129342944
黑盒测试的流程:测试计划—>测试设计---->测试开发----->测试执行---->测试评估。