当前课程知识点:软件工程 >  第3章 单元测试 >  3.3 白盒测试方法 >  代码覆盖标准

返回《软件工程》慕课在线视频课程列表

代码覆盖标准在线视频

代码覆盖标准

下一节:基本路径测试

返回《软件工程》慕课在线视频列表

代码覆盖标准课程教案、知识点、字幕

白盒测试方法

使用代码覆盖率

作为测试的衡量指标

代码覆盖率描述的是

代码被测试的比例和程度

如果我们只是编写测试用例

进行测试

而不检查究竟哪些代码被测试过

哪些还没有测试过

就很容易形成测试的漏洞

通过代码覆盖率

我们可以知道

哪些代码没有被覆盖

然后再进一步地

补充更多的测试用例

代码覆盖通常包括语句覆盖

判定覆盖 条件覆盖

判定条件覆盖 条件组合覆盖

和路径覆盖

这六种类型

下面

我们结合一个简单的程序例子

来讲解一下这六种覆盖类型

右边是这个程序的流程图

它一共有5个节点

其中有两个判断节点

第一个

语句覆盖

它要求程序中每一个可执行语句

至少要被执行一次

看一下前面这个例子

如果我们选择a等于2

b等于1 c等于6

这样一个测试用例

三个可执行语句

2 4和5

都执行了一次

那么可以满足语句覆盖的要求

但是如果判断条件有问题

比如说

第一个条件判断中

与被错误地写成或

显然这个测试用例

是无法检查出来的

由于这种方法

仅仅针对程序中

显示存在的可执行语句进行测试

那么对于隐藏条件

和可能达到的隐式逻辑分支

是无法覆盖的

可以说语句覆盖

是最弱的逻辑覆盖准则

第二个

判定覆盖 也称分支覆盖

它要求程序中

每一个判断的取真和取假分支

至少经历一次

也就是判断的真假值都要被覆盖

还是前面这个例子

输入a等于2 b等于1 c等于6

这样一个测试用例可以同时覆盖

判断1和判断2两个取真的分支

输入a等于-2 b等于-1

c等于-3

这个测试用例同时覆盖了判断1

和判断2取假的分支

判定覆盖比语句覆盖要多

几乎一倍的测试路径

当然也具有更强的测试能力

但是如果第二个条件判断中

a等于1写成a小于1

还是无法检测出来

我们知道

大部分判定语句

是由多个逻辑条件组合而成的

如果仅仅是判断

整个判断的最终结果

而忽略每一个条件的取值情况

那么就会遗漏部分的测试路径

显然判定覆盖具有比语句覆盖

更强的测试能力

但仍然是比较弱的逻辑覆盖

第三 条件覆盖

它要求每个判断中

每一个条件的可能取值

至少要满足一次

对于这个例子

输入a等于2 b等于-1

c等于-2

这个测试用例覆盖了

a大于0 b小于等于0

a等于1 c小于等于1

四个条件

输入a等于-1 b等于2 c等于3

这个测试用例就覆盖了

a小于等于0 b大于0

a小于等于1 c大于1

这样四个条件

这两个测试用例

覆盖了两个判断的

所有条件的可能取值

需要说明的是

条件覆盖不一定包含判定覆盖

比如说

上面的测试用例

就没有覆盖判断1的取真分支

和判断2的取假分支

显然条件覆盖只能保证

每一个条件至少有一次为真

而没有考虑到整个判定的结果

第四 判定条件覆盖

它要求判断中

所有条件的可能取值

至少执行一次

而且所有判断的可能结果

也要至少执行一次

对于前面那个例子

输入a等于2 b等于1 c等于6

这个测试用例是覆盖了ab大于0

ac大于1

这样的四个条件

同时也覆盖了两个判断都为真

这样的结果

输入a等于-1 b等于-2

c等于-3

这个测试用例覆盖了

ab小于等于0

ac小于等于1 四个条件

同时覆盖了两个判断为假

这样的结果

显然判定条件覆盖

能够同时满足判定和条件

两种覆盖的标准

但是它还是有不足的

它没有考虑到

条件的各种组合的情况

第五 条件组合覆盖

它是在判定条件覆盖的基础上

增加了每一个条件的

所有可能取值的组合情况

对于示例程序的判断1来说

这里是四种条件的组合情况

这里是对应的判断1的结果取值

最后是判断1满足

判定条件组合的四种取值情况

同样也可以得到判断2的结果

根据前面的分析

我们选择了

图上所示的四个测试用例

它们可以满足每个条件

所有可能的组合

而且覆盖了

每一个判断的所有结果

但是我们在进一步看一下

这些测试用例所覆盖的路径

显然1 2 5这个路径

是没有被覆盖的

第六 路径覆盖

它要求覆盖程序中

所有可能的执行路径

我们把前面条件组合覆盖的

第二个测试用例进行了修改

得到了上面的这样的结果

这个测试用例的结果

覆盖了所有的执行路径

但是我们再进一步地看

它没有覆盖

每一个条件的所有组合情况

为了在覆盖所有执行路径的同时

还能够覆盖所有条件组合的情况

我们又补充了一个测试用例

最终得到了上面显示的

五个测试用例的结果

测试覆盖率

是对测试完全程度的一种评价

但是达到百分之百

只是一个理想的情况

而且即使达到了百分之百

也很难说明测试是完全彻底的

测试覆盖率只能代表

测试过哪些代码

并不能代表测试的好坏

测试覆盖率过低

说明测试做得不够

反过来并不成立

我们不能盲目地追求高的覆盖率

要结合整体要求

和测试成本来决定

软件工程课程列表:

第1章 初识软件工程

-1.1 软件无处不在

--讲课视频

-1.2 软件的本质特性

--讲授视频

-1.3 软件工程的产生与发展

--讲授视频

-1.4 软件工程的基本概念

--讲授视频

-1.5 软件质量实现

--讲授视频

-1.6 业界人士谈软件工程

--海芯科技创始人施侃乐访谈

-测验题--作业

-讨论题

--讨论题

-作业题

--第一张 作业题

第2章 编写高质量代码

-2.1 编程过程与规范

--讲课视频

-2.2 良好的编程实践

--讲课视频

-2.3 Python集成开发环境

--讲课视频

-2.4 代码静态检查

--讲课视频

-2.5 代码性能分析

--讲课视频

-2.6 结对编程实践

--讲课视频

-2.7 刘贺谈软件工程

--讲课视频

--讨论

-测验题--作业

-作业题

--第二章 作业题

第3章 单元测试

-3.1 单元测试概述

--讲课视频

-3.2 黑盒测试方法

--黑盒测试方法

-3.3 白盒测试方法

--基本概念

--代码覆盖标准

--基本路径测试

-3.4 单元测试工具

--单元测试工具

--html

-测验题--作业

-作业题

--第三章 作业题

--作业题附件

第4章 软件开发过程

-4.1 软件过程

--讲课视频

-4.2 软件过程模型

--讲课视频

-4.3 敏捷开发过程

--讲课视频

-4.4 微软公司开发过程

--邹欣经理自我介绍

--微软开发过程之一

--微软开发过程之二

-测验题--作业

第5章 团队开发管理

-5.1 团队组织与管理

--讲课视频

-5.2 项目沟通管理

--讲课视频

-5.3 软件项目计划

--讲课视频

-5.4 软件项目估算

--讲课视频

-测验题--作业

-讨论题

--讨论

第6章 敏捷开发与配置管理

-6.1 敏捷开发之Scrum

-- 敏捷开发之Scrum

--html

-6.2 用户故事与估算

--讲课视频

-6.3 团队协作工具Tower

--Tower工具介绍(1)

--Tower工具介绍(2)

-6.4 配置管理

--讲课视频

-6.5 配置管理工具Git

--讲课视频

-测验题--作业

-作业题--作业

第7章 需求获取

-7.1 需求工程师

--讲课视频

-7.2 需求定义

--讲课视频

-7.3 需求的类型

--讲课视频

--讲课视频(2)

-7.4 需求工程过程

--讲课视频

-7.5 需求的主要来源

--讲课视频

-7.6 需求获取技术

--讲课视频

--讲课视频二

--讲课视频三

-7.7 撰写需求文档

--讲课视频

-测验题--作业

-讨论题

--讨论

第8章 用例建模

-8.1 用例建模概念

--讲课视频

-8.2 用例建模过程

--讲课视频

-8.3 用例建模精讲

--讲课视频

-8.4 建模工具介绍

--讲课视频

-8.5 微信抢票应用案例

--讲课视频

-测验题--作业

-讨论题

--讨论

第9章 面向对象分析与设计

-9.1 面向对象分析

--讲课视频

-9.2 CRC卡片分拣法

--讲课视频-1

--讲课视频-2

-9.3 面向对象设计

--讲课视频-1

--讲课视频-2

-9.4 类图建模

--讲课视频-1

--讲课视频-2

-第9章 面向对象分析与设计--测验题

-讨论题

--讨论

第10章 行为建模

-10.1 顺序图概念

--讲课视频

-10.2 顺序图建模

--讲课视频

-10.3 顺序图风格

--讲义视频

-10.4 状态建模

--讲课视频

-10.5 状态图

--讲课视频

-10.6 状态图精讲

--讲义视频

-测验题--作业

-讨论题

--讨论

第11章 软件系统设计

-11.1 软件体系结构概念

--讲授视频

-11.2 软件设计原则

--讲授视频

-11.3 软件体系结构风格(一)

--讲授视频

-11.4 软件体系结构风格(二)

--讲授视频

-11.5 软件体系结构风格(三)

--讲授视频

-11.6 软件设计过程

--讲授视频

-11.7 Web系统架构设计

--讲授视频

-11.8 数据库选择策略

--讲授视频

-测验题--作业

-作业题

--html

--html

--html

-作业题--作业

第12章 软件交互设计

-12.1 交互设计概述

--讲授视频

-12.2 交互设计目标

--讲授视频

-12.3 GUI设计原则

--讲课视频

-12.4 KLM效率模型

--Video

-12.5 Fitts定律

--讲授视频

-12.6 交互设计过程

--讲授视频

-测验题--作业

第13章 软件系统测试

-13.1 软件测试概念

--讲课视频

-13.2 软件测试类型

--讲课视频

-13.3 软件功能测试

--讲课视频

-13.4 软件性能测试

--讲课视频

-测验题--作业

第14章 软件交付与维护

-14.1 软件部署与交付

--讲课视频

-14.2 软件演化与维护

--讲课视频

-测验题--作业

第15章 期末考试与总结

-第一部分:基础知识

-第二部分:编程与测试(选做)

--编程与测试(选做)

代码覆盖标准笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。