惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - slickflowteam

Slickflow 规则集与 NRules 集成实践:从设计到产品落地 Slickflow.NET 与 OpenClaw 结合实践:技术原理、集成方式与 Skill 说明 Slickflow.NET 基于 AI 大模型实现智能客服多轮问答系统 .NET 开源工作流:Slickflow 流程自动化运行技术指南 .NET 开源工作流: Slickflow.NET 工作流引擎关于AI大模型的应用实践 .NET 开源工作流: Slickflow流程引擎高级开发(十) -- BpmnJS流程设计器集成 .NET 开源工作流: Slickflow流程引擎高级开发(九) -- 条件事件模式解释及应用 .NET 工作流: Slickflow开源工作流引擎高级开发(八) -- 审批网关(ApprovalOrSplit)模式的应用 .NET 工作流: Slickflow开源工作流引擎高级开发(七)--消息队列(RabbitMQ)的集成使用 .NET 工作流: Slickflow开源工作流引擎快速入门之四:--SlickGraph 流程模型编码建模工具使用手册 .NET 工作流: Slickflow开源工作流引擎快速入门之三: 简单或分支流程代码编写示例 .NET 工作流: Slickflow开源工作流引擎快速入门之二: 简单并行分支流程代码编写示例 .NET 工作流: Slickflow开源工作流引擎快速入门之一: 简单序列流程代码编写示例 .NET 工作流: Slickflow开源工作流引擎级开发(六) -- WebTest 引擎接口模拟测试工具集 .NET 工作流: Slickflow开源工作流引擎开发(五) -- 引擎和外部事件的交互 .NET 工作流: Slickflow开源工作流引擎高级开发(四) -- 硬核编码:代码式快速构建流程图 .NET 工作流: Slickflow开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合 .NET 工作流: Slickflow开源工作流引擎高级开发(一) -- 流程外部事件的调用和变量存储实现 .NET 工作流: Slickflow开源工作流引擎基础介绍(十) -- 邮件轮询异步发送模块集成
.NET 工作流: Slickflow开源工作流引擎高级开发(二) -- 流程快速测试增值服务工具介绍
slickflowtea · 2019-01-29 · via 博客园 - slickflowteam

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

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. 备注

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