2008-09-27 53 views
12

您是否對複雜的工作流系統(如K2)執行自動測試?工作流系統中的單元/自動化測試

我們正在構建一個在Sharepoint 2007和K2之間大量集成的系統。我甚至無法想象從自動化測試開始,因爲工作流涉及多個用戶與Sharepoint,K2工作流程和自定義網頁進行交互。

有沒有人在像K2這樣的工作流服務器上完成自動化測試?它比努力更值得嗎?

回答

3

我有一個類似的問題測試工作流程重型基於MOSS的應用程序。我們案例中的工作流程基於WWF。

我的想法是模擬幾乎所有你無法控制的單元測試 - 文檔存儲,認證,用戶權限和操作,共享點工作流程的特定於SharePoint的部分(這些模擬應該經過徹底測試以獲得鏡像行爲的真實組件)。

您使用控制反轉使代碼選擇在運行時使用哪個組件 - 真實還是模擬。

然後,您可以編寫系統範圍的測試來測試工作流行爲 - 設置您自己的環境,檢查工作流引擎如何反應。這些測試太大而無法稱之爲單元測試,但仍然是自動測試。

這種方法似乎適用於微不足道的情況,但我仍然必須證明它適用於真實世界的工作流程。

0

我們今天剛剛編寫了一個應用程序,用於監控我們的K2工作清單,從中挑選某些任務,填寫一些數據並提交完成任務。這使我們能夠執行自動化測試,查找回歸,並在人工完成所需時間的一小部分時間內完成工作流程的多個不同路徑。我想像一個類似的程序可以寫成假裝是共享點。至於工作流項目本身的單元測試,我們有一個從k2引用的dll,它包含我們所有的行規則和處理邏輯。我們在k2工作流程中沒有任何代碼,它們都是從這些dll中引用的。這使我們可以輕鬆地編寫單元測試來測試所有的單行規則。

2

Here's the solution我使用。這是運行時的簡單包裝,它允許執行單個活動,簡化傳遞參數,阻塞調用線程,直到工作流或活動完成,並翻譯/重新引發異常(如果有)。由於我的工作流程只通過自定義工作流程服務發送或等待消息,因此我可以嘲笑該服務以期望從工作流程中獲得特定消息,並向其發佈特定消息,並在此處爲我的WF進行真正的單元測試!科技的榮譽歸功於邁克爾肯尼迪。

+0

謝謝,修好了 – zvolkov 2015-12-16 16:09:41

1

如果打算進行單元測試,Typemock隔離器是目前可以模擬SharePoint對象的唯一工具。

順便說一句,Richard Fennell正在這裏工作的工作流模擬解決方案。

0

我已經使用K2ROM API(如果您使用K2 blackpearl,可能是SourceCode.Workflow.Client)對K2工作流程執行了自動化集成測試。

基本上,你使用已知的作品集(我生成一個GUID)在測試服務器上啓動一個進程,然後使用管理API將其刪除。我寫了像AssertAtClientActivity這樣的輔助方法(基本上調用ProvideWorkItem和條件)。

對StartProcessInstance,WorklistItem.Finish等使用IsSynchronous參數,以便相關的方法調用在流程實例達到穩定狀態之前不會返回。

期望測試速度緩慢並偶爾會失敗。這些不是單元測試。

如果您想針對其他系統編寫單元測試,您可能需要包裝K2 API。

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