测试设计-基于结构的测试

来源:互联网 发布:java 泛型 class 参数 编辑:程序博客网 时间:2024/06/07 07:12
基于结构的测试设计技术,也被称作白盒测试或者基于代码的测试技术。以代码,数据,架构,系统流程图作为测试设计的基础。提供覆盖准则,这些准则必须经过测量,并且必须与每个项目或组织所定义的目标相关联。
基于结构的测试设计技术有以下几种:条件测试,判定条件测试,改进的条件/判定覆盖测试,复合条件测试,路径测试,API测试
以上列出的前四个技术都是基于判定分支。
1.条件测试
条件测试,基于判定中的单个简单的“原子”条件。每个判定语句由一个或多个简单的“原子”条件组成,而每个“原子”条件能计算出一个布尔值,这些值的逻辑组合便得出判定的最终结果。测试用例必须评估每个原子条件的值。
例如判定条件为“A and B”,需考虑每个原子条件的值


ABA and B测试1truetruetrue测试2truefalsefalse测试3falsefalsefalse测试4falsetruefalse
局限性:当一个判定中存在两个或两个以上的原子条件,在测试设计过程中,如果无法很好的选择测试数据,会导致无法达到完全覆盖。
当一个判定只有单个的原子条件,条件测试等同于判定测试。

2.判定条件测试
判定分支测试中将判定看做一个整体,测试用例分别评估真和假的结果。
以条件测试中的“A and B”判定语句举例,选择不同的测试值,运用更少数目的测试就可以获得100%的判定条件覆盖

ABA and B测试1truetruetrue测试2truefalsefalse
由此可见,这种技术效率更高一点。
这种测试可以有效的覆盖大条件分支,这种适合测试比较重要的代码,但是关键的代码,更倾向于条件测试。

3.改进的条件/判定覆盖测试(MC/DC)
在N个单独的原子条件下,MC/DC通常可以得到N+1个单独的测试用例,MC/DC实现了判定条件覆盖,但是需要满足以下条件:
1,至少在一个测试中,判定条件会随着原子条件X是否为真而改变
2,至少在一个测试中,判定条件会随着原子条件X是否为假而改变
3,每个不同的原子条件都有满足条件1和2的测试
举个栗子:判定条件为“(A or B) and C”

 ABC(A or B) and C测试1truefalsetruetrue测试2falsetruetruetrue测试3falsefalsetruefalse测试4truefalsefalsefalse
以上例子不仅达到了判定覆盖(判定语句真假取值覆盖),同时也达到了条件覆盖(A,B,C 都不仅有真,而且有假)
局限性:当判定语句中某个特定的项多次出现时,要达到MC/DC覆盖会变得比较复杂。

4.复合条件测试
在一些情况下,可能需要测试所有可能的判定内所包含的真假数值组合。
判定条件为“(A or B) and C”

  ABC(A or B) and C测试1truetruetruetrue测试2truetruefalsefalse测试3truefalsetruetrue测试4truefalsefalsefalse测试5falsetruetruetrue测试6falsetruefalsefalse测试7falsefalsetruefalse测试8falsefalsefalsefalse

局限性:这种测试需要的测试用例数非常庞大,很多情况下更适合使用MC/DC 覆盖

5,路经测试
识别贯穿于代码中的路径,然后创建相关测试来覆盖这些路径。
根据路径设计测试用例的一种技术,经常用于状态转换测试中。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。

6.API测试(接口测试)
使不同进程,程序或系统之间的通信成为可能的代码。重点评估输入值和返回数据。
是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。