2008-09-27 15 views
12

Machst du automatisierte Tests an einem komplexen Workflow-System wie K2?Einheit/Automatisiertes Testen in einem Workflow-System

Wir bauen ein System mit umfangreicher Integration zwischen Sharepoint 2007 und K2. Ich kann mir nicht einmal vorstellen, wo ich mit automatisiertem Testen beginnen sollte, da der Workflow mehrere Benutzer mit Sharepoint, K2-Workflows und benutzerdefinierten Webseiten interagiert.

Hat jemand automatisierte Tests auf einem Workflow-Server wie K2 durchgeführt? Ist es mehr Mühe als es wert ist?

Antwort

3

Ich habe ein ähnliches Problem testen Workflow-schwere MOSS-basierte Anwendung. Workflows basieren in unserem Fall auf WWF.

Meine Idee ist so ziemlich alles zu verspotten, die Sie nicht von Unit-Tests steuern kann - Dokumente Speicherung, Authentifizierung, Benutzerrechte und Aktionen, Sharepoint-spezifische Teile von Workflows für Sharepoint (diese Mocks sollten gründlich Verhalten getestet werden, um Spiegel von realen Komponenten).

Sie verwenden die Inversion der Steuerung, um Code festzulegen, welche Komponente zur Laufzeit verwendet werden soll - real oder mock.

Dann können Sie systemweite Tests schreiben, um das Verhalten von Workflows zu testen - eine eigene Umgebung einrichten und überprüfen, wie die Workflow-Engine reagiert. Diese Tests sind zu groß, um sie Unit-Tests zu nennen, aber es ist ein automatisiertes Testen.

Dieser Ansatz scheint in trivialen Fällen zu funktionieren, aber ich muss immer noch beweisen, dass es sich lohnt, in realen Arbeitsabläufen zu verwenden.

0

Wir haben heute eine Anwendung geschrieben, die unseren Arbeitsvorrat von K2 überwacht, bestimmte Aufgaben daraus abruft, einige Daten ausfüllt und die Aufgaben zur Fertigstellung einreicht. Dies ermöglicht es uns, automatisierte Tests durchzuführen, Regressionen zu finden und so viele verschiedene Pfade des Workflows in einem Bruchteil der Zeit zu durchlaufen, die die Benutzer dafür benötigen. Ich könnte mir vorstellen, dass ein ähnliches Programm geschrieben werden könnte, um so zu tun, dass es Sharepoint ist.

Für die Komponententests der Workflow-Elemente selbst haben wir eine DLL von k2 referenziert, die alle unsere Zeilenregel und Verarbeitungslogik enthält. Wir haben keinen Code in den k2 Workflows selbst, es wird alles aus diesen DLLs referenziert. Dies ermöglicht uns, auf einfache Weise Komponententests zu schreiben, um alle einzelnen Linienregeln zu testen.

2

Here's the solution Ich benutze. Dies ist ein einfacher Wrapper um die Laufzeit, der die Ausführung einzelner Aktivitäten ermöglicht, die Übergabe der Parameter vereinfacht, den aufrufenden Thread blockiert, bis der Workflow oder die Aktivität abgeschlossen ist, und eventuelle Ausnahmen übersetzt/zurücksetzt. Da mein Workflow nur Nachrichten über einen benutzerdefinierten Workflow-Service sendet oder darauf wartet, kann ich den Dienst überlisten, um bestimmte Nachrichten vom Workflow zu erwarten und bestimmte Nachrichten an ihn zu senden, und hier habe ich echte Unit-Tests für meine WF! Der Kredit für Technologie geht an Michael Kennedy.

+0

danke, repariert es – zvolkov

1

Wenn Sie Unit-Tests durchführen möchten, ist Typemock Isolator das einzige Tool, das derzeit SharePoint-Objekte vortäuschen kann.

Und übrigens, Richard Fennell arbeitet hier an einer Workflow-Mocking-Lösung.

0

Ich habe automatisierte Integrationstests für K2-Workflows mit der K2ROM-API durchgeführt (wahrscheinlich SourceCode.Workflow.Client, wenn Sie K2 blackpearl verwenden).

Grundsätzlich starten Sie einen Prozess auf einem Testserver mit einem bekannten Folio (ich erzeuge eine GUID), dann verwenden Sie die Management-API, um es anschließend zu löschen. Ich habe Hilfsmethoden wie AssertAtClientActivity geschrieben (im Prinzip ruft ProvideWorkItem Kriterien auf).

Verwenden Sie den IsSynchronous-Parameter für StartProcessInstance, WorklistItem.Finish usw., damit relevante Methodenaufrufe erst dann zurückgegeben werden, wenn die Prozessinstanz einen stabilen Status erreicht hat.

Erwarten Sie, dass die Tests langsam sind und gelegentlich fehlschlagen. Dies sind keine Unit-Tests.

Wenn Sie Komponententests für andere Systeme schreiben möchten, möchten Sie wahrscheinlich die K2-API umschließen.

Betrachten Sie Windows Workflow 4 und die new workflow features in SharePoint 2010 betrachten. Sie brauchen K2 nicht.