こんにちは。
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 サービスには対応していないなど、仕組み上、制約もありますので、御留意ください。)
Categories: Uncategorized
PingBack from http://www.biosensorab.org/2008/02/06/wcf-load-test-tool-%e3%81%8c%e5%87%ba%e3%81%be%e3%81%97%e3%81%9f/
LikeLike
WCF のテストについて、同僚のエバンジェリストである松崎さんのブログに記事が投稿されました。 # 待ってましたよ、松崎さん (^_^) ツールの入手先などの情報だけではなく、WCF のテストでの注意点とツールの意義、テストの作成手順や注意点も簡潔にまとめられたよい投稿ですので、ぜひご覧ください(^^)
LikeLike
以下、このツールを日本の開発者の方が使用される際の留意点を記載します。
まず、アイテムテンプレートである
C:Program FilesMicrosoft Visual Studio 9.0Common7IDEItemTemplatesCSharp1033WcfUnit9.zip
のファイルを
C:Program FilesMicrosoft Visual Studio 9.0Common7IDEItemTemplatesCSharp1041
の中にコピーして、Visual Studio コマンドプロンプトを管理者権限で起動して、
devenv /setup
を実行してから使用してください。(これでアイテムテンプレートが表示されるようになります)
また、Visual Studio 2008 で使用する場合には、あらかじめテストプロジェクトを作成してから [WCF Test] を作成してください。(この順番で実施しないと、テストプロジェクト作成時に、旧バージョンの Microsoft.VisualStudio.QualityTools.UnitTestFramework を作成しようとしてエラーが発生します)
その他、テスト作成後に WCFTest1.Custom.cs の ChannelFactory の生成 (new) の処理をバインディング方法などにあわせてカスタマイズする処理については、付属のマニュアルに記載されている通りです。
なお、これら設定は、もうしわけありませんが自己責任で実施してください。(本来は英語環境で使用するツールですので、その点はご了承ください)
出力されたトレースからテストを作成できるという非常に強力なツールですので、きっとカットオーバー後のトラブルシュート (不定期にしか発生しないエラー) の追跡などでも活躍することと思います。
LikeLike