VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • C#教程之Slickflow.NET 开源工作流引擎高级开发(二

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

1. 流程快速测试介绍

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

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

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

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

2.1 流程脚本自动化测试

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//本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"
                }
            ]
        }
    }
}