前言:流程是由若干个任务节点组成,流转过程就是从一个节点转移到下一个节点,一般须要不断切换用户身份来完成流程的测试,这样使得测试效率比较低下,本文从实战出发,介绍常见的两种快速测试方法,用于提高流程测试和实施的效率。工具
1. 流程快速测试介绍测试
流程引擎的核心功能是保证流程正常流转,流程是由若干个节点组成,真实的业务系统是每一个用户完成各自的任务后,分发给下一步任务节点,再由下一步的任务接收人员办理任务,以此循环前进,直至流程流转结束。设计
若是按照这样的测试策略,每一步都须要变换用户身份来完成功能测试,这样形成的效率确实是比较低下,因此引擎开发人员须要找出可以快速测试的方法,不断提高流程测试的效率,自动化的测试策略的提出就是一个可行的方案。调试
2. 流程快速测试的解决方案code
在自动化测试方法提出以前,可以想到的就是让流程能够在每个任务节点上自动运行流转,这就须要装载一些测试数据,保证流转运行的接口可以读取到这些数据,而后驱动流程向下流转。本文首先提出了脚本自动化测试和用户身份模拟的两种办法来解决。orm
2.1 流程脚本自动化测试对象
每次在流程引擎新版本发布时候,须要确保流程的基本流转功能可以正常运行,而后因为工做流模式(Workflow Patten)已经包括的模型类型大概有几十种以上,如何保证新版本发布后,不影响每个工做流模型都可以正常运行呢?假如每个模式都逐一去作测试,又是比较费时费力的工做。blog
因此可行的办法就是经过脚本化测试,一次所有集中测试,覆盖全部的工做流模式和功能接口方法,这样就能够确保新版本的顺利发布。在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. 备注
快速测试辅助模块做为增值服务(需额外购买获取)供企业客户选择,这些辅助工具并非必需的核心功能模块,推荐给有需求的客户使用,是为了适应和改善企业客户的开发体验。也但愿企业客户可以创建快速测试驱动的流程项目的开发测试和实施过程,从而总体提高软件开发效率和生产力。