工作流系统中的单元/自动化测试

时间:2020-03-06 14:49:14  来源:igfitidea点击:

我们是否在像K2这样的复杂工作流程系统上进行自动化测试?

我们正在构建一个在Sharepoint 2007和K2之间进行广泛集成的系统。我什至无法想象从哪里开始进行自动化测试,因为工作流涉及多个用户与Sharepoint,K2工作流和自定义网页进行交互。

有没有人在像K2这样的工作流服务器上进行过自动化测试?付出的努力多于价值吗?

解决方案

我在测试基于工作流的,基于MOSS的大量应用程序时遇到了类似的问题。在我们的案例中,工作流基于WWF。

我的想法是模拟几乎所有从单元测试文档存储,身份验证,用户权限和操作,共享点工作流中特定于共享点的部分中我们无法控制的一切(应该对这些模拟进行彻底测试以反映真实组件的行为)。

我们可以使用控件的倒置使代码选择在运行时使用真实或者模拟的组件。

然后,我们可以编写系统范围内的测试,以测试设置我们自己的环境的工作流行为,并检查工作流引擎的反应。这些测试太大了,不能称它们为单元测试,但它仍然是自动化测试。

这种方法似乎适用于琐碎的情况,但是我仍然必须证明在现实的工作流程中值得使用。

今天我们刚刚编写了一个应用程序,该应用程序监视K2工作清单,从中选取某些任务,填写一些数据并提交要完成的任务。这使我们能够执行自动化测试,查找回归并通过工作流中的许多不同路径来运行,而这只需要花很少的时间就可以完成。我以为可以编写一个类似的程序来假装自己是共享点。

至于工作流项目本身的单元测试,我们有一个从k2引用的dll,其中包含我们所有的行规则和处理逻辑。 k2工作流本身没有任何代码,所有这些dll都引用了这些代码。这使我们可以轻松地在它们上编写单元测试,以测试所有单独的行规则。

这是我使用的解决方案。这是运行时的简单包装,它允许执行单个活动,简化参数传递,阻塞调用线程直到工作流或者活动完成,并翻译/重新抛出异常(如果有)。由于我的工作流仅通过自定义的工作流服务发送或者等待消息,因此我可以模拟该服务以期望工作流中的某些消息并将某些消息发布到该消息中,在这里,我对WF进行了真实的单元测试!技术功劳归于迈克尔·肯尼迪(Michael Kennedy)。

如果要进行单元测试,Typemock隔离器是当前可以模拟SharePoint对象的唯一工具。

顺便说一句,Richard Fennell在这里致力于工作流模拟解决方案。