IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 软件测试基础理论3-测试用例设计方法(下) -> 正文阅读

[开发测试]软件测试基础理论3-测试用例设计方法(下)

白盒测试方法

1.语句覆盖

设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。 一个判定往往代表着程序的一个分支,所以判定覆盖也被称为分支覆盖。

a=2,b=1 ,c=6可覆盖判断M的Y分支和判断N的Y分支;

a=-2,b=-1 ,c=-3可覆盖判断M的N分支和判断N的N分支 。 这两组测试用例可覆盖所有判定的真假分支。

img

a=1,b=1 ,c=-3 可覆盖判断M的Y分支和判断N的N分支 ;

a=1,b=-2 ,c=3可覆盖判断M的N分支和判断N的Y分支 ; 同样的这两组测试用例也可覆盖所有判定的真假分支。

优点

判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

缺点

往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。

2.判定覆盖

设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。 一个判定往往代表着程序的一个分支,所以判定覆盖也被称为分支覆盖。

a=2,b=1 ,c=6可覆盖判断M的Y分支和判断N的Y分支;

a=-2,b=-1 ,c=-3可覆盖判断M的N分支和判断N的N分支 。 这两组测试用例可覆盖所有判定的真假分支。

img

a=1,b=1 ,c=-3 可覆盖判断M的Y分支和判断N的N分支 ;

a=1,b=-2 ,c=3可覆盖判断M的N分支和判断N的Y分支 ; 同样的这两组测试用例也可覆盖所有判定的真假分支。

优点

判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

缺点

往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。

3.条件覆盖

设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。

判断M表达式: 设条件 a>0 取真 记为 T1 取假 记为 F1

条件 b>0 取真 记为 T2 取假 记为 F2

判断N表达式: 设条件 a>1 取真 记为 T3 取假 记为 F3

条件 c>1 取真 记为 T4 取假 记为 F4

img

它覆盖了判定M的N分支和判断N的Y分支。

测试用例覆盖条件具体取值条件
a=2,b=-1,c=-2T1, F2, T3, F4a>0,b<=0,a>1,c<=1
a=-1,b=2,c=3F1, T2, F3, T4a<=0,b>0,a<=1,c>1

我们用条件覆盖设计的思想就是让测试用例能覆盖 T1、T2、T3、T4、F1、F2、F3、F4

优点

增加了对条件判定情况的测试,增加了测试路径。

缺点

条件覆盖不一定包含判定覆盖。例如,我们刚才设计的用例就没有覆盖判断M的Y分支和判断N的N分支。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

4.判定条件覆盖

判定-条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。

测试用例取值条件具体取值条件判定条件通过路径
输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4a>0,b>0, a>1,c>1M=.T.N=.T.P1(1-2-4)
输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4a<=0, b<=0, a<=1, c<=1M=.F.N=.F.P4(1-3-5)

按照判定-条件覆盖的要求,我们设计的测试用例要满足如下条件:

1.所有条件可能至少执行一次取值;

2.所有判断的可能结果至少执行一次。

测试用例覆盖条件覆盖判断
a=2,b=1,c=6T1, T2,T3, T4M的Y分支和N的Y分支
a=-1,b=-2,c=-3F1, F2, F3, F4M的N分支和N的N分支
img

要满足T1、T2、 T3 、T4 F1、 F2 、F3、F4

优点

能同时满足判定、条件两种覆盖标准。

缺点

判定/条件覆盖准则的缺点是未考虑条件的组合情况。

5.条件组合覆盖

设计足够的测试用例,使得程序中每个判断的所有可能的条件取值组合都至少出现一次。

它与条件覆盖的差别是它不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次。

按照条件组合覆盖的基本思想,对于前面的例子,我们把每个判断中的所有条件进行组合,设计组合条件如表所示,而我们设计的测试用例就要包括所有的组合条件。

组合编号覆盖条件取值判定条件取值判定-条件组合
1T1,T2M=.T.a>0,b>0,M取真
2T1,F2M=.F.a>0,b<=0,M取假
3F1,T2M=.F.a<=0,b>0,M取假
4F1,F2M=.F.a<=0,b<=0,M取假
5T3,T4N=.T.a>1,c>1,N取真
6T3,F4N=.T.a>1,c<=1,N取真
7F3,T4N=.T.a<=1,c>1,N取真
8F3,F4N=.F.a<=1,c<=1,N取假

img

测试用例覆盖条件覆盖判断覆盖组合
a=2,b=1,c=6T1, T2,T3, T4M取Y分支,Q取Y分支1,5
a=2,b= -1,c= -2T1, F2, T3, F4M取N分支,Q取Y分支2,6
a=-1,b=2,c=3F1, T2, F3, T4M取N分支,Q取Y分支3,7
a= -1,b= -2,c= -3F1, F2, F3, F4M取N分支,Q取N分支4,8

要满足1、2、3、4、5、6、7、8条件组合

测试用例覆盖条件覆盖路径覆盖组合
输入:a=2,b=1,c=6输出:a=2,b=1,c=5T1,T2,T3,T4P1(1-2-4)1,5
输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-2T1,F2,T3,F4P3(1-3-4)2,6
输入:a=-1,b=2,c=3 输出:a=-1,b=2,c=6F1,T2,F3,T4P3(1-3-4)3,7
输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5F1,F2,F3,F4P4(1-3-5)4,8
img

覆盖了所有组合,但覆盖路径有限,1-2-5 没被覆盖

优点

条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。

缺点

线性地增加了测试用例的数量。

6.路径覆盖

设计所有的测试用例,来覆盖程序中的所有可能的执行路径。

测试用例覆盖路径覆盖条件覆盖组合
输入:a=2,b=1,c=6输出:a=2,b=1,c=5P1(1-2-4)T1,T2,T3,T41,5
输入:a=1,b=1,c=-3输出:a=1,b=1,c=-2P2(1-2-5)T1,T2,F3,F41,8
输入:a=2,b=-1,c=-2输出:a=2,b=-1,c=-2P3(1-3-4)T1,F2,T3,F42,6
输入:a=-1,b=2,c=3 输出:a=-1,b=2,c=6P3(1-3-4)F1,T2,F3,T43,7
输入:a=-1,b=-2,c=-3输出:a=-1,b=-2,c=-5P4(1-3-5)F1,F2,F3,F44,8
img
测试用例覆盖组合覆盖路径
a=2,b=1,c=61,51-2-4
a=1,b=1,c=-31,81-2-5
a=-1,b=2,c=34,71-3-4
a=-1,b=-2,c=-34,81-3-5

优点

这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。

缺点

需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 00:03:26  更:2021-09-11 00:03:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 3:30:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码