K2 のような複雑なワークフロー システムで自動テストを行っていますか?
Sharepoint 2007 と K2 を広範囲に統合したシステムを構築しています。ワークフローには、Sharepoint、K2 ワークフロー、およびカスタム Web ページと対話する複数のユーザーが含まれるため、自動テストをどこから開始すればよいか想像もつきません。
K2 のようなワークフロー サーバーで自動テストを行った人はいますか? 価値以上の努力ですか?
K2 のような複雑なワークフロー システムで自動テストを行っていますか?
Sharepoint 2007 と K2 を広範囲に統合したシステムを構築しています。ワークフローには、Sharepoint、K2 ワークフロー、およびカスタム Web ページと対話する複数のユーザーが含まれるため、自動テストをどこから開始すればよいか想像もつきません。
K2 のようなワークフロー サーバーで自動テストを行った人はいますか? 価値以上の努力ですか?
ワークフローが重いMOSSベースのアプリケーションをテストする際に、同様の問題が発生しています。この場合のワークフローは WWF に基づいています。
ドキュメントの保存、認証、ユーザー権限とアクション、sharepoint のワークフローの sharepoint 固有の部分など、単体テストからは制御できないほとんどすべてをモック化することが私の考えです (これらのモックは、実際のコンポーネントの動作を反映するために徹底的にテストする必要があります)。 .
制御の反転を使用して、コードが実行時に使用するコンポーネント (リアルまたはモック) を選択できるようにします。
次に、システム全体のテストを記述して、ワークフローの動作をテストします。独自の環境をセットアップし、ワークフロー エンジンがどのように反応するかを確認します。これらのテストは単体テストと呼ぶには大きすぎますが、それでも自動化されたテストです。
このアプローチは些細なケースでは機能するようですが、実際のワークフローで使用する価値があることを証明する必要があります。
これが私が使用するソリューションです。これは、単一のアクティビティの実行を可能にし、パラメータの受け渡しを簡素化し、ワークフローまたはアクティビティが完了するまで呼び出し元のスレッドをブロックし、例外があれば変換/再スローする、ランタイムの単純なラッパーです。私のワークフローはカスタム ワークフロー サービスを介してのみメッセージを送信または待機するため、サービスをモックアウトして、ワークフローから特定のメッセージを期待し、特定のメッセージを投稿することができます。ここで、WF の実際の単体テストを行っています! テクノロジーの功績は、マイケル・ケネディにあります。
単体テストを行う場合、現時点で SharePoint オブジェクトをモックできるツールはTypemock Isolator だけです。
ところで、Richard Fennellはここでワークフローのモック ソリューションに取り組んでいます。
今日、K2 ワークリストを監視し、そこから特定のタスクを選択し、いくつかのデータを入力し、完了のためにタスクを送信するアプリケーションを作成しました。これにより、自動化されたテストを実行し、リグレッションを見つけ、ワークフローのさまざまなパスを人間が実行するよりもわずかな時間で実行できるようになりました。同様のプログラムを作成して、共有ポイントのふりをすることができると思います。
ワークフロー アイテム自体の単体テストに関しては、行ルールと処理ロジックのすべてを含む k2 から参照される dll があります。k2 ワークフロー自体にコードはありません。すべてこれらの dll から参照されます。これにより、単体テストを簡単に記述して、個々の行ルールをすべてテストできます。
K2ROM API (K2 blackpearl を使用している場合はおそらく SourceCode.Workflow.Client) を使用して、K2 ワークフローで自動統合テストを行いました。
基本的には、既知の Folio を使用してテスト サーバーでプロセスを開始し (GUID を生成します)、後で管理 API を使用して削除します。私は AssertAtClientActivity のようなヘルパー メソッドを作成しました (基本的には ProvideWorkItem を基準で呼び出します)。
IsSynchronous パラメータを StartProcessInstance、WorklistItem.Finish などに使用して、プロセス インスタンスが安定した状態になるまで関連するメソッド呼び出しが返されないようにします。
テストは遅く、失敗することもあります。これらは単体テストではありません。
他のシステムに対して単体テストを作成する場合は、おそらく K2 API をラップする必要があります。
Windows Workflow 4と、SharePoint 2010 の新しいワークフロー機能について検討してください。K2は必要ないかもしれません。