大家好,又见面了,我是全栈君。
一、软件測试技术:
黑盒:在不知道程序内部结构,仅仅知道程序结构的情况下採用的測试技术或策略。
白盒:在知道程序内部结构的情况下採用的測试技术或策略。
两种測试方法从不同的角度出发,反映了软件的不同側面。也试用于不同的开发环境。
二、白盒法又称为逻辑覆盖法。眼下经常使用的覆盖法:
技巧:条件组合覆盖>判定覆盖>语句覆盖
路径覆盖>判定覆盖>语句覆盖
1、语句覆盖——每一个语句至少运行一次
Test case : A=2 , B=0 , X=4.
2、判定覆盖(分支覆盖)——每一个判定的分支至少运行一次
Test cases:①A=3 , B=0 , X=3②A=2 , B=1 , X=1
3、条件覆盖——即一个推断语句中往往包括了若干条件。通过给出測试用例,使推断中的每一个条件都获得各种可能的结果。
Test cases: ①A=2 , B=0 , X=4(满足A>1, B=0; A=2, X>1)
②A=1,B=1, X=1
4、推断/条件覆盖——选取足够多的測试数据。使推断中每一个条件都取得各种可能值。并使每一个推断表达式也取到各种可能的结果。
5、条件组合覆盖——使得每一个推断中条件的各种可能组合都至少出现一次。
三、最少用例计算方法
为实现測试的逻辑覆盖,必须设计足够多的測试用例,并使用这些測试用例运行被測程序,实施測试。
我们关心的是,对某个详细程序来说,至少要设计多少測试用例。这里提供一种估算最少測试用例数的方法。我们知道,结构化程序是由 3 种基本控制结构组成,这 3 种基本控制结构就是:
顺序型——构成串行操作。
选择型——构成分支操作;
反复型——构成循环操作。
为了把问题化简。避免出现測试用例极多的组合爆炸,把构成循环操作的反复型结构用选择结构取代。
也就是说,并不指望測试循环体全部的反复运行,而是仅仅对循环体检验一次。这样。任一循环便改造成进入循环体或不进入循环体的分支操作了。
下图给出了类似于流程图的N-S图表示的基本控制结构(图中A、B、C、D、S均表示要运行的操作,P是可取真假值的谓词,Y表真值,N表假值)。当中图9(c)和图9(d)两种反复型结构代表了两种循环。在作了如上简化循环的如果以后。对于一般的程序控制流。我们仅仅考虑选择型结构。其实它已能体现了顺序型和反复型结构了。
几个相关帮助理解的练习:
1.例如以下图表达了两个顺序运行的分支结构。
两个分支谓词P1和P2取不同值时,将分别运行a或b及c或d操作。显然,要測试这个小程序,须要至少提供4个測试用例才干作到逻辑覆盖。使得ac、ad、bc及bd操作均得到检验。事实上,这里的4是图中第1个分支谓词引出的两个操作。及第2个分支谓词引出的两个操作组合起来而得到的,即2×2 = 4。而且。这里的2是因为两个并列的操作,1 + 1 = 2 而得到的。
2.下图表示的程序为例,该程序中共同拥有9个分支谓词,虽然这些分支结构交错起来似乎十分复杂。非常难一眼看出应至少须要多少个測试用例。我们注意到该图可分上下两层:分支谓词1的操作域是上层,分支谓词8的操作域是下层。这两层正像前面简单例中的P1和P2的关系一样。仅仅要分别得到两层的測试用例个数。再将其相乘即得总的測试用例数。
这里须要首先考虑较为复杂的上层结构。谓词1不满足时要作的操作又可进一步分解为两层,这就是图中的子图(a)和(b)。
它们所需測试用例个数分别为1+1+1+1+1 = 5及1+1+1 = 3。
因而两层组合,得到5×3 = 15。于是整个程序结构上层所需測试用例数为1+15 = 16。而下层十分显然为3。故最后得到整个程序所需測试用例数至少为6×3 = 48。
计算方法:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116607.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...