什么是MBT
¢
在生成测试用例方面
:
—
更清晰的模块定义
—
更清晰的行为定义
—
更清晰的边界定义
—
测试用例能够实现高代码覆盖率
¢
在进行测试实施方面
:
—
更有效率的理清测试分支
,
标记出优先级
.
—
对与代码更改更敏感
,
可以很快分析出哪些想关联的地方需要进行回归测试
.
¢
Model based testing,
基于模型的测试
¢
基于模型的测试属于软件测试领域的一种测试方法。按照此方法,测试用例可以完全或部分的利用模型自动产生。以上所说的模型通常是指对被测系统(
SUT, system under test
)某些(通常是功能性的)方面的描述。
¢
模型一般都是对被测系统(
SUT, system under test
)预期行为动作的抽象描述。这些测试用例的集合就是我们平时所称的抽象测试套件(
abstract test suite).
抽象测试套件不可以直接执行于需测试的系统,因为,他们不在同一抽象级别。
MBT方法运用在手动测试上的优势
¢
在生成测试用例方面
:
—
更清晰的模块定义
—
更清晰的行为定义
—
更清晰的边界定义
—
测试用例能够实现高代码覆盖率
¢
在进行测试实施方面
:
—
更有效率的理清测试分支
,
标记出优先级
.
—
对与代码更改更敏感
,
可以很快分析出哪些想关联的地方需要进行回归测试
.
如何运用MBT
¢
典型的测试模型有以下几类
:
—
有限状态机
—
UML
模型
—
马尔可夫链
—
文法模型
在实际应用中, 用得最多的是有限状态机模型和UML模型.
基于模型测试的测试过程
¢
分析理解被测试软件
基于模型的软件测试要求充分理解被测试软件。根据软件的需求构造可以用于测试的模型 , 其工作主要是根据测试目的、确定测试对象和测试特征 , 针对被测试软件的相关属性建立相应模型。这个阶段的具体工作包括 :
基于模型的软件测试要求充分理解被测试软件。根据软件的需求构造可以用于测试的模型 , 其工作主要是根据测试目的、确定测试对象和测试特征 , 针对被测试软件的相关属性建立相应模型。这个阶段的具体工作包括 :
¢
充分了解软件需求规范和设计文档、用户手册和开发队伍充分交流
¢
识别软件系统的用户
,
枚举每个用户的输入序列
,
研究每项输入的可能取值范围
,
包括
:
合法值、边界值、非法值、以及预期输出。
¢
记录输入发生条件和响应发生条件。
¢
研究输入序列
,
如
:
输入发生时刻
,
软件系统接收特定输入的条件
,
输入处理顺序
¢
理解软件内部数据交换和计算过程
,
产生可能发现缺陷的测试数据
选择合适的测试模型
¢
了解可用的模型
不同的应用领域要使用不同的测试模型。例如 , 电话交换系统多使用状态模型 ; 并发软件系统中不同组件并发运行用状态图建模 ; 测试长期运行软件系统可以使用状态机模型。
不同的应用领域要使用不同的测试模型。例如 , 电话交换系统多使用状态模型 ; 并发软件系统中不同组件并发运行用状态图建模 ; 测试长期运行软件系统可以使用状态机模型。
¢
根据模型特征进行选择
只有充分理解模型和软件系统 , 才能选择合适的模型对软件进行测试 . 。
只有充分理解模型和软件系统 , 才能选择合适的模型对软件进行测试 . 。
¢
人员、组织和工具的影响
基于模型的软件测试对测试人员的知识结构和技术水平提出了一定要求 , 如果一个开发组织使用模型完成需求分析和系统设计的模型的软件测试就比较容易 , 因为根据系统分析和设计的模型进行测试 , 往往可以真接应用基于模型的软件测试技术 , 还可以根据测试的进展不断调整模型或模型的细节 , 并有利于在开发过程早期进行测试规划。另外还要根据开发组织使用的测试工具选择特定的模型。
基于模型的软件测试对测试人员的知识结构和技术水平提出了一定要求 , 如果一个开发组织使用模型完成需求分析和系统设计的模型的软件测试就比较容易 , 因为根据系统分析和设计的模型进行测试 , 往往可以真接应用基于模型的软件测试技术 , 还可以根据测试的进展不断调整模型或模型的细节 , 并有利于在开发过程早期进行测试规划。另外还要根据开发组织使用的测试工具选择特定的模型。
构造测试模型
¢
我们以基于状态机模型的测试为例说明如何构造测试模型。首先要抽象出软件系统状态
,
状态抽象一般要根据输入及输出条件进行
,
一般包括以下过程
:
—
生成一个输入序列并说明每个输入的适用条件
,
称作输入约束。
—
对每个输入要说明产生不同响应的上下文环境
,
称作响应约束。
—
根据输入序列、输入约束和响应约束构造相应状态机模型。
模型示例: 简单电话模型
¢
这里展示了一个简单电话的状态模型
,
我们假设它只有通话状态和响铃状态两个并行状态
,
没有考虑多方通话的情况
¢
从这个模型中
,
我们可以看出
,
响铃状态依赖通话状态
¢
依据这个模型
,
我们就顺着状态变化路径书写测试用例了
.
¢
在这个模型中
,
状态组合一共是
8
种
,
但是由于条件约束
,
比如只有在来电状态下才会响铃
,
生成模型后
,
有效的状态只有
4
种
.
使用MBT有助于提高测试效率
¢
使测试工程师更深入了解产品结构
/
逻辑
¢
较全的功能
/
代码覆盖
¢
敏捷的功能
/
代码变更响应
引用
¢Model-Based Testing in Practice.pdf
¢Model-Based Testing of a Highly Programmable System.pdf
点击下载: 在手动测试中运用MBT方法PPT文件