当前课程知识点:软件工程 >  第3章 单元测试 >  3.3 白盒测试方法 >  基本概念

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

基本概念在线视频

下一节:代码覆盖标准

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

基本概念课程教案、知识点、字幕

测试覆盖标准

是衡量软件测试质量的

一个重要指标

下面我们先了解一下

它的相关概念

测试需求

可以针对不同的软件制品

来进行描述

比如说源代码 需求说明

设计文档等

如果我们要测试

源代码的所有语句

那么每一条语句

就是一个测试需求

测试标准是把测试需求

施加在一个测试集上的一组规则

例如每一条语句都要执行

就是一个覆盖标准

所为测试覆盖

是指对于每一条测试需求

至少要有一个测试用例

可以满足这个需求

由于完全测试是不现实的

所以我们使用覆盖程度

或者覆盖率

来说明测试所做的情况

也就是说一个测试用例集

能够满足测试需求的比例

我们用现实生活中的一个例子

来进一步解释一下上面的概念

假设我们要测试一个

装有糖豆的袋子

糖豆有六种口味

和四种颜色

那么对于口味来说

就有柠檬 开心果 梨子

橘子和杏

这六种口味的测试需求

对于颜色来说

有黄色 绿色 白色和橙色

四种颜色的测试需求

我们可以选择口味这个标准

也可以选择颜色这个标准

那么用哪一种覆盖标准更好一些

如果我们选择颜色这个标准

那么用每一种颜色

各一个糖豆来测试

是可以达到百分之百的覆盖

但是这个时候

会有向种口味没有覆盖到

如果选择口味这个标准

那么在覆盖了每一种口味的同时

也就覆盖了颜色的标准

也就是说

口味这个标准包含颜色标准

在实际的项目里

选择覆盖标准可能要更复杂一些

一般需要考虑三个方面的因素

第一

是处理测试需求的难易程度

第二

是生成测试的难易程度

第三

是用测试发现缺陷的能力

前面讲过

白盒测试

是利用程序内部的逻辑结构

对程序的所有逻辑路径进行测试

那么为什么要做白盒测试呢

我们先来看一个例子

假设有一台面包机

从上面倒入面粉和水

开动机器之后

下面出来的就是烤好的面包

这个机器的功能比较单一

接口也很清晰

输入的是面粉和水

输出的是面包

假设这个机器很多年没有使用

我们现在需要检查一下

机器的情况

一种办法

是直接把水和面粉加进去

看它是否可以正常工作

这就是黑盒方法

但是这种情况下

我们没有办法了解

机器内部的情况

比如说零件是否生锈

是不是残存了很多脏东西等

还有一种比较好的办法

是把机器拆开

检查和清洗内部的零件

然后再组装起来

把水和面粉加进去试一试

显然拆开检查

就是白盒方法

再组装回来

就是黑盒方法

这个例子说明

单纯使用黑盒测试是不够的

还需要进行白盒测试

白盒测试对代码中

逻辑关系的覆盖更为全面

做得好可以极大地增强

产品的健壮性

在这一门课中

我们主要介绍

基于控制流的白盒测试技术

在讲解具体的测试方法之前

我们先介绍一个概念

控制流图

控制流图是一个过程

或程序的抽象表示

它的节点是语句

或语句的一部分

它的边表示语句的控制流

我们都学过程序流程图

控制流图

应该说是流程图的一个简化

它更突出了控制流的结构

在控制流图里面

我们把所有顺序执行的语句

看成是一个节点

对于判断分支来说

判断条件是一个节点

这个节点根据判断的真和假

产生两个不同的分支

在判断分支执行结束之后

还会有一个合并的节点

下面我们结合一个例子

来介绍一下

如何画出程序的控制流图

这个程序的功能

是从文件中读取成绩

然后再求出所有成绩的平均值

并打印输出

程序的前三行都是顺序执行语句

在这里

我们把它们看成是一个节点

后面While循环

产生一个判断分支

在循环的里面

有一个if的判断分支

if为真时

执行两个顺序语句

if语句后面是一个读文件的语句

整个while循环结束之后

还有一个判断分支

为真执行两个顺序语句

为假执行一个语句

这里1 4 5 7和8

都是可执行语句

也称为基本块

根据前面我们对程序的分析

就可以画出如图所示的控制流图

这个图中

三个红色的菱形

是三个分支节点

其余的都是由基本块组成的

基本的计算节点

基于控制流的白盒测试方法

主要包括以下步骤

首先 根据程序单元

画出程序的流程图

再用流程图得到控制流图

然后根据路径选择标准

选择合适的路径

对于所选择的路径

生成相应的测试数据

如果选择的路径可行

那么就得到测试的输入数据

否则继续选择其他路径

软件工程课程列表:

第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章 期末考试与总结

-第一部分:基础知识

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

--编程与测试(选做)

基本概念笔记与讨论

也许你还感兴趣的课程:

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