网站建设营销型网站概念,怎样在谷歌做网站,房地产最新消息,建酒店网站白盒测试逻辑覆盖#xff08;语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖#xff09;
逻辑覆盖测试#xff1a;
语句覆盖#xff1a;每条语句至少执行一次判定覆盖#xff1a;每一判定的每个分支至少执行一次条件覆盖#xff1a;每一判定中的每个条件语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖
逻辑覆盖测试
语句覆盖每条语句至少执行一次判定覆盖每一判定的每个分支至少执行一次条件覆盖每一判定中的每个条件分别按真、假至少各执行一次判定/条件覆盖同时满足判定覆盖和条件覆盖的要求条件组合覆盖求出判定中所有条件的各种可能组合值每一可能的条件组合至少执行一次
注 上述逻辑覆盖测试的5种标准从上至下发现错误的能力由弱变强 表1 逻辑覆盖测试的5种标准
接下来详细介绍每一种覆盖的条件
一、语句覆盖 只需要遍历路径ace便将程序中的所有语句便都执行了一次。生成的用例及其遍历路径如下
A2B0X4 ace缺点语句覆盖是“最弱的覆盖”它难以发现程序中的错误。①程序中存在一条x的值未发生改变的路径abd没有测试。②它无法发现判定的错误比如第一个判定条件也许应该是“或”而不是“与”。③无法发现条件的错误比如第二个判断中的条件X1也许事实上应该是X0。
二、判定覆盖 只需要涵盖路径ace和abd或涵盖路径acd和abe就可以使得两个判定为“真”和为“假”的分支都执行一次。如果选择后一种情况生成的用例及其遍历的路径如下
A3B0X3 acd
A2B1X1 abe我们仅有50%的可能性遍历到X值未发生改变的路径即只有我们选择涵盖路径ace和abd的情况而不是涵盖路径acd和abe时。对应的测试用例如下
A2B0X2 ace
A3B1X1 abd缺点这两组测试用例都存在同一个问题当判定由多个条件组合构成时它未必能发现每个条件的错误。如果第二个判定把条件X1错误的写成了X1我们设计的测试用例仍然无法找出这个错误。
三、条件覆盖 第一个判断的所有条件的可能取值情况是A1或A≤1B0或B≠0。第二个判断的所有条件可能的取值情况为A2或A≠2X1或X≤1。生成的用例及其遍历的路径如下所示
A1B0X3 abe
A2B1X1 abe缺点条件覆盖并不一定总能覆盖全部分支。测试用例虽然满足了条件覆盖准则但是只涵盖了程序的路径abe。但是条件覆盖还是要比判定覆盖强一些因为条件覆盖可能会使判断中各个条件的结果都取“真”或着取“假”而判定覆盖却做不到这一点。
四、判定/条件覆盖
判定/条件覆盖
判定/条件覆盖既要考虑到单个判定中每个条件的可能情况A1或A≤1B0或B≠0A2或A≠2X1或X≤1也要考虑到每个判定的可能情况路径ace和abd或路径acd和abe。用例及其遍历的路径如下所示
A2B0X4 ace
A1B1X1 abd缺点条件覆盖和判定/条件覆盖不一定会发现逻辑表达式中的错误。尽管看上去所有条件的所有结果似乎都执行到了但由于有些条件会屏蔽掉后面的条件并不一定能全部执行得到。例如上述测试用例①满足了条件A2后就不再执行对条件X1的判断测试用例②中不满足条件A1后就不再执行对条件B0的判断。
五、条件组合覆盖 满足多重条件覆盖准则的测试用例必须覆盖以下8种组合 第一个判定的取值情况 第二个判定的取值情况
A1B0 5. A2X1A1B≠0 6. A2X≤1A≤1B0 7. A≠2X1A≤1B≠0 8. A≠2X≤1
生成的测试用例以及它们遍历的路径和覆盖的组合如下
A2B0X4 ace 覆盖组合15
A2B1X1 abe 覆盖组合26
A1B0X2 abe 覆盖组合37
A1B1X1 abd 覆盖组合48缺点多重条件覆盖不一定能覆盖到每条路径路径acd就被遗漏掉了。