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

时间:2008-09-27 07:27:17

标签: sharepoint unit-testing k2

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

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

是否有人在像K2这样的工作流服务器上进行过自动化测试?它的努力程度是否超过它的价值?

5 个答案:

答案 0 :(得分:3)

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

我的想法是模拟几乎无法通过单元测试控制的所有内容 - 文档存储,身份验证,用户权限和操作,sharepoint工作流的sharepoint特定部分(这些模拟应该经过全面测试,以反映真实的组件)。

使用控制反转来使代码选择在运行时使用哪个组件 - 实际或模拟。

然后,您可以编写系统范围的测试来测试工作流行为 - 设置您自己的环境,检查工作流引擎的反应。这些测试太大了,无法称之为单元测试,仍然是自动化测试。

这种方法似乎适用于琐碎的案例,但我仍然需要证明它在现实世界的工作流程中使用是值得的。

答案 1 :(得分:2)

Here's the solution我用。这是运行时的简单包装器,允许执行单个活动,简化传递参数,阻止调用线程直到工作流或活动完成,并转换/重新抛出异常(如果有的话)。由于我的工作流只通过自定义工作流服务发送或等待消息,我可以模拟服务以期望来自工作流的某些消息并将某些消息发布到它,在这里我正在为我的WF进行真正的单元测试!技术的功劳归功于Michael Kennedy。

答案 2 :(得分:1)

如果您要进行单元测试,Typemock Isolator是目前唯一可以模拟SharePoint对象的工具。

顺便说一下,Richard Fennell正在开发一个工作流模拟解决方案。

答案 3 :(得分:0)

我们今天刚刚编写了一个应用程序来监控我们的K2工作清单,从中获取某些任务,填写一些数据并提交完成任务。这使我们能够执行自动化测试,查找回归,并在人们执行此操作的时间的一小部分时间内完成工作流程的多个不同路径。我想可以写一个类似的程序假装成sharepoint。

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

答案 4 :(得分:0)

我已经使用K2ROM API对K2工作流程进行了自动化集成测试(如果你使用的是K2 blackpearl,可能是SourceCode.Workflow.Client。)

基本上,您在具有已知作品集的测试服务器上启动一个进程(我生成一个GUID),然后使用管理API将其删除。我编写了像AssertAtClientActivity这样的辅助方法(基本上用条件调用ProvideWorkItem)。

将IsSynchronous参数用于StartProcessInstance,WorklistItem.Finish等,以便在流程实例达到稳定状态之前不会返回相关的方法调用。

预计测试会很慢,偶尔也会失败。这些不是单元测试。

如果你想针对其他系统编写单元测试,你可能想要包装K2 API。

考虑查看Windows Workflow 4new workflow features in SharePoint 2010。你可能不需要K2。