写在前面:软件测试快要考试了,于是进行了复习,之前学的都忘了,然后看视频发现特别蒙,然后就寻找了点博客,有的过于专业化,不易理解,看了很多博客之后打算写一个比较通俗易懂的博文进行记录和共勉。先系统介绍下六种覆盖方法吧(也就是视频上的)
覆盖率从低到高
1.语句覆盖法:语句覆盖法要求设计足够多的测试用例,使得程序中每条语句至少被执行一次,是最基本的覆盖要求
2.分支覆盖法:又称判定覆盖法,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即程序中的每个分支至少执行一次,每个判断的取真、取假至少执行一次。
3.条件覆盖法:要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。
4.分支条件覆盖法:又称判定条件覆盖法,要设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。
5.条件组合覆盖法:要求设计足够多的测试用例,使得判定中的每个条件结果的所有可能结果至少出现一次,这样也会使得每个判定本身的所有可能结果至少出现一次。
6.路径覆盖法:要求设计足够多的测试用例,覆盖程序中所有可能的执行路径。
我看完这些介绍似懂非懂,等到了做题的时候明白视频上的答案是对的,但是不明白为什么我的就是不对,或者为什么不写我想的那个,这就需要了解每个覆盖方法的本质。如图:
解释:条件C||条件D的结果为判断H,同理条件A&&条件B的结果为判断G,方框中为语句E和语句F,
1.语句覆盖法:顾名思义,就是每个语句至少都要被执行一次,则路径为START->I->K->L->END,因为只涉及到判断的T和F所以不必去考虑条件ABCD的真或假,只要G为F,H为T即可。
2.判定覆盖:顾名思义是关于判定(判断的覆盖),也只涉及G,H的真假,不涉及A,B,C,D的真假
上图中本应有两个测试用例,12或者34即可,这也就是我为什么会觉得我写的为什么不是对的,因为理论上,12和34都满足G,H都分别有一次真假,只不过组合的方式不同,也就出现了结果的不同
已提供覆盖路径,图就不在赘述了。
3.条件覆盖:就是对条件而言,而不去考虑判定或者判断的结果
原本也应该只有两个测试用例,因为每个条件只有T和F两个结果,但是由于条件有4个,所以会有很多的组合结果,也就出现了答案不唯一的情况,这里值做出了四个测试用例,12一组,34一组,
每个条件都分别由TF
4.分支条件覆盖法:也就是共同考虑条件和判断的真假
原本也应该只有两个测试用例,12一组,34一组,原因同上,但是因为组合方式不一样,结果就不一样了,同时做这个题的时候因为是判断和条件一起考虑,建议先去写判断的TF,即每个判断下面都要分别要有TF,然后再根据G或者H的真假去给条件A,B,C,D的值,同时也要注意每个条件下面结果不能相同即两个T或者两个F,必须是一个T一个F
下图就是错的
因为一个条件下面出现了相同的结果。
5.条件组合覆盖法:也就是说通过条件的排列组合来进行覆盖,不涉及判断即GH的真假
这是条件不在要求一个真假了,要进行组合,图比较简单的话,路径会有很多重复的。
6.路径覆盖:即将每个路径都进行覆盖,只考虑路径,然后再根据路径找GH真假,在通过GH找ABCD的真假
注:上面所有图的不填都是在做题的时候不考虑,而不是选项里面没有值!都需要去计算出带有具体值的测试案例
注:这是我自己的感想和技巧,如果哪里有问题希望大佬们可以指出来,如果您觉得写的还不错,比较有用,可以点一下推荐,谢谢啦