当前课程知识点:软件工程与软件自动化 > 第五章 软件自动化技术 > 5.4 测试自动化 > 白盒测试工具VU的示例演示片段(版权属原作者)
这一节我们讲述白盒测试
白盒测试应该是在完成了代码编写
而且进行了功能测试之后来进行的
这个时候我们可以检查一下,还有哪些逻辑目标没有覆盖到
对没有覆盖到的逻辑目标重新设计测试用例
使它能够覆盖
这样就可以达到很高的测试完整性
也就是说我们测试的质量是比较高的
发现错误的可能性就会更大
VU支持的白盒测试有这么多
首先是语句覆盖,然后是条件覆盖、分支覆盖和路径覆盖
VU并不是简单地统计出这些数据出来
而是会提供一种很好用的工具来完成这些覆盖
首先我们看一下语句覆盖,第一个表示已覆盖的
后面表示总数,这两个是未覆盖的
然后是条件覆盖,还有一个未覆盖的,是这个
然后分支覆盖,还有两个分支未覆盖的
路径覆盖有三条路径未覆盖,我们看一下
现在我们来看一下怎么样去设计测试用例来完成白盒覆盖
现在我们看到的这个例子是教科书当中
讲述白盒测试的最经典的一个例子
它代码非常简单,却是一个很有意思的例子
我们来看一下VU是怎样完成这些覆盖的
首先就是选中一个逻辑目标
我们把这些没有覆盖的分支、路径、语句、条件叫做逻辑目标
选择的时候,一般先覆盖这个语句
然后覆盖条件,然后覆盖分支,最后才覆盖路径
我们选中一个语句,打开这个测试用例设计器
我们可以看到,有点像测试用例编辑器的这么个界面
这里是一个近似测试用例,什么意思呢?
就是说这个测试用例是VU从现有的测试用例当中
选择出来的一个跟这个覆盖预期的逻辑目标最接近的一个测试用例
对它进行简单地修改就可以完成这个覆盖
那么怎么修改呢,这里有一个修改提示
根据这个修改提示进行修改就可以了
首先看一下这个修改提示,它是A>1和B=0
B本来就等于0,A>1改为3,点击新建用例,这样就行了
重新编译测试
我们看到这个语句已经覆盖了
在设计一个测试用例之后,应该重新运行测试
这样我们再来看一下,还有哪些没有覆盖
然后再继续设计测试用例
这个条件就比较复杂了,我们解释一下
前面这个正常字体显示的叫已满足条件
也就是说这个测试用例已经满足了这个条件
我们在对它进行修改的时候,不可以破坏已满足条件
如果是跟它冲突的条件是不行的
下面粗体字显示的叫待满足条件
它是整个修改的核心
我们要依据这个待满足条件进行修改
这个待满足条件,它有两个条件式
它们之间的关系是“或”的关系
也就是说,选择任何一个都是可行的
我们选择第一个,它跟已满足条件并不冲突
它是合法的,等于2,新建,也是可以的
我们先把它删掉,然后讲一下另外一个条件式
选择右边这个条件式,它跟已满足条件没有任何关系
但是下面显示了一行字跟这个变量有关系
这一行字叫做依赖关系提示
也就是说这个变量可能会被别的代码修改什么的
我们要看一下这个代码,
点击这个代码按钮就可以看到相关的代码,非常明显地我们看到
这个变量被重新赋值了,它赋值是怎样赋值的呢?
是除以这个A,A的值等于3
这样的话,我们为了在这个地方它的值达到大于1的话
那么在这个地方它就必须是大于或者等于6
这样除出来的结果才能够大于1
也就是说起码要等于2
我们只能是把它改为6或者是6以上的数
新建
可以看到覆盖完了,然后我们看一下
其他都没有了,就剩下一个路径没有覆盖
我们选择它,这个待满足条件跟已满足条件是冲突的
那这个是不冲突的,而且它也没有依赖关系需要考虑
就随便地把它填为一个大于1的数就可以了
有些时候,所有的待满足条件都是不合法的
它跟已满足条件是冲突的
在这种情况下,我们就可以断定这个逻辑目标是不可以覆盖
如果是语句的话,这个语句肯定是不可以覆盖的
如果是分支也可以肯定这个分支是不可以覆盖的
如果分支不能覆盖的话,应该是删掉它
后边再讲一下
新建用例,这就完成了所有的逻辑覆盖
这一节先讲到这里
下一节继续讲述白盒测试
-1.1 软件工程的前生今世
--开篇阅读
--授课视频
-第一章 软件工程基础--1.1 软件工程的前生今世
-1.2 万变不离其宗
--授课视频1/3
--授课视频2/3
--授课视频3/3
-第一章 软件工程基础--1.2 万变不离其宗
-1.3 唯一不变的是变化
--授课视频1/3
--授课视频2/3
--授课视频3/3
--外部链接
-第一章 软件工程基础--1.3 唯一不变的是变化
-1.4 亡羊补牢为时不晚
--授课视频1/2
--授课视频2/2
-第一章 软件工程基础--1.4 亡羊补牢为时不晚
-扩展阅读与话题讨论
--扩展阅读
--话题讨论
-2.1 方法论来源于恐惧
--授课视频
-第二章 敏捷开发--2.1 方法论来源于恐惧
-2.2 敏捷是什么
--授课视频
-第二章 敏捷开发--2.2 敏捷是什么
-2.3 典型敏捷开发方法
--XP敏捷开发方法
-第二章 敏捷开发--2.3 典型敏捷开发方法
-2.4 敏捷不是万能药
--授课视频
-第二章 敏捷开发--2.4 敏捷不是万能药
-专家谈敏捷
-扩展阅读与话题讨论
--外部链接
--话题讨论
-3.1 面向对象核心概念和基本特性
-第三章 OO与UML--3.1 面向对象核心概念和基本特性
-3.2 面向对象设计基本原则
-第三章 OO与UML--3.2 面向对象设计基本原则
-3.3 通用职责分配模式(GRASP)
--通用职责分配模式
-3.3 通用职责分配模式(GRASP)--作业
-3.4 从重构到模式
--模式和设计模式
-第三章 OO与UML--3.4 从重构到模式
-3.5 使用UML设计面向对象系统
--UML综述
-第三章 OO与UML--3.5 使用UML设计面向对象系统
-3.6 主要UML模型图绘制技巧
--UML用例图
--UML类图
-第三章 OO与UML--3.6 主要UML模型图绘制技巧
-扩展阅读与话题讨论
--设计模式有毒么?
--话题讨论
-4.1 案例简介
--书籍参考
--案例说明
-4.2 对象模型之一
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.2 对象模型之一
-4.3 对象模型之二
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.3 对象模型之二
-4.4 对象模型之交互
--授课视频
-第四章 对象模型分析--4.4 对象模型之交互
-扩展阅读与话题讨论
--图书推荐
--话题讨论
-5.1 软件自动化概述
--软件自动化概述
-第五章 软件自动化技术--5.1 软件自动化概述
-5.2 典型自动化方法和工具
-第五章 软件自动化技术--5.2 典型自动化方法和工具
-5.3 文档自动化
--文档自动化视频
-第五章 软件自动化技术--5.3 文档自动化
-5.4 测试自动化
--测试自动化视频
-第五章 软件自动化技术--5.4 测试自动化
-专家访谈
-扩展阅读与话题讨论
--话题讨论
-6.1 持续集成
-第六章 CI/CD与DevOps--6.1 持续集成
-6.2 持续交付和部署
-第六章 CI/CD与DevOps--6.2 持续交付和部署
-6.3 DevOps
-第六章 CI/CD与DevOps--6.3 DevOps
-专家访谈
-扩展阅读与话题讨论
--DevOps专题
--话题讨论
-7.1 质量和质量保证
--授课视频
-第七章 软件质量保证--7.1 质量和质量保证
-7.2 软件质量模型
--授课视频
-第七章 软件质量保证--7.2 软件质量模型
-7.3 SQA组织与职责
--授课视频
-第七章 软件质量保证--7.3 SQA组织与职责
-7.4 全面软件质量管理
--授课视频
-第七章 软件质量保证--7.4 全面软件质量管理
-专家访谈
--专家访谈
-扩展阅读与话题讨论
--外部链接
--话题讨论
-8.1 软件过程综述
--授课视频
-第八章 软件过程改进--8.1 软件过程综述
-8.2 软件过程改进
--授课视频
-第八章 软件过程改进--8.2 软件过程改进
-8.3 能力成熟度模型
--授课视频
-第八章 软件过程改进--8.3 能力成熟度模型
-8.4 过程改进标准框架
--授课视频
-第八章 软件过程改进--8.4 过程改进标准框架
-扩展阅读与话题讨论
--话题讨论
-9.1软件复用综述
--授课视频
-第九章 软件复用--9.1软件复用综述
-9.2 软件构件技术
--授课视频
-第九章 软件复用--9.2 软件构件技术
-9.3 软件复用实施
--授课视频
-第九章 软件复用--9.3 软件复用实施
-9.4 微服务架构
--授课视频
-第九章 软件复用--9.4 微服务架构
-扩展阅读与话题讨论
--微服务扩展
--话题讨论
-文档提交处--文档提交