网站首页 > 技术教程 正文
概述
本文通过一个实例演示,循序渐进地介绍白盒测试之逻辑覆盖准则。
首先,我们要知道白盒测试关注的目标是什么,从测试的表现形式来看,白盒测试是面向源代码的(或源代码的其他表现形式如程序流程图),从测试的实际效用来看,白盒测试是面向程序逻辑流的,它描述程序代码执行的程度和程序逻辑结构覆盖的程度(也就是我们通常所说的覆盖率)。
其次,我们要知道什么时候开始做白盒测试,通常程序开发人员在正式编码之前需要先设计程序逻辑,那么在程序逻辑设计阶段,白盒测试开发人员就需要介入了,他并不是去关心程序如何实现逻辑结构,而是要关心程序实现的逻辑是什么,并需要和程序开发人员一同梳理出这些逻辑。
下面正式进入这个实例
先把我们需要测试的逻辑结构图画出来,如下
语句覆盖准则
这个准则比较简单,它规定测试需要保证将程序中的每条语句至少执行一次,该条准则的价值在于发现代码中的冗余设计,以帮助开发人员减少无用的代码,从而保持代码的简洁。
对于该实例,满足该准则的测试用例可以是:m=2,n=0,x=3。非常简单
判定覆盖准则
这个准则测试“判定”为TRUE 和FALSE ,它规定每个判定都必须有“是”和“否”的结果,并且每条语句都至少被执行一次,那么它的价值在于以判断为审查点,来描述判定为TRUE 或FALSE 后的程序执行结果是逻辑结构设计所期望的,不能产生程序判断为TRUE时执行了逻辑结构设计中定义的判断为FALSE后输出的结果。不用解释,它的覆盖强度显而易见是大于语句覆盖准则的。
对于该实例,满足该准则的测试用例可以是:
用例设计 | 路径覆盖 |
x=3,m=3,n=0 | acd |
x=1,m=2,n=1 | abe |
条件覆盖准则
因为并不是所有的判定都是单一的条件,恰恰相反,在大多数情况下,我们遇到的判定是复合条件,也就是由逻辑运算符“与、或和非”连接而成的逻辑表达式,那么判定覆盖并不能测试逻辑表达式的结构问题,比如,在该实例中,以上测试用例就不能发现“x>1写成了x<1的错误“。为了能测试该错误,于是产生了条件覆盖准则。
条件覆盖准则,它规定一个判断中的每个条件的所有可能的结果至少执行一次,同时规定对程序或子程序的每一个入口点都至少调用一次。
对于该实例,只有一个入口点,即图示中的a标记点。以下是满足该准则的测试用例
用例设计 | 覆盖的路径 |
x=4,m=2,n=0 | ace |
x=1,m=1,n=1 | adb |
判定/条件覆盖准则
条件覆盖准则并不总是能满足判定覆盖,如测试判断条件IF(A&&B), 测试用例设计为 A 为TRUE ,B 为FALSE;A 为FALSE,B为TRUE,它是满足条件覆盖准则的,但是因为这不能使IF 语句中的THEN被执行到,所以并不满足判断覆盖准则,于是判定/条件覆盖准则产生了。
该准则规定一个判断中的每个条件的所有可能的结果至少执行一次,将每个判断的所有可能结果至少执行一次,将每个入口点都至少调用一次。
多重条件覆盖准则
虽然判定/条件覆盖准则是既测试了判断又测试了条件,但是不一定就总能发现逻辑表达式的所有错误,因为,我们知道如果“与”表达式中有个条件为“假”,那么就无需计算该表达式的后续条件;如果“或”表达式中有个条件为“真”,那么后续条件也无需计算,也就是说表达式某些条件的结果可能会屏蔽掉或阻碍掉其他条件的判断,以上测试就不能发现“x>1写成了x>0的错误”,于是产生了多重条件覆盖准则。
该准则规定将判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。
应用该准则设计用例,我们首先需要列出所有的条件组合,对于该实例,如下
编号 | 条件组合 |
1 | m>1,n=0 |
2 | m>1,n<>0 |
3 | m<=1,n=0 |
4 | m<=1,n<>0 |
5 | m=2,x>1 |
6 | m=2,x<=1 |
7 | m<>2,x>1 |
8 | m<>2,x<=1 |
然后设计测试用例覆盖所有的条件组合,如下
用例设计 | 覆盖的条件组合 |
m=2,n=0,x=4 | 覆盖组合1,5 |
x=1,m=2,n=1 | 覆盖组合2,6 |
m=1,n=0,x=2 | 覆盖组合3,7 |
m=1,n=1,x=1 | 覆盖组合4,8 |
至此,所有的逻辑覆盖准则已经介绍完了。他们对逻辑结构覆盖强度依次增强,表现为语句覆盖<判定覆盖<条件覆盖<判断/条件覆盖<多重条件覆盖。
- 上一篇: 白盒测试有哪些方法?
- 下一篇: 黑盒测试和白盒测试方法对比
猜你喜欢
- 2024-12-05 白盒密码技术
- 2024-12-05 实践单元测试与白盒测试很容易——基于C语言实现单元测试框架
- 2024-12-05 黑盒、白盒、灰盒,如何选择合适的模糊测试工具?
- 2024-12-05 信号白盒自动化测试技术基础:50Ω同轴线探头与标配探头测试对比
- 2024-12-05 黑盒测试、白盒测试、灰盒测试之间的异同点
- 2024-12-05 安全测试前置实践1-白盒&黑盒扫描
- 2024-12-05 硬件测试全景图
- 2024-12-05 白盒测试用例之静态结构分析法
- 2024-12-05 来了解一下白盒测试,黑盒测试,灰盒测试吧!
- 2024-12-05 黑盒测试和白盒测试方法对比
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)