美文网首页@IT·互联网技术干货程序员
基于有限状态模型的自动化测试

基于有限状态模型的自动化测试

作者: 胖艺 | 来源:发表于2017-03-01 17:41 被阅读1030次

模型是帮助技术人员理解复杂系统运行的有效工具。基于模型展开测试可以将系统切分成易于理解和测试的单元,从而帮助测试人员进行测试。本文讨论了一个基于有限状态模型的自动化测试过程。

背景

在一个简化的支付过程中,支付服务方提供了三个接口:创建订单、支付、全额退款三个接口。一笔订单有三个状态:初始化、支付成功,已退款。业务规则如下:(1)当订单被创建时,订单状态为初始化;(2)对初始化的订单进行支付,订单状态为支付成功;(3)可以直接调用支付接口,订单状态为支付成功。(4)对支付成功的订单进行退款,订单状态为已退款。

有限状态图

根据以上的背景介绍,我们可以根据订单状态,画出状态模型图:

支付的有限状态模型

从状态模型,我们不难得到两条测试路径:[START, INIT, SUCCESS, REFUNDED], [START, SUCCESS, REFUNDED]

接下来,我们希望通过程序来自动的生成测试和执行测试。

定义状态

首先定义状态:

状态定义

定义状态常量:

状态常量

定义操作

接下来定义状态变迁的操作:

定义操作

自动生成测试用例

由状态模型,采用深度优先算法遍历状态图,并在遍历的过程中,记录下所有从状态START到状态REFUNDED的路径。所有的路径即是我们需要的测试用例。

图的核心数据结构如下:

ModelGrah的核心数据结构

深度优先遍历的算法:

DFS算法

使用一维数组存顶点,二维数组表示状态图:

存储状态图

将状态的变迁定义为路径中的一步path,包含当前状态、操作、下一个状态:

Path

一个路径中,即一个用例中,包含一步一步的path。

接下来就是将状态图,使用深度遍历,得到所有从START到REFUNDED状态的路径,并将此路径转化为path的集合,即一步一步的测试操作,使用一个工具类完成这个转换过程:

ModelUtil.getCaseList

测试代码如下:

自动生成测试用例的测试代码

运行之后,得到两条路径,每条路径需要进行的操作如下图:

自动生成测试用例的结果

模型自动化运行

自动生成测试用例后,我们接着定义模型,让测试能够自动运行。

Model

添加测试代码:

运行模型的测试代码

测试结果如下:

运行结果

总结

根据业务背景,围绕订单状态进行分析,画出有限状态模型。根据模型,使用深度遍历算法获得所有从START状态到REFUNDED状态的路径集合,自动生成所需要进行测试的用例。每条路径中的一步,为一个测试操作。通过定义模型,在模型中运行每一个操作和检查,达到自动化执行。


禅定

建模,由简到繁,抓重点。

相关文章

  • 基于有限状态模型的自动化测试

    模型是帮助技术人员理解复杂系统运行的有效工具。基于模型展开测试可以将系统切分成易于理解和测试的单元,从而帮助测试人...

  • 网络模型及各层常见的协议

    网络模型及各层常见的协议 基于TCP的协议 基于UDP的协议 最后:你如果是对python自动化测试、web自动化...

  • 自动化设计

    自动化测试模型可以看作自动化测试框架与工具设计的思想。随着自动化测试技术的发展,演化为以下几种模型: 线性测试 模...

  • Python selenium:模型(框架)

    自动化测试模型 自动化测试模型可以看作自动化测试框架与工具的设计思路,自动化不仅仅是单纯的写脚本运行就可以了,还需...

  • 软件测试模型

    关键词:测试模型 按测试模式来分类: 瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索式测试等。 1、(传...

  • 自然语言处理——7.8 词性标注方法

    · 基于规则的词性标注方法· 基于统计模型的词性标注方法· 规则和统计方法相结合的词性标注方法· 基于有限状态变换...

  • 软件测试脑图集合

    软件测试过程与管理 软件测试分类型 单元测试 接口测试 UI自动化测试 性能测试 安全测试 自动化测试框架(以基于...

  • 基于模型测试01

    一、概述 MBT中文名称为基于模型的测试,基于模型的测试属于软件测试领域的一种测试方法。 二、背景 软件测...

  • 2018-10-17 自动化测试基础

    (1)自动化测试简介 传统自动化测试: 基于产品UI层的自动化测试,它是将黑盒功能测试转化为由程序或工具执行得一种...

  • 2019-04-09

    Python3.3+Selenium3自动化测试视频教程 是基于Python语言的Selenium自动化测试。使用...

网友评论

    本文标题:基于有限状态模型的自动化测试

    本文链接:https://www.haomeiwen.com/subject/ovxcgttx.html