经常使用的软件测试方法有两大类:静态测试方法和动态测试方法。测试
其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是经过输入一组预先按照必定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,最重要的技术是路径和分支测试。spa
六种白盒子测试方法:(强度由低到高)语句覆盖、断定覆盖、条件覆盖、断定条件覆盖、条件组合覆盖、路径覆盖。设计
1)所谓语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖率的公式能够表示以下:io
语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100%class
2)断定覆盖:使设计的测试用例保证程序中每一个判断的每一个取值分支(t or f)至少经历一次软件
[优势]:断定覆盖具备比语句覆盖更强的测试能力,并且具备和语句覆盖同样的简单性,无需细分每一个断定就能够获得测试用例。程序
[缺点]:每每大部分的断定语句是由多个逻辑条件组合而成(如,断定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每一个条件的取值状况,必然会遗漏部分测试路径。方法
例如:im
int a,b;技术
if(a || b)
执行语句1
else
执行语句2
要达到这段程序的判断覆盖,咱们采用测试用例:1)a = true , b = true ;2)a = flase, b = flase
3)条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,断定中每一个条件的全部可能结果至少出现一次,但未必能覆盖所有分支
条件覆盖要检查每一个符合谓词的子表达式值为真和假两种状况,要独立衡量每一个子表达式的结果,以确保每一个子表达式的值为真和假两种状况都被测试到。
4) 断定条件覆盖:断定-条件覆盖就是设计足够的测试用例,使得判断中每一个条件的全部可能取值至少执行一次,同时每一个判断的全部可能判断结果至少执行,即要求各个判断的全部可能的条件取值组合至少执行一次。
5) 条件组合覆盖:在白盒测试法中,选择足够的测试用例,使全部断定中各条件判断结果的全部组合至少出现一次,知足这种覆盖标准成为条件组合覆盖。
6)路径覆盖:是每条可能执行到的路径至少执行一次;
说明:其中语句覆盖是一种最弱的覆盖,断定覆盖和条件覆盖比语句覆盖强,知足断定/条件覆盖标准的测试用例必定也知足断定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆盖外最强的,路径覆盖也是一种比较强的覆盖,但未必考虑断定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。
举例:
if A and B then Action1
if C or D then Action2
1)语句覆盖最弱,只须要让程序中的语句都执行一遍便可 。上例中只需设计测试用例使得A=true B=true C=true 便可。
2)分支覆盖又称断定覆盖:使得程序中每一个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被知足。上例须要设计测试用例使其分别知足下列条件便可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。
3)条件覆盖:要使得每一个判断中的每一个条件的可能取值至少知足一次。上例中第一个判断应考虑到A=true,A=false,B=true,B=false第二个判断应考虑到C=true,C=false,D=true,D=false,因此上例中能够设计测试用例知足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false。
4) 路径覆盖:要求覆盖程序中全部可能的路径。因此能够设计测试用例知足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false(3)A=true,B=true,C=false,D=false(4)A=false,B=false,C=true,D=true。