如何在网站上做404页面,wordpress加载条,美食美客网站建设项目规划书,成都微信端网站建目录
3.1 逻辑覆盖法
3.1.1 语句覆盖
3.1.2 判定覆盖
3.1.3 条件覆盖
3.1.4 判定—条件覆盖
3.1.5 条件组合覆盖
3.1.6 实例#xff1a;三角形逻辑覆盖问题 白盒测试又称为透明盒测试、结构测试#xff0c;它基于程序内部结构进行测试#xff0c;而不是测试应用程序…目录
3.1 逻辑覆盖法
3.1.1 语句覆盖
3.1.2 判定覆盖
3.1.3 条件覆盖
3.1.4 判定—条件覆盖
3.1.5 条件组合覆盖
3.1.6 实例三角形逻辑覆盖问题 白盒测试又称为透明盒测试、结构测试它基于程序内部结构进行测试而不是测试应用程序的功能黑盒测试。因此测试人员需要了解程序内部逻辑结构从编程语言的角度设计测试用例。白盒测试可用于单元测试、集成测试和系统测试。
3.1 逻辑覆盖法
逻辑覆盖法是白盒测试最常用的测试方法它包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖5种。
3.1.1 语句覆盖
语句覆盖Statement Coverage又称行覆盖、段覆盖、基本块覆盖它是最常见的覆盖方式。
语句覆盖的目的是测试程序中的代码是否被执行它只测试代码中的执行语句这里的执行语句不包括头文件、注释、空行等。
语句覆盖在多分支的程序中只能覆盖某一条路径使得该路径中的每一个语句至少被执行一次但不会考虑各种分支组合情况。
1 IF x0 AND y0 //条件1
2 zz-(x-y)
3 IF x2 OR z0 //条件2
4 zz(xy)
该段程序的流程图如(a、b、c、d、e表示程序执行分支) 在语句覆盖测试用例中使程序中每个可执行语句至少被执行一次。根据程序流程图中标示的语句执行路径设计测试用例Test1x1 y-1 z2
执行上述测试用例程序运行路径为acd。可以看出程序中acd路径上的每个语句都能被执行但是语句覆盖对多分支的逻辑无法全面反映仅仅执行一次不能进行全面覆盖因此语句覆盖是弱覆盖方法。 语句覆盖虽然可以测试执行语句是否被执行到但却无法测试程序中存在的逻辑错误例如如果上述程序中的逻辑判断符号“AND”误写成了“OR”使用测试用例Test1同样可以覆盖acd路径上的全部执行语句但却无法发现错误。 3.1.2 判定覆盖
判定覆盖Decision Coverage又称为分支覆盖其原则是设计足够多的测试用例在测试过程中保证每个判定至少有一次为真值有一次为假值。
判定覆盖的作用是使真假分支均被执行虽然判定覆盖比语句覆盖测试能力强但仍然具有和语句覆盖一样的单一性。
以上面的流程图及其程序为例设计判定覆盖测试用例 这4个测试用例覆盖了acd、abd、ace、abe 4条路径使得每个判定语句的取值都满足了各有一次“真”与“假”。相比于语句覆盖判定覆盖的覆盖范围更广泛。
判定覆盖虽然保证了每个判定至少有一次为真值有一次为假值但是却没有考虑到程序内部的取值情况例如测试用例test4没有将x2作为条件进行判断仅仅判断了z0的条件。
判定覆盖语句一般是由多个逻辑条件组成的如果仅仅判断测试程序执行的最终结果而忽略每个条件的取值必然会遗漏部分测试路径因此判定覆盖也属于弱覆盖。
3.1.3 条件覆盖
条件覆盖Condition Coverage指的是设计足够多的测试用例使判定语句中的每个逻辑条件取真值与取假值至少出现一次例如对于判定语句IF(a1 OR c0)中存在a1、c0 2个逻辑条件设计条件覆盖测试用例时要保证a1、c0的“真”“假”值至少出现一次。
以上面的流程图及其程序为例设计条件覆盖测试用例在该程序中有2个判定语句每个判定语句有2个逻辑条件共有4个逻辑条件使用标识符标识各个逻辑条件取真值与取假值的情况 设计测试用例时要保证每种状态都至少出现一次。设计测试用例的原则是尽量以最少的测试用例达到最大的覆盖率则该段程序的条件覆盖测试用例如这里保证了每种状态都出现了一次但并没有列出所有的可能 3.1.4 判定—条件覆盖
判定-条件覆盖Condition/Decision Coverage要求设计足够多的测试用例使得判定语句中所有条件的可能取值至少出现一次同时所有判定语句的可能结果也至少出现一次。
表中的3个测试用例满足了所有条件可能取值至少出现一次以及所有判定语句可能结果也至少出现一次的要求。但依然没有列出所有的可能
相比于条件覆盖、判定覆盖判定-条件覆盖弥补了两者的不足之处但是由于判定-条件覆盖没有考虑判定语句与条件判断的组合情况其覆盖范围并没有比条件覆盖更全面判定-条件覆盖也没有覆盖acd路径因此判定-条件覆盖仍旧存在遗漏测试的情况。
3.1.5 条件组合覆盖
条件组合Multiple Condition Coverage指的是设计足够多的测试用例使判定语句中每个条件的所有可能至少出现一次并且每个判定语句本身的判定结果也至少出现一次它与判定-条件覆盖的差别是条件组合覆盖不是简单地要求每个条件都出现“真”与“假”两种结果而是要求让这些结果的所有可能组合都至少出现一次。
还是以上述的流程图及其程序为例该程序中共有4个条件x0、y0、x2、z0依然用S1、S2、S3、S4标记这4个条件成立用-S1、-S2、-S3、-S4标记这些条件不成立。由于这4个条件每个条件都有取“真”“假”两个值因此所有条件结果的组合有2^416种: 表中列出了4个条件所有结果的组合情况经过分析可以发现第2、6、8、13这4种情况是不存在的这几种情况要求x0不成立x2成立这2种结果相悖因此最终图中的所有条件组合情况有12种。根据这12种情况设计测试用例 表中有12个测试用例这12个测试用例覆盖了4个条件结果的所有组合与判定-条件覆盖相比条件组合覆盖包括了所有判定-条件覆盖因此它的覆盖范围更广。但是当程序中条件比较多时条件组合的数量会呈指数型增长组合情况非常多要设计的测试用例也会增加这样反而会使测试效率降低。
3.1.6 实例三角形逻辑覆盖问题
1 INT A B C //三角形的 3 条边
2 IF((ABC)(ACB)(BC)A) //是否满足三角形成立条件
3 IF((AB)(BC)) //等边三角形
4 等边三角形
5 ELSE IF((AB)||(BC)||(AC)) //等腰三角形
6 等腰三角形
7 ELSE //一般三角形
8 一般三角形
9 ELSE
10 不是三角形
11 END 如果使用判定覆盖使程序中每个判定语句至少有一次“真”值至少有一次“假”值根据图2和图3可设计4个测试用例