【白盒测试】逻辑覆盖和路径测试的设计方法

这篇具有很好参考价值的文章主要介绍了【白盒测试】逻辑覆盖和路径测试的设计方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

 白盒测试主要是检查程序的内部结构、逻辑、循环和路径。白盒测试的常用用例设计方法有逻辑覆盖和基本路径测试。

根据覆盖测试的目标不同,逻辑覆盖又可分为语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖及路径覆盖。

1. 一个程序模块的例子

【白盒测试】逻辑覆盖和路径测试的设计方法,服务器,测试工具,selenium,功能测试,单元测试,jmeter,测试用例 

图1 一个程序模块的例图

从图中可知,该程序模块有4条不同的路径、4个可执行语句。这4条路径可分别表示为:

L1(a→c→e)简化为ace;

L2(a→b→d)简化为abd;

L3(a→b→e)简化为abe;

L4(a→c→d)简化为acd;

4条路径应该满足的逻辑表达式分别为:

记M={(A>1)and(B=0)},N={(A=2)or(X>1)}

L1(a→c→e)= M and N

L2(a→b→d)= /M and /N

L3(a→b→e)= /M and N

L4(a→c→d)= M and /N

其中,“/M”表示M的反,“/N”表示N的反,或者将4条路径应该满足的逻辑表达式写为:

L1(a→c→e)= {(A>1)and(B=0)} and {(A=2)or(X/A>1)} ;

L2(a→b→d)= / {(A>1)and(B=0)} and / {(A=2)or(X>1)} ;

L3(a→b→e)=/ {(A>1)and(B=0)} and {(A=2)or(X>1)} ;

L4(a→c→d)= {(A>1)and(B=0)} and / {(A=2)or(X/A>1)};

其中,由符号“and”连接起来的语句是为了遍历这条路径各个输入变量应取值的范围,而由“or”划分了几组可选的取值。根据上面导出的逻辑表达式,就可以用来设计测试用例。

2. 语句覆盖

语句覆盖就是设计若干个测试用例,运行所测程序,使得每一条可执行语句至少执行一次。对上面的例子,所有的可执行语句都在路径L1上,所以选择路径L1来设计测试用例,就要覆盖所有的可执行语句。

测试用例设计的格式如下:

[输入的(A,B,X),输出的(A,B,X)]为覆盖路径:L1(a→c→e)= M and N,{(A>1)and(B=0)} and {(A=2)or(X/A>1)}。可设计出满足语句覆盖的测试用例是:

[(2,0,4),(2,0,3)],覆盖ace[L1]。

从每个执行语句都得到执行这一点来看,语句覆盖的方法似乎能能够比较全面地检验每个可执行语句,但实际上并非如此。

语句覆盖的不足之处是:假如该程序段中的两个逻辑运算有问题,例如,第一个判断中的逻辑运算符“&&”写成了“||”,或者第二个判断中的逻辑运算符“||”错写成了“&&”,利用上面的测试用例,仍然可覆盖所有4个可执行语句,这说明虽然做到了语句覆盖测试,但可能发现不了判断时逻辑运算中出现的错误。语句覆盖是最弱的逻辑覆盖准则。

3. 判断覆盖

判断覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的取TRUE分支和取FALSE分支至少经历一次。判断覆盖又称为分支覆盖。

根据定义,可分别选择路径L1和L2或者路径L3和L4设计测试用例。

如果选择路径L1和L2,则可得到满足要求的测试用例:

[(2,0,4),(2,0,3)],覆盖ace[L1]

[(1,1,1),(1,2,1)],覆盖abd[L2]

如果选择路径L3和L4,则可设计另一组测试用例:

[(2,1,1),(2,1,2)],覆盖abe[L3]

[(3,0,3),(3,0,1)],覆盖acd[L4]

可见,测试用例的选择不唯一。

判断覆盖的不足之处是:假如第二个判断中的条件X>1被错写成了X<1,利用上面的两组测试用例仍能得到同样的结果。

 文章来源地址https://www.toymoban.com/news/detail-816057.html

4. 条件覆盖

条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。因此,首先要对所有的条件加以标记。

对第一个判断:

  • 条件A>1取TRUE时为T1,取FALSE时为F1;
  • 条件B=0取TRUE时为T2,取FALSE时为F2;

对第二个判断:

  • 条件A=2取TRUE时为T3,取FALSE时为F3;
  • 条件X>1取TRUE时为T4,取FALSE时为F4。

根据这8个条件取值,可分别设计如下两组测试用例,如表1和表2所列。

表1 第一组

测试用例

通过路径

条件取值

覆盖分支

[(1,0,3),(1,0,4)]

abe(L3)

F1,T2,F3,T4

b,e

[(2,1,1),(2,1,2)]

abe(L3)

T1,F2,T3,F4

b,e

表2 第二组

测试用例

通过路径

条件取值

覆盖分支

[(2,0,4),(2,0,3)]

ace(L1)

T1,T2,T3,T4

c,e

[(1,0,1),(1,0,1)]

abd(L2)

F1,T2,F3,F4

b,d

[(2,1,1),(2,1,2)]

abe(L3)

T1,F2,T3,,F4

b,e

 

由表1和表2可以看出,两组测试用例都满足了条件覆盖,即覆盖了所有的体哦阿健取值。条件覆盖的不足之处是:第一组测试用例不满足判断(分支)覆盖的要求。

5. 判断-条件覆盖

判断-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次。也就是说,要求各个判断的所有可能的条件取值组合至少执行一次。

根据判断-条件覆盖的定义,只需设计下面两个测试用例来覆盖例子的8个条件取值以及4个判断分支,如表3所列。

表3 判断分支列表

测试用例

通过路径

条件取值

覆盖分支

[(2,0,4),(2,0,3)]

ace(L1)

T1,T2,T3,T4

c,e

[(2,1,1),(2,1,2)]

abd(L2)

F1,F2,F3,F4

b,d

 

判断-条件覆盖的不足之处是:从表面上看来,判断-条件覆盖测试了所有条件的取值,但实际上并非如此,而是某些条件掩盖了另一些条件(由于多重条件判定),例如,对条件表达式(A>1)AND(B=0)来说,若(A>1)的测试结果为FALSE,可以立即确定表达式的结果为FALSE,这时往往就不再测试(B=0)的取值了,因此,条件(B=0)就没有被检查。同样,对条件表达式(A=2)OR(X>1)来说,若(A=2)的测试结果为TRUE,就立即确定表达式的结果为TRUE,这时,条件(X>1)就没有被检查。

因此,采用判断-条件覆盖测试,逻辑表达式中的错误不一定能够检查的出来。

6. 条件组合覆盖

条件组合覆盖就是设计足够的测试用例,运行所测程序,使得每个判断的所有可能的条件取值组合至少执行一次。

针对上面的例子,先对各个判断的条件取值组合加以标记,如表4所列。

表4 判断条件取值组合表

组合编号

条件取值的组合

标记

说明

A>1,B=0

T1,T2

属第一个判断的取TRUE分支

A>1,B!=0

T1,F2

属第一个判断的取FLASE分支

A<=1,B=0

F1,T2

属第一个判断的取FLASE分支

A<=1,B!=0

F1,F2

属第一个判断的取FLASE分支

A=2,X>1

T3,T4

属第二个判断的取TRUE分支

A=2,X<=1

T3,F4

属第二个判断的取TRUE分支

A!=2,X>A

F3,T4

属第二个判断的取TRUE分支

A!=2,X<=1

F3,F4

属第二个判断的取FLASE分支

对每个判断,要求所有可能的条件取值的组合都必须取到。每个判断各有两个条件,所以各有4个条件取值的组合。

注意:这里没有要求第一个判断的4个组合再与第二个判断的4个组合进行组合成16个组合。

设计4个测试用例,就可覆盖上面的8种条件组合,如表5所列。

表5 4个测试取值组合列表

测试用例

通过路径

覆盖条件

覆盖组合号

[(2,0,4),(2,0,3)]

ace(L1)

T1,T2,T3,T4

①⑤

[(2,1,1),(2,1,2)]

abe(L3)

T1,F2,T3,F4

②⑥

[(1,0,3),(1,0,4)]

abe(L3)

F1,T2,F3,T4

③⑦

[(1,1,1),(1,1,1)]

abd(L2)

F1,F2,F3,F4

④⑧

 

这些测试用例覆盖了所有条件的可能取值的组合,覆盖了所有判断的可取分支。条件组合覆盖的不足之处:没有覆盖路径L4,这样的测试还不完全。

7. 路径覆盖

路径覆盖就是设计足够的测试用例,覆盖程序中所有可能的路径。可设计下面的4个测试用例,覆盖全部4条路径。表6所列是对应实例程序的路径覆盖测试用例。

表6 设计4个测试用例覆盖全部4条路径

测试用例

通过路径

覆盖条件

覆盖组合号

[(2,0,4),(2,0,3)]

ace(L1)

T1,T2,T3,T4

①⑤

[(1,1,1),(1,1,1)]

abd(L2)

F1,F2,F3,F4

④⑧

[(1,1,2),(1,1,3)]

abe(L3)

F1,F2,F3,T4

④⑦

[(3,0,3),(3,0,1)]

acd(L4)

T1,T2,F3,F4

①⑧

路径覆盖的不足之处,没有全部覆盖判断的条件取值的组合,如②③⑥。

8. 测试用例的组合和优化

对该例子,采用逻辑覆盖方法中的任何一种都不能满足所有需求,如果每个方法都采用,又有测试用例的重复。如何用最少的测试用例满足最多的需求呢?在设计中,这是一个值得考虑和解决的问题。

对于本例,我们采用条件组合覆盖和路径覆盖两种方法设计测试用例,并进行优化,可得到如表7所列的测试用例。

表7 采用条件组合覆盖和路径覆盖设计测试用例表

测试用例

通过路径

覆盖条件

覆盖组合号

[(2,0,4),(2,0,3)]

ace(L1)

T1,T2,T3,T4

①⑤

[(1,1,1),(1,1,1)]

abd(L2)

F1,F2,F3,F4

④⑧

[(1,1,2),(1,1,3)]

abe(L3)

F1,F2,F3,T4

④⑦

[(3,0,3),(3,0,1)]

acd(L4)

T1,T2,F3,F4

①⑧

[(2,0,4),(2,0,3)]

ace(L1)

T1,T2,T3,T4

①⑤

[(2,1,1),(2,1,2)]

abe(L3)

T1,F2,T3,F4

②⑥

[(1,0,3),(1,0,4)]

abe(L3)

F1,T2,F3,T4

③⑦

[(1,1,1),(1,1,1)]

abd(L2)

F1,F2,F3,F4

④⑧

采用上面的8个测试用例,可满足所有逻辑覆盖测试。 

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 【白盒测试】逻辑覆盖和路径测试的设计方法,服务器,测试工具,selenium,功能测试,单元测试,jmeter,测试用例

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

【白盒测试】逻辑覆盖和路径测试的设计方法,服务器,测试工具,selenium,功能测试,单元测试,jmeter,测试用例

 

到了这里,关于【白盒测试】逻辑覆盖和路径测试的设计方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 白盒测试——NextDate函数测试(基本路径覆盖法)

    白盒测试:NextDate的基本路径覆盖法以及测试用例设计 程序有三个输入变量 month 、 day 、 year ( month 、 day 和 year 均为整数值,并且满足: 1≤month≤12 、 1≤day≤31 、 1900≤ year ≤2050 。),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的

    2024年02月07日
    浏览(33)
  • [软件测试] 03 白盒 基本路径测试 习题

    软件测试期末复习系列 课件知识点整合 : 软件测试基础 白盒测试 黑盒测试 PTA习题汇总 : 软件测试基础 白盒测试-逻辑覆盖测试 白盒测试-基本路径测试 白盒测试-静态测试 黑盒测试-等价类划分 黑盒测试-边界值测试 黑盒测试-场景法 提示 : 篇幅较长,可以使用 Ctrl+F ,在

    2024年02月04日
    浏览(40)
  • 【软件测试】路径覆盖

    题目要求: a)       流程图如下: b)    Consider test cases ti = (n = 3) and t2 = ( n = 5). Although these tour the same prime paths in printPrime(), they don\\\'t necessarily find the same faults. Design a simple fault that t2 would be more likely to discover than t1 would Answer:如果将MAXPRIMES的值设为4那么n=5时可能会出现数组

    2024年01月16日
    浏览(37)
  • 白盒测试方法

    如果所有软件错误的根源都可以追溯到某个唯一原因,那么问题就简单了。然而,事实上一个bug 常常是由多个因素共同导致的,如下图所示。 黑盒查不到的问题 假设此时开发工作已结束,程序送交到测试组,没有人知道代码中有一个潜在的被 0 除的错误。若测试组采用的测

    2024年02月07日
    浏览(35)
  • 【单元测试】Junit 4教程(一)--白盒测试方法

    目录 1.0 流程图标识 1.1 语句覆盖法(C0标准) 1.2 判定/分支覆盖法(C1标准) 1.3 条件覆盖法(C2标准) 1.4 判定条件覆盖法(C1+C2标准) 1.5 条件组合覆盖法(C3标准) 1.6 路径覆盖 1.7 基本路径覆盖法  结语 ① 目标 ​ 程序中的每个可执行语句 至少被执行一次 后面如未说明那

    2024年02月10日
    浏览(72)
  • 软件质量保证与测试技术实验:白盒测试用例设计

    目录 前言 一、白盒测试 二、实验目的 三、实验内容 四、实验步骤 五、实验过程 题目一 1、程序流程图 2、测试用例​​​​​​​ 3、测试代码 4、测试结果 题目二 1、控制流图 2、独立路径集合 3、测试用例  4、测试代码  5、测试结果 总结 白盒测试是一种基于程序内部

    2024年02月04日
    浏览(50)
  • 查询服务器tns文件路径,oracle数据库tns配置方法详解

    Oracle中TNS的完整定义:transparence Network Substrate透明网络底层, 监听服务是它重要的一部分,不是全部,不要把TNS当作只是监听器。 上图中的CGDB和STDCG就是对应的TNS,HOST是指向数据库服务器的IP,当然局域网内用计算机名称也是可以的。通过客户端Net Manager创建一个连接到数据

    2024年02月09日
    浏览(62)
  • 【白盒测试】单元测试的理论基础及用例设计技术(6种)详解

    目录 🌞前言 🏞️1. 单元测试的理论基础 🌊1.1 单元测试是什么 🌊1.2 单元测试的好处 🌊1.3 单元测试的要求 🌊1.4 测试框架-Junit4的介绍 🌊1.5 单元测试为什么要mock 🏞️2. 单元测试用例设计技术(6种) 🌊2.1 语句覆盖 🌊2.2 判定覆盖【也称分支覆盖】 🌊2.3 条件覆盖

    2024年04月27日
    浏览(36)
  • 白盒测试(单元测试JUnit使用断言assertThat中startsWith、endsWith方法)

    目录 一、背景知识 二、assertThat-字符串相关匹配符 1、startsWith 2、endsWith 三、代码

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包