动态测试技术之白盒测试:
白盒测试利用程序设计的内部逻辑和控制结构生成测试用例,进行软件测试。
白盒测试的方法主要是静态和动态两种方法,静态测试主要分为文档审查,代码审查,静态分析,代码走查等,在昨天的笔记中我们提到过,本次主要学习动态测试方法。
动态测试的主要特点是当软件在真实的或模拟的环境中执行之前、之后以及执行过程中,对软件行为进行分析。
本次我们主要来了解下基本路径测试、控制结构测试。
基本路径测试对程序复杂度进行合理度量,并以此为指导来定义一个基本路径集合。基本原理:从全路径集合中抽取一组线性无关的独立路径看做一组向量基,因此全路径集合中的所有路径可由这组独立路径的某种组合来进行遍历,因此,只需对本组路径进行测试,就等价于对全路径进行了测试。
测试的目标:1、测试的完备性,即通过对独立路径的测试达到对所有路径的测试覆盖2、测试的冗余性,每条路径都是独立的,设计的测试用例之间不存在冗余,抽取的基本路径需要满足一下要求:①任意两条基本路径线性无关②所以基本路径的并集是整个向量空间。
测试设计:1、画出程序图2、计算基本路径集合的规模,基本路径的个数等于圈复杂度,什么是圈复杂度:是一种对程序结构复杂度的度量模型。计算圈复杂度方法:①观察法(根据定义直观观察程序图将二维平面分隔成的封闭区域和开放区域的个数)②公式法:v(圈复杂度)=e-n+2p (e表示图中边的数目,n表示图中节点的数目,p表示图中未连接部分)③谓词节点法:如果程序图中一个节点包含判断条件,称为谓词节点。公式:v(G)=D+1 其中D表示图中独立谓词节点的数目。3、抽取基本路径,首先确定一条主路径(在所有路径中找到的一条最复杂的路径)4、处理不可行路径5、设计测试用例。
控制结构测试:
基本路径测试是简单高效的,但有时还不能满足测试要求。由基本路径测试演变而来的控制结构测试不仅拓宽了测试覆盖准则,而且能够提高白盒测试的质量。条件判定和循环是两类最重要的控制结构。
条件判定测试的覆盖准则有语句覆盖,判定覆盖,条件覆盖等多种。
语句覆盖:语句覆盖也叫行覆盖、段覆盖或基本块覆盖,用于度量程序代码可执行语句被执行的比率。满足语句覆盖,指的是程序代码可执行语句至少被执行一次,包括条件分支中包含的语句也要执行到。语句覆盖等同于对图中所有节点的覆盖,并且对隐士分支无效。
判定覆盖:判定覆盖也叫分支覆盖,指的是程序代码中每个判定节点的取真与取假分支都至少被执行一次,判定覆盖等同于对图中所有边的覆盖。(判断覆盖需覆盖到每一条边执行,测试重点转向判定节点,生成的测试用例对于语句覆盖增加,满足判定覆盖的,一定满足百分百语句覆盖。)
条件覆盖:条件覆盖指的是程序代码每个判定表达式中的每个条件的取真和取假分支情况至少执行一遍。
条件/判定覆盖:为同时满足对判定表达式所有分支的覆盖以及对判定表达式中每个简单判定条件的取值覆盖,引入条件/判定覆盖指标。条件/判定覆盖指标指的是,测试用例的实际应满足判定节点的取真和取假分支至少执行一次,并且每个简单判定条件的取真和取假情况也至少执行一次,即同时满足判定覆盖和条件覆盖。
条件组合覆盖:条件组合覆盖指的是程序代码中全部判定节点的每个简单判定条件的所有可能取值组合至少被执行一次。