软件测试方法(白盒测试)
语句覆盖准则 覆盖控制流图中得所有节点 完全对应逻辑覆盖中得语句覆盖 分支覆盖准则 覆盖控制流图中得所有边 完全对应逻辑覆盖中得判定覆盖 谓词测试 分支的条件是由谓词组成的,单个谓词称为原子谓词。 原子谓词通过逻辑运算符可以构成复合谓词。 原子谓词覆盖准则 分支谓词覆盖准则 复合谓词覆盖准则 原子谓词覆盖准则 每个复合谓词所包含的每一个原子谓词都至少或得一次“真”,和一次“假” 完全对应逻辑覆盖中得条件覆盖 分支谓词覆盖准则 每个复合谓词所包含的每一个原子谓词都至少或得一次“真” 和一次“假” 每个复合谓词本身也至少或得一次“真”和一次“假” 完全对应逻辑覆盖中得判定条件覆盖 复合谓词覆盖准则 每个复合谓词所包含的各个原子谓词的可行的真假组合都要出现一遍 完全对应逻辑覆盖中得组合覆盖 路径覆盖准则(基本路径测试) 基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。 程序基本路径:基本独立路径就是从程序的开始结点到结束可以选择任何的路径遍历,但是每条路径至少应该包含一条已定义路径不曾用到的边。 路径表达式 为了满足路径覆盖,必须首先确定具体的路径以及路径的个数。我们通常采用控制流图的边(弧)序列和节点序列表示某一条具体路径,更为概括的表示方法为: (1)弧a和弧b相乘,表示为ab,它表明路径是先经历弧a,接着再经历弧b,弧a和弧b是先后相接的。 (2)弧a和弧b相加,表示为a+b,它表明两条弧是“或”的关系,是并行的路段。 路径数的计算: 在路径表达式中,将所有弧均以数值1来代替,再进行表达式的相乘和相加运算,最后得到的数值即为该程序的路径数。 基本路径测试方法 路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。从广义的角度讲,任何有关路径分析的测试都可以被称为路径测试。 完成路径测试的理想情况是做到路径覆盖,但对于复杂性大的程序要做到所有路径覆盖(测试所有可执行路径)是不可能的。 在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么可以认为程序中的每个语句都已经检验过了,即达到了语句覆盖。这种测试方法就是通常所说的基本路径测试方法。 基本路径测试……续 基本路径测试法包括以下5个方面: 程序的控制流图:描述程序控制流的一种图示方法。 程序环形复杂性: 环形复杂度是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本独立路径数目。为确保所有语句至少执行一次的测试数量的上界。 导出测试用例:通过程序的控制流图导出基本路径集,列出程序的独立路径。 准备测试用例,确保基本路径集中的每一条路径的执行。 图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。 计算环形复杂度的方法 环形复杂度以图论为基础,为我们提供了非常有用的软件度量。可用如下三种方法之一来计算环形复杂度: 控制流图中区域的数量对应于环形复杂度。 给定控制流图G的环形复杂度—V(G),定义为 V(G) = E-N+2 其中,E是控制流图中边的数量,N是控制流图中的节点数量。 给定控制流图G的环形复杂度—V(G),也可定义为 V(G) = P+1 其中,P是控制流图G中判定节点的数量。 基本路径测试……举例 下面我们通过一个实例来说明基本路径测试。 例:请看以下代码,它由C++语言书写。把它转化成图形矩阵,最后使用基本路径测试法为变量temp设计测试用例,使之满足基本路径覆盖要求。 基本路径测试……举例 void ReadPara( CString temp) { if ( temp = = ">=") m_oper.SetCurSel(0); else { if (temp = = ">") m_oper.SetCurSel(1); else { if ( temp = = "= =") m_oper.SetCurSel(2); else { if( temp = = "<=") m_oper.SetCurSel(3); else { if ( temp = = "