单元测试是否适合BPM开发?

时间:2010-01-23 14:36:05

标签: unit-testing bpm

我目前正在开发一个大型BPM项目,该项目使用名为Process 360的Global 360 BPM工具集。只是为了给出一些背景知识。这个产品就像很多其他BPM解决方案一样,你设计了多个“流程图”,它们定义了你试图建模的特定业务流程的流程,每个流程图由连接在一起的多个任务节点组成,它们执行特定的功能(调用网络服务等)。

目前我们在版本的QA阶段遇到了一些非常严重的问题,因为工具集没有提供任何方法来自动测试流程图路由。因此,当开发大型复杂流程并将其移交给我们的测试团队时,通常会出现大量问题。虽然显然你期望从QA中出现一些问题,但如果我们有某种自动化测试框架,那么在开发过程中可能会发现很多错误等等我感到无法理解我们可以用来构建一组单元测试,证明过程图中的各种路径。

目前,唯一真正的开发测试更类似于开发人员执行的功能测试,每个测试用例都记录为一组手动步骤。这种方法的问题在于开发人员手动运行非常耗时,因此,也相对容易出错。也;因为我们的计划通常非常紧张,所以通常不会经常执行测试以及早发现问题。

正如我前面提到的那样;当前工具集没有提供执行此类自动化测试的方法。这让我想到了为什么?作为整个BPM场景的新手,我的假设是这只是产品中缺乏的一个功能,但我也想知道“单元测试”是否传统上不是在BPM世界中完成的?也许它只是不适合这种工作?

我有兴趣知道是否有其他人曾经遇到过这类问题,还有什么 - 如果有的话 - 可以做些什么来改进。

3 个答案:

答案 0 :(得分:3)

我已经看到了一些相关内容,但不是Global 360相关:using bpelunit for testing processes

我开发了一个工作流工具,并且开放用于向最终用户测试引擎的测试工具的需求增加。

答案 1 :(得分:2)

我已经使用另一个商业BPM K2.net 2003进行了“单元”测试。我真的称之为集成测试,因为它需要一个测试服务器并且它相对较慢。但是,它是自动化的。

书中Professional K2 blackpearl对此进行了很好的讨论(它也适用于K2.net 2003)。

为了将它应用到您的平台,工具集必须有一个API,允许启动流程实例,获取工作项,完成工作项等。您使用任何支持的语言编写测试(我使用C#)和测试框架(我使用的是NUnit)。如果API支持同步调用,则更容易实现。对于每个测试:

  1. 启动测试过程
  2. 将工作项目推进到决策点
  3. 正确设置流程实例数据
  4. 完成工作项
  5. 断言工作项目现在处于预期的活动
  6. 删除或完成流程实例
  7. 基础测试类或辅助方法可以使这更容易。您甚至可以编写DSL来测试地图。

    基本上你想要完整的“测试覆盖”过程/地图 - 测试每个决策点并确保采取正确的分支。

答案 2 :(得分:1)

BPM有两个方面相关但不完全相同。

工具和技术供应商所倡导的BPM就是功能。

企业架构师所倡导的BPM也就是建立卓越中心。

前者是公司购买某些软件的地方。

后者是公司对其IT员工行为进行系统性和固有变更的地方。

前者应该为后者服务,但不一定如此。获得前者是必要的,但不足以实现后者。

我不知道Global 360如何支持所谓的测试驱动开发,但JBoss jBPM确实提供了一些tool support来轻松编写JUnit测试。

但是,该工具不能也不会强迫开发人员编写它们或采用TDD原则。