《浅析条件覆盖测试用例的设计》由会员分享,可在线阅读,更多相关《浅析条件覆盖测试用例的设计(5页珍藏版)》请在金锄头文库上搜索。
1、 浅析条件覆盖测试用例的设计 摘要:针对逻辑运算的短路特性,提出了条件覆盖测试用例设计的一般方法。关键词:条件覆盖;逻辑条件;测试用例;短路特性:O245:A:1673-0992(2010)09A-0064-011引题白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖,六种覆盖发现错误的能力呈由弱至强的变化。其中,条件覆盖需要设计足够多的测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次,条件覆盖率的公式可以表示如下:条件覆盖率=被评价到的条件取值的数量/条件取值的总数X100%。优点:对每个判
2、定语句中每个逻辑条件进行了测试;缺点:不一定能够满足判定覆盖。对于单一逻辑条件组成的判定语句,设计测试用例比较简单,选择逻辑条件的真值和假值两个测试用例即可。但对于两个和两个以上逻辑条件组成的判定语句,设计测试用例就不是那么容易,并不是将每个逻辑条件的真值和假值进行组合形成的测试用例组就能满足条件覆盖测试的要求。这是由于组合逻辑条件的逻辑运算具有短路的特性,某些测试用例由于前项逻辑条件的设定,使后项逻辑条件不能完成判断,从而无法实现条件覆盖。2条件覆盖案例分析设计以下C语言程序段的条件覆盖测试用例:if(x100&y500)score+=1;if(x=1000|z5000)score+=5;分
3、析:本题中有两个判定语句,有四个逻辑条件(以下分别用e1、e2、e3、e4表示),每个逻辑条件有两种逻辑取值真值(用T表示)和假值(用F表示)。表1是某高职软件测试课程教材给出的答案。表1测试用例组1从表面看,3个测试用例保证了四个逻辑条件都取了真值和假值,满足了条件覆盖测试。但由于C语言的逻辑运算具有短路特性,例如在第一个判定语句中,当x100取F值时,y500就不用判断了;在第二个判定语句中,当x=1000取T值时,z5000也不用判断了。因此,在表1中前三个逻辑条件都进行了真值和假值的判断,而第四个逻辑条件根本不可能进行真值判断。解决的方法,将第三个测试用例中的第三个逻辑条件改为假值,(
4、x,y,z)输入数据改为800,200,6000就使得第四个逻辑条件能够进行真值判断,从而实现条件覆盖测试。3解决方案在上例中,依据原有测试用例组进行相应修改,得到了正确的条件覆盖测试用例。那么,对于含有逻辑运算的判定语句是否有一种规范的设计测试用例的方法?对于逻辑与运算,前项为假值时就会对后项短路,因此将逻辑条件首先全部设为真值,再逐步从最后项开始,将真值过渡到假值,直到首项,这样设计的测试用例中每个逻辑条件必然包括真值和假值并且都会执行。同样的道理,对于逻辑或运算,前项为真值时就会对后项短路,因此将逻辑条件首先全部设为假值,再逐步从最后项开始,将假值过渡到真值,直到首项,这样设计的测试用例
5、中每个逻辑条件必然包括真值和假值并且都会执行。首先,从最简单的两个逻辑条件进行逻辑运算组成判定语句开始研究,设a1、a2、b1、b2为四个不同的逻辑条件,组成两个判定语句:a1&a2,b1|b2。表2测试用例组2在表2中,“”表示任意取值,因为不管a2取什么值,当a1为假值时,a2都被屏蔽。实际设计测试用例时,将“”任意取真值或假值,再根据各逻辑条件的取值设计输入数据就形成了满足条件覆盖的测试用例。三个逻辑条件组成的判定语句测试用例又如何设计?根据相同的道理,可以得到表3。表3测试用例组3实际上,这种规律可以推广到由N个逻辑条件通过逻辑与或者逻辑或运算组成的判定语句。对于逻辑与运算,N个逻辑条
6、件完成条件覆盖只需要N+1个测试用例,测试用例从逻辑条件全真开始,然后从最后一个逻辑条件取假值,逐个过渡到第一个逻辑条件取假值,当前一个逻辑条件取假值时,后面的逻辑条件取任意值。对于逻辑或运算,N个逻辑条件完成条件覆盖也只需要N+1个测试用例,测试用例从逻辑条件全假开始,然后从最后一个逻辑条件取真值,逐个过渡到第一个逻辑条件取真值,当前一个逻辑条件取真值时,后面的逻辑条件取任意值。4总结不难发现,根据以上规律设计的测试用例,不仅实现了条件覆盖,而且实现了判定覆盖和判定/条件覆盖,甚至还可以认为实现了条件组合覆盖。这是由于将判定语句中的各逻辑条件的各种真假取值组合一遍,实现条件组合覆盖时,由于逻辑运算的短路特性一些测试用例对逻辑条件的测试效果是相同的。例如在表3中的第四个测试用例,可以拆分为四个测试用例,但这四个测试用例的测试效果是相同的,测试一个就可以了。以上的分析研究,仅涉及单一逻辑运算的判定语句,由于混合逻辑运算组成的判定语句并不完全适用以上规律,本论文未探讨。本人在软件测试技术课程的教学过程中,针对高职学生的认知特点,不仅讲授了条件覆盖的基本概念,还传授了条件覆盖的测试用例的设计方法,取得了较好的教学效果。参考文献:1朱少民.软件测试方法和技术M.清华大学出版社,2005.72杜文浩等.软件测试基础教程M.中国水利水电出版社,2008年3月第一版. -全文完-