連載:VSTSで開発プロジェクトはこう変わる

第1回 Team Systemはココがうれしい

日立システムアンドサービス 酒井 達明
2006/03/08
Page1 Page2 Page3

■Team Edition for Software Developers

 開発者向けスイートであるTeam Edition for Software Developers(以下、For Developersと略す)では、静的コード分析、コード・プロファイラ、そして単体テスト機能などが利用可能である。

 静的コード分析としては、「PREfast」および「FXCop」という2種類のツールが統合されている。PREfastはアンマネージ・コードのC/C++向けの静的解析ツールで、メモリ・リークやリソース・リーク、バッファ・オーバーランなどの検出が可能である。

 一方、FxCopはマネージ・コード向けのコード分析ツールで、MSDNライブラリにて公開されているクラス ライブラリ開発者向けのデザイン ガイドラインに準拠したチェックを実施する。コードの解析を実行してみると、変数の命名規則や例外のキャッチなどで細かい指摘を受けた。


コード分析ツールFxCopによる解析結果の例
FxCopではガイドラインに準じたコーディングができているかをチェックできる。

 ガイドラインにあるルールに準拠することで、読みやすいだけでなく、品質の高いコーディングが可能だ。

 コード・プロファイラでは、アプリケーションの実行中に呼び出された関数の回数や実行時間を一覧することが可能である。これを活用することで、ボトルネック要因となり得る部位を特定しやすくなる。

 例えば、コード・プロファイラの実行結果により、1回の実行時間に200ミリ秒かかっているが1度しか呼び出されない関数と、1回の実行時間が20ミリ秒でも100回呼び出されている関数が存在した場合、後者の1回当たりの実行時間を改善することで、より大きなパフォーマンス向上効果が期待できると分析することができる。


コード・プロファイラによる解析結果の例
ここではアプリケーションの実行中に使用されたすべてのクラスおよび関数について、以下の5つの値を表示させている。これにより、クラスやメソッドが呼び出される頻度や実行時間を解析することができる。
  行われた呼び出しの合計数。
  機能実行の経過時間(ミリ秒)。
  カーネル実行時間を除いた、機能実行の経過時間(ミリ秒)。
  子機能を含む機能実行の経過時間(ミリ秒)。
  カーネル実行時間を除いた、子機能を含む機能実行の経過時間(ミリ秒)。

 特にこの機能は、大規模システムにおいてシビアな性能目標を達成するために実施されるチューニング工程において活用できる。

 そして、待望の機能といっても過言ではない単体テスト機能がFor Developersでサポートされている。これで本格的にVisual Studioでテスト・ファーストの開発が可能になった。

 ここで作成された単体テストは、Team Edition for Software Testersでも利用可能であり、テストの属人性を排除し、どの開発メンバーが担当しても同質のテストを実行することが可能だ。


単体テストの例
単体テスト項目を新規に作成後、生成されたスケルトンを編集して、テストを作成する。テストには、テスト対象となるメソッドの戻り値として期待される値と実際の値を比較して、テスト結果を評価するコードを記述する。このようにして実装した単体テストを実行すると、テスト結果ウィンドウに実行結果が表示される。
  テスト・コード。
  テスト実行の結果。

 このように、従来ならばサード・パーティ製のツールを組み合わせて利用していた開発環境が、Visual Studioに統合されたメリットは大きい。

 また、単体テストの結果を基にコード・カバレージを取得することが可能である。コード・カバレージは、テストの完了したコードの割合を示すだけでなく、テストが完了した部分と未完了の部分とでソース・コードを色分けして表示することで、テスト未完了部分をビジュアルに識別することが可能である。


コード・カバレージの表示例
コード・カバレージは、テストの完了したコードの割合を示すだけでなく、テストが完了した部分と未完了の部分とでソース・コードを色分けして表示する。
  テストが完了していない部分。
  テストが完了した部分。

■Team Edition for Software Testers

 テスティング・エンジニア向けスイートであるTeam Edition for Software Testers(以下、For Testersと略す)では、For Developersと同等の単体テスト機能に加え、Webテスト、負荷テスト、そしてこれらのさまざまなテストを体系的に管理する「テストケース管理」の機能などを提供している。

 Webテスト機能では、ブラウザでの実際の操作を記録しておき、それを再生することで、Webアプリケーションのさまざまな操作をシミュレートすることが可能である。また、記録した操作を基に、テスト・コードを生成することも可能である。


Webテスト機能の実行画面
ウィンドウ上部のペインには、呼び出されたURLおよびHTTPステータス、応答時間、転送バイト数が一覧表示される。下部のペインには、実際に呼び出されているページを表示することが可能である。

 エンタープライズ向けの機能として注目すべきは、やはり負荷テストである。

 従来のVS.NETでも「Application Center Test」という負荷テスト・ツールが提供されていたが、このテスト・ツールは1台のクライアントが複数のWebブラウザでの操作をシミュレートして連続した要求を出す形式の負荷テストであった。

 ところが、実際のWebシステムでは複数のコンピュータから同時にリクエストが送信されるものであるし、ユーザーが利用するネットワークの帯域幅やWebブラウザの種類やバージョンはそれぞれ異なるものである。Application Center Testではこうした現場の環境を再現することができなかったため、エンタープライズ向けの負荷テスト・ツールとしては機能不足であった。

 For Testersの負荷テストはこうした問題をクリアしたといえる。ブラウザのタイプやネットワークの帯域幅を「ミックス」という単位で任意に構成でき、実際の利用環境に近いテスト環境の構築が可能となっている。


負荷テスト機能の実行画面
この例では、クライアントを50セッション起動し10分間の負荷テストを実施した結果を表している。
  テスト対象にかけられた負荷(赤)
  秒当たりのリクエスト数(緑)
  平均応答時間(青)
  発生したエラーの累積数(オレンジ色)

 また、複数クライアントからの同時アクセスの環境を再現できる点もうれしい。ただし、これを実現するには「Visual Studio 2005 Load Test Load Agent」と組み合わせる必要がある。この製品のライセンス料はとても高価なため(マイクロソフトのプレスリリース資料によると、パッケージ製品の推定小売価格が75万円となっている)、1つの開発プロジェクトで何十台も用意することは、大半の企業にとって困難だろう。

 しかしながら、そうはいっても、従来のサード・パーティ製の負荷テスト・ツールと比較した場合それほどの価格差はなく、負荷テスト・ツールの製品市場全体から見ると高すぎるというわけではない。従って、ミッションクリティカルなシステムをターゲットとするのであれば、検証用に数ライセンス程度を用意する意義は十分にあるといえよう。

 ここまで紹介してきたように、従来はバラバラなツールを利用することで実現していた、エンタープライズ向けソフトウェアの開発における設計、テスト、管理の各作業がすべてVSTSで実現できるようになったことは、エンタープライズ開発現場に身を置く者として歓迎すべきことである。

 今回はTeam Editionの各エディションについて紹介したが、次回ではTeam Systemがシステムであるゆえんと、Team Systemを適用したチーム・モデルや開発プロセス、そしてTeam Systemをどのように運用すべきかなどについて解説したい。End of Article


 INDEX
  Visual Studio Team Systemで開発プロジェクトはこう変わる
  第1回 Visual Studio 2005 Team Systemはココがうれしい
    1.Visual Studio 2005 Team Systemとは何か?
    2.Team Edition for Software Architects
  3.Team Edition for Software Developers/Team Edition for Software Testers
 
インデックス・ページヘ  「Visual Studio Team Systemで開発プロジェクトはこう変わる」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間