前言:流程是由若干个任务节点组成,流转过程就是从一个节点转移到下一个节点,通常需要不断切换用户身份来完成流程的测试,这样使得测试效率比较低下,本文从实战出发,介绍常见的两种快速测试方法,用于提升流程测试和实施的效率。

1. 流程快速测试介绍

流程引擎的核心功能是保证流程正常流转,流程是由若干个节点组成,真实的业务系统是每个用户完成各自的任务后,分发给下一步任务节点,再由下一步的任务接收人员办理任务,以此循环前进,直至流程流转结束。

如果按照这样的测试策略,每一步都需要变换用户身份来完成功能测试,这样造成的效率确实是比较低下,所以引擎开发人员需要找出能够快速测试的方法,不断提升流程测试的效率,自动化的测试策略的提出就是一个可行的方案。

2. 流程快速测试的解决方案

在自动化测试方法提出之前,能够想到的就是让流程可以在每一个任务节点上自动运行流转,这就需要装载一些测试数据,保证流转运行的接口能够读取到这些数据,然后驱动流程向下流转。本文首先提出了脚本自动化测试和用户身份模拟的两种办法来解决。

2.1 流程脚本自动化测试

每次在流程引擎新版本发布时候,需要确保流程的基本流转功能能够正常运行,然后由于工作流模式(Workflow Patten)已经包括的模型类型大概有几十种以上,如何保证新版本发布后,不影响每一个工作流模型都能够正常运行呢?假如每一个模式都逐一去做测试,又是比较费时费力的工作。

所以可行的办法就是通过脚本化测试,一次全部集中测试,覆盖所有的工作流模式和功能接口方法,这样就可以确保新版本的顺利发布。在Slickflow引擎测试中,由于WebApi接口的大量使用,测试人员认为可以建立基于WebApi接口的自动化测试,这一思路也使得可以针对Slickflow.Engine的不同版本测试,尤其是包含了.Net, .Net Core和.Net SAAS三个不同版本的自动化测试。如下图所示,通过WebApi的配置,就可以进行一次工作流模式的全覆盖测试。

WebApi接口需要的数据类型就是Json格式的数据,所以脚本文件就是Json数据。下面的代码就是一个简单的串行流程的Json数据。

//本JSON文件提供runner对象,能够测试串行流程的开始,运行到结束。
{
"CompanyID": "2",
"ProcessID": "3",
"ProcessName": "报价流程",
"ProcessGUID": "072af8c3-482a-4b1c-890b-685ce2fcc75d",
"AppInstanceID": "SEQ-P-1099",
//启动流程
//start process
"Start": {
"UserID": "10",
"UserName": "Long",
"CompanyID": "2",
"AppName": "SamplePrice",
"AppInstanceID": "SEQ-P-1099",
"ProcessGUID": "072af8c3-482a-4b1c-890b-685ce2fcc75d"
},
//业务员提交申请
//run process
"Apply": {
"UserID": "10",
"UserName": "Long",
"CompanyID": "2",
"AppName": "SamplePrice",
"AppInstanceID": "SEQ-P-1099",
"ProcessGUID": "072af8c3-482a-4b1c-890b-685ce2fcc75d",
"NextActivityPerformers": {
"eb833577-abb5-4239-875a-5f2e2fcb6d57": [
{
"UserID": 10,
"UserName": "Long"
}
]
}
},
//板房签字
//run process
"Sign": {
"UserID": "10",
"UserName": "Long",
"CompanyID": "2",
"AppName": "SamplePrice",
"AppInstanceID": "SEQ-P-1099",
"ProcessGUID": "072af8c3-482a-4b1c-890b-685ce2fcc75d",
"NextActivityPerformers": {
"cab57060-f433-422a-a66f-4a5ecfafd54e": [
{
"UserID": 10,
"UserName": "Long"
}
]
}
},
//业务员签字确认,流程结束
//run process
"Confirm": {
"UserID": "10",
"UserName": "Long",
"CompanyID": "2",
"AppName": "SamplePrice",
"AppInstanceID": "SEQ-P-1099",
"ProcessGUID": "072af8c3-482a-4b1c-890b-685ce2fcc75d",
"NextActivityPerformers": {
"b53eb9ab-3af6-41ad-d722-bed946d19792": [
{
"UserID": 10,
"UserName": "Long"
}
]
}
}
}

  

2.2 流程用户模拟测试

用户交互测试也是一种必不可少的测试过程,而且在交互过程中,可以跟踪和调试程序,真实系统的流转是需要用户身份的不断切换,但是不妨通过身份模拟来减少切换环节,通过对流程引擎接口的内部改造,证实是可以实现这一思路的。
        如下图所示,一个集成测试的用户界面,左侧是流程定义记录,右侧上半部分是待办任务列表,下半部分是办结任务列表。功能接口主要是流程的启动、流转、退回和返送。功能测试人员通过选择流程定义记录,随时就能进行流程实例的启动、流转、退回和返送操作,不用重复的身份切换。

3. 流程图形的代码创建

客户有时候会提交自己的流程XML来进行测试,然而有些流程定义是比较复杂的业务流程,通常可能有几十个甚至上百个节点记录。引擎开发人员首先需要做到对流程图形的简化,但是通过流程设计器来创建流程图,有时候是比较慢,而代码创建流程图就反而容易和轻松一些。虽然代码方式不能完全取代流程设计器,但是对于程序开发人员,确实也需要这种快速构建流程图形的方法。

如下图所示,通过代码创建流程图的片段。这里是创建了一个带分支并行的流程图。

代码执行完成后,将会生成一条流程定义记录,通过设计器打开这条流程记录,流程的图形就会被展示出来,如下图所示:

试想一下,如果这个图形通过手工创建,拖拽节点,添加连线的方式,也是需要耗费一些时间的,而代码创建,就是一步生成,节省的时间的确可以是几十倍的时间。

4. 总结

本文总结了在测试过程中,如何快速测试的方法,这些辅助工具的开发和发布,是为了减少开发人员重复的工作量,提升流程开发的效率。

5. 备注

快速测试辅助模块作为增值服务(需额外购买获取)供企业客户选择,这些辅助工具并不是必需的核心功能模块,推荐给有需求的客户使用,是为了适应和改善企业客户的开发体验。也希望企业客户能够建立快速测试驱动的流程项目的开发测试和实施过程,从而整体提升软件开发效率和生产力。

Slickflow.NET 开源工作流引擎高级开发(二) -- 流程快速测试增值服务工具介绍的更多相关文章

  1. Slickflow.NET 开源工作流引擎高级开发(一) -- 流程外部事件的调用和变量存储实现

    前言:流程实现基本流转功能外,通常也需要调用外部事件,用于和业务系统的交互,同时存储一些流程变量,用于追踪和记录业务数据变化对流程流转的影响. 1. 流程事件 流程执行过程中,伴随各种事件的发生,而且 ...

  2. Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合

    前言:  流程引擎的核心功能是负责解析流程定义XML和流转,业务环节的不断积累,让人们不断总结和抽象出一些模式,这些模式统称为工作流模式(Workflow Pattern).本文的重点就是介绍一种常见 ...

  3. Slickflow.NET 开源工作流引擎高级开发(六) -- WebTest 引擎接口模拟测试工具集

    前言:引擎组件的接口测试不光是程序测试人员使用,而且也是产品负责人员需要用到的功能,因为在每一步流转过程中,就会完整模拟实际用户发生的场景,也就容易排查具体是程序问题还是业务问题,从而快速定位问题,及 ...

  4. Slickflow.NET 开源工作流引擎高级开发(五) -- 引擎和外部事件的交互

    前言:引擎组件的基本职责是负责流程流转,但是在流转过程中,除了对内部控制逻辑进行实现外,也不可避免的要去调用或者响应外部事件.本文主要描述外部事件的类型,以及调用方法过程. 1. 外部事件的类型 外部 ...

  5. Slickflow.NET 开源工作流引擎高级开发(四) -- 硬核编码:代码式快速构建流程图

    前言:通过设计器交互来创建流程图是比较常见的方式,这种方式是比较方便业务人员对流程的操作.然而,在需要流程模板,或者技术开发阶段以及一些自动化流程的处理过程中,使用代码快速创建流程图也是一种非常有必要 ...

  6. Slickflow.NET 开源工作流引擎快速入门之二: 简单并行分支流程代码编写示例

    前言:对于急切想了解引擎功能的开发人员,在下载版本后,就想尝试编写代码,完成一个流程的开发和测试.本文试图从一个最简单的并行分支流程来示例说明,如何快速了解引擎代码的编写. 版本:.NET Core2 ...

  7. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务模块的交互

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  8. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  9. Slickflow.NET 开源工作流引擎基础介绍(九) -- .NET Core2.0 版本实现介绍

    前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...

随机推荐

  1. 960网格,一个web时代的标志。

    如果你不知道什么是CSS框架,可以回顾我的文章 css框架,一把锋利的剑 闲言少叙,废话不说,直入正题: 1.什么是CSS框架? 正如之前说的: CSS框架是一种你能够使用在你的web项目中概念上的结 ...

  2. ASP.NET实现网站的自动升级

    网站的自动升级主要是要实现从一台服务器上下载某些文件到本服务器上,然后对下载下来的文件进行更新等操作. 比如,现在有服务器A,服务器B和客户端C. 作为COM公司开发的产品DIV网站系统被安装到服务器 ...

  3. CSS-3 文字阴影—text-shadow 的使用

    text-shadow还没有出现的时候,大家在网页中的阴影就是用ps一张图片作为背景.那么现在有了CSS3的这个属性,日后我们的工作会更简洁些. text-shadow之前出现过,不过不久就被Pass ...

  4. ftp 服务

    ftp 上传下载 yum install ftp -y ftp:192.168.1.1 上传 put file1 下载 get file2 直接方式 ftp get test.tar.gz 文件 ft ...

  5. charles https抓包 (安卓安装证书)

    的Android APP使用的都是http请求,之后改成了https,就出现了以下情况,无法正常读取抓取的内容 下面阐述一下,正确的安装步骤,为出现类似情况的朋友提供一个参考: 1.第一步: 最后点击 ...

  6. Zookeeper命名服务——生成分布式有序且唯一id

    生成分布式有序且唯一id的方法有很多种,使用zookeeper是比较简单的一种方法,只是生成的速度不高,这里只是一个借助zk的版本号生成分布式唯一且有序id的例子. ZkIdGenerator.jav ...

  7. bash脚本:集群资源争夺战crazy-killer

    背景 公司的集群很多人一起用,有时候就难免资源紧张,某次需要用的时候没资源等了半天还是没资源,再等半天还是没资源,于是就写了个脚本泄愤,建议看到的人拷走放在自己公司集群上长期运行 :) 实现 此脚本运 ...

  8. Docker01 CentOS配置Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  9. df -h执行卡住不动问题解决【转】

    昨天生产环境报日志写不进去了,因此 登陆线上环境后,习惯用df -h命令查看空间使用情况,结果发现该命令执行半天也没有返回. 因此使用mount命令查看该机器上的目录: [conversant@swi ...

  10. AUI-靠谱的移动前端框架

    在如何开发出优秀的APICloud应用中ApiCloud官方推荐我们使用轻量级的框架AUI,针对AUI官网没有提供体验地址 特意编译了一个APP供给大家体验 aui官方地址:http://www.au ...