WCF Load Test Tool が出ました
こんにちは。
Windows Server 2008 の RTM で盛り上がっている最中、地味なネタですみません。
エバンジェリストの長沢から公開の情報を教えてもらったのですが、WCF Load Test Tool と呼ばれるツールの開発が計画されており、このほど CodePlex より公開されました。
http://www.codeplex.com/WCFLoadTest
今まで、WCF のテストってどうするんだろう?と思われたことはないでしょうか。
このツールは、ざっくり書くと、WCF のトレースを元に WCF 用の単体テスト (Unit Test) と負荷テスト (Load Test) を作成できるというツールです。
従来(このツールがない状態)でも、Visual Studio 2005 / 2008 の従来のテストの機能を使えば、WCF との接続を専門におこなうテスト用のダミークライアントやダミーメソッドなどを作成し、このダミーに対して単体テストを作成し、さらにこの単体テストをシナリオにロードテストを作成することで単体テストや負荷テストは可能でしょう。
しかし、この方法では、わざわざテスト用のためだけにダミーを構築しなければなりません (テスト用の開発モジュールができます)。また、「じゃあ、開発したクライアントをそのまま使えば?」と思われるかもしれませんが、例えば、ブラウザから ASP.NET (UI) の処理へ、そしてそのバックエンドの WCF サービスへといった3層のアクセス構成などを連想して頂くとわかりますが、WCF 以外の余計な雑音が満載のテストで、いわば結合テストのような状況でしか検証ができません。WCF に DataSource を食わせたい (CSV ファイルなどからデータを読んでテストしたい) といった場合にもテストの設計が煩雑になるでしょう。
つまり、実開発を踏まえると、「WCFのテスト」としてはまだ不便、または非現実的な点がいくつか存在している状況でした。
このツールを使用すると、テスト用にこうした専用のクライアント開発などを必要としません。
手順詳細は、ダウンロードモジュール(zip)の中の「Usage Notes.doc」に記載されていますが、簡単に使い方のイメージを記載すると、
- 実開発で使われるクライアントのトレースを取得し (App.config でトレースを取得するように設定)
- このトレース情報を元に、必要な Soap のメソッドのみを抽出し (例えば、http://tempuri.org/IArithmetic サービスの Add メソッド, Sub メソッド, Mlt メソッド, Dev メソッドのうち、Add メソッドと Sub メソッドのみの処理を抽出、といった具合です)
といった手順でテストプロジェクトを作成/実行することが可能です (この方法の場合、テストプロジェクトから、クライアントアプリケーションを参照追加で見えるようにしておく必要があります)。
また、クライアントサイドではなく、サーバサイドのトレースからテストを作成することも可能です (この場合は、無論、テストプロジェクトからのクライアントの参照は必要ありませんが、Parse のため、サーバサイドの Contract の dll を参照する必要があります)。
あとはいつもの要領で、この単体ベースのテストからロードテストを作成すればOKです。
具体的な手段としては、上記をコマンドラインから実行することもできますが、Visual Studio 2005 / 2008 のテスト機能と統合されており、通常の Visual Studio 上からの単体テスト・ロードテストと同様に、ウィザードで設定できるというのがもう1つの魅力です (Visual Studio の作成可能なテストの一覧に、WCF Test というものが追加されます)。
これらの手続きによって、内部的には、トレースが Parse され、ダミーのクライアントプロキシも生成されたテストプロジェクトが自動生成されるといった仕組みです。
「Usage Notes.doc」には記載されていないと思いますが、勿論、DataSource にも対応しています。(但し、Duplex サービスには対応していないなど、仕組み上、制約もありますので、御留意ください。)