资源描述:
《软件测试技术:软件测试基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二章软件测试基础•2.1软件测试白箱法–2.1.1逻辑覆盖法•语句覆盖•判断覆盖•条件覆盖•条件组合覆盖•判断/条件覆盖•路径覆盖–2.1.2基本路径测试第二章软件测试基础•2.2软件黑箱测试法–2.2.1等价分类法–2.2.2边界值分析法•小结2.1软件测试白箱法•定义:–白箱法是以程序的内部逻辑为依据。合理的白箱测试,就是要选取足够的测试用例,对源代码进行比较充分的覆盖,以便尽可能多地发现程序中的错误。•白箱法适用范围:–主要用于模块测试、测试等。•两种方法:–逻辑覆盖法和基本路径法两种。2.1.1逻辑覆盖法aTc(A>1)∧(B=0)FX=X/AbTe(A=2)∨
2、(X>1)X=X+1Fd2-1一个被测程序结构图2.1.1逻辑覆盖法•语句覆盖:–语句覆盖的含义是指在测试的过程中,软件测试者应选择足够多的测试用例,使被测试程序中每个语句至少执行一次。•例子:–在图2-1所示的流程图中,正好所有的可执行语句都在路径L1上,故选择路径L1设计测试用例,就可以覆盖所有的可执行语句。满足本例的测试用例是:[(2,0,4),(2,0,3)]覆盖ace[L]。1•问题:–本测试用例实际上只测试了条件为真的情况,如果条件为假,则使用本测试用例显然不能发现问题。此外,当第一个判断中的逻辑符“”写成“”,或者第二个判断中的逻辑符号“”写成“”时,
3、本测试用例也不能查出上述错误。所以,语句覆盖是最弱的逻辑覆盖准则。•判断覆盖:–在测试的过程中,软件测试者应设计若干测试用例,并运行所测程序,使被测试程序中每个判断的真分支和假分支至少经历一次。•例如–在图2-1所示的流程图中,如果选择路径L,L,则可满足判12断覆盖,其测试用例如下:–[(2,0,4),(2,0,3)]覆盖ace[L]1–[(1,1,1),(1,1,1)]覆盖abd[L]。2–如果选择路径L和L,则可得另一组测试用例:34–[(2,1,1),(2,1,2)]覆盖abe[L]3–[(3,0,3),(3,1,1)]覆盖acd[L]。4•问题:–由此看来,测试用
4、例的取法并不是唯一的。此外,若把图2-1所示流程中的第二个判断中的条件X>1错些成X<1,那么利用上面两组测试用例,仍能得到同样的结果。这表明:只是判断覆盖不能确保一定能查出在判断的条件中存在的错误。•条件覆盖:–用条件覆盖所设计的测试用例可使得程序中的每一个判断的每一个条件的可能取值至少执行一次。•例如:–在图2-1所示的流程中,事先可对所有条件的取值加以标注,比如:–对第一个判断,若条件A>1成立,则取真值为T,1反之,取假值为~T;若条件B=0成立,则取真值1为T,反之,取假值为~T。22–对第二个判断,若条件A=2成立,则取真值为T,3反之,取假值为~T;若条件X>
5、1成立,则取真值3为T,反之,取假值为~T。44测试用例通过路径条件取值覆盖分支[(2,0,4)(2,0,3)]ace(L)TTTT11234c,e[(1,0,1)(1,0,1)]abd(L2)~T1T2~T3~T4b,d[(2,1,1)(2,1,2)]abe(L)T~TT~Tb,e31234测试用例通过路径条件取值覆盖分支[(1,0,3)(1,0,4)]abe(L)~TT~TTb,e31234[(2,1,1)(2,1,2)]abe(L)T~TT~Tb,e31234•问题:–比较这两组测试用例可以发现,第一组测试用例不仅覆盖了所有判断的取真分支和取假分支,而且覆盖了判断中条
6、件的可能取值;第二组测试用例虽然满足了条件覆盖,但由于只覆盖了第一个判断的取假分支和第二个判断的取真分支,不满足判定覆盖的要求。为此,必须引入更强的覆盖,即判定-条件覆盖。•判断-条件覆盖:–用判断-条件覆盖所设计的测试用例能够使得判断中每一个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次。•例如:测试用例通过路径条件取值覆盖分支[(2,0,4)(2,0,3)]ace(L)TTTTc,e11234[(1,1,1)(1,1,1)]abd(L2)~T1~T2~T3~T4b,d•问题:–从表面上看,它测试了所有条件的取值,但事实并非如此。这是由某些条件
7、覆盖了另一些条件所致,比如对于条件表达式(A>1)and(B=0)来说,若(A>1)的测试结果为真,则还要测试(B=0),才能决定表达式的值;而若(A>1)的测试结果为假,可以立刻确定表达式的结果为假。这时,往往就不再测试(B=0)的取值了,因此,条件(B=0)就没有检查。同样,对于条件表达式(A=2)or(X>1)来说,若(A=2)的测试结果为真,就可以立刻确定表达式的结果为真。这时,条件(X>1)就没有检查。因此,采用判断-条件覆盖,也不一定能查出逻辑表达式中的错误。•条件组合覆盖–能够使得每个判断的所有可能的