随着项目软件快完成,白盒测试也开始着手工作了。
白盒测试是一种用来发现软件某些错误的测试方法。其分为逻辑覆盖和控制结构测试2种。
对于逻辑覆盖,有语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖,点覆盖,边覆盖和路径覆盖八种。
语句覆盖:最简单的覆盖,要求让程序的语句全部运行一遍。比如有语句:if(a<10) a=a*2;正常运行中其条件可能不满足而跳过,而在语句覆盖的过程中,我们必须要让其值为真,即每个语句都运行。这样做可以检测所有语句的正确性。但其缺点也是明显存在的,如果判断语句是错误的,其值一直为真,那么这种覆盖将检测不到。
判定覆盖:为了弥补语句覆盖的不足,有了判定覆盖。他在语句覆盖的基础之上,让每个判断语句取其可能的取值。还是刚刚的例子,要给出2组数据,一组让a<10,一组让a>=10以测试判断语句的正确性。明显,判定覆盖比语句覆盖效果高,可是其缺点是对程序逻辑的覆盖程度不高。
条件覆盖:条件覆盖其含义是让每个条件都取到可能的结果。其感觉有点像判定覆盖。(这里我对条件覆盖和判定覆盖的区别不太清晰。)
判定/条件覆盖:这是将判定覆盖和条件覆盖结合,所以其有多组测试数据。其对程序逻辑的覆盖是最高的,可是对于条件复杂的,要找到所有的测试难。
条件组合覆盖:就是让程序中的条件真值按排列组合排列起来,每种组合都进行测试。这能找出对于条件有逻辑关系的错误。
点覆盖,边覆盖和路径覆盖:就是让测试的样例进过其流图的所有点,边或者路径。对于边覆盖,我觉得其其实就是让程序全部运行一次。因为边覆盖需要走到所有的边,所以对于有选择的程序,其不能跑全部。比如有语句if(a<10) a++;else a--;运行的时候只能运行其中一个。所以,能运行边覆盖的,只有不存在多选一的程序。(不知道这样的理解对不对。)
对于控制结构测试,有三种:基本路径测试,条件测试和循环测试。
基本路径测试:根据程序的环境复杂度,找出其所有独立路径,一一测试。说白了,其实就是对于程序所有可能运行的路径进行测试。这种测试只适合所有独立路径都能以独立的方式测试的程序。(课本上的例子说明了其中2条路径不能独立测试。)
条件测试:条件测试能够检查程序模块中包含的逻辑条件。其中包含到条件的使用,分为简单条件和复合条件。复合条件比较复杂,测试的复杂度也高,测试例子的设定也难。(对于复合条件,我还是有点不太懂。)
循环测试:就是对循环的测试,其中有简单循环,嵌套循环和串接循环。有将嵌套和串接转换成简单循环的方法。
对于白盒测试的计划使用:
我们所做的项目是通讯软件,就是实现两台在局域网内的主机实时对话。所以其逻辑覆盖应该使用条件组合覆盖。因为其条件判断少,测试所需的样例不多。而且条件组合覆盖式对程序逻辑的覆盖度最大的测试方法。对于应要判断的条件,有是否写入本地数据库(以便查看聊天记录),是否符合字数要求(字数有规定数量。),登录是否正确。只有8种测试样例。其余的判断暂时还没有添加。
对于循环测试,我们需要重视,因为我们的软件是一直查看服务器的数据库是否更新,这个循环是软件的基础,如果这个循环出错,那么软件就出现错误了。
以上是我对白盒测试的理解。