ライフサイクルを通じてテストの役割と品質を強化し、コストを削減するとともに迅速な IT/ビジネスを実現する
Visual Studio Team System ビジネス バリュー ホワイトペーパー
November 2005
日本語版最終更新日 2006 年 12 月 7 日
最新の情報については http://msdn.microsoft.com (英語) を参照してください。
目次
はじめに: 品質を安定させるための戦略
テストを発展させる 2 重の取り組み - 開発者に準備させて、テスト担当者を補完する
テスト担当者を対象とする - 次の段階へ進む
テストに伴うアーキテクトの役割
開発者とテスト担当者を調整するためにモデル、設計、変更、および不具合を制御する
まとめ: 優れた品質によるメリットを得る
はじめに: 品質を安定させるための戦略
アプリケーション開発ライフサイクルの初期段階で高品質なコードを作成して、それを利用できる企業は、コストを大幅に削減しています。本番稼働中、または本番稼動前にコードを修正するためにかかる費用は、開発中または単体テスト中にコードを修正する費用に比べて 10 倍から 100 倍にもなります。それにもかかわらず、初期段階で頻繁にコードをテストすることに関する対策は、いまだに不十分なままです。コード構築中の開発者はたいてい、 "単にテストをしました" という状態であるため、今後の本番稼動期間に莫大な、場合によっては法外な費用がかかることになります。 開発者とテスト担当者間での伝達は、仮に管理されていたとしても不十分であることが多く、多くの場合グループ間の調整もほとんどありません。
したがって、開発者が簡単に採用できる方法で、そして (企業戦略の一部として存在する) 品質保証および品質管理の担当者への移行を効果的に行うことができる方法でテスト機能を導入することには意味があります。企業の品質への取り組みを監視する独立したテスト組織がない場合は、開発者側でできるだけ早い時期に整合性を持って、より効果的なプロセスとテスト戦略を実行できるようにすることがますます重要になってきます。このような状況では、開発者がコードの不具合と実装の間における最後で唯一の頼りになる存在です。開発者は、機能的な問題を発見しパフォーマンスの最適化に取り組む、最後のハードルとなります。
さらに、モデリング、設計、および変更管理、およびテストによる不具合トラッキング ツール間での調整の欠落もまた、アプリケーションの品質に影響します。不十分なモデリングや設計により、アプリケーションがより脆弱になります。テストや品質保証に関して変更管理や不具合トラッキングを完全に行わないと、壊れたコードがテストされずに発見されないままになる状況が発生し、アプリケーション障害やパフォーマンスの低下につながる可能性があります。
このホワイトペーパーでは、初期の段階での頻繁な品質保証および品質確認について、マイクロソフトの Visual Studio Team System 製品のリリースとの関連において、まず最初にコードを作成する開発者の観点から、そしてテスト担当者の角度から考えます。次に、品質ライフサイクル全体における要素として、モデリング、設計、バージョン管理、変更管理、および不具合トラッキングに関連する部分の役割を包括的に含むように拡大して考えます。
Top of Page
テストを発展させる 2 重の取り組み - 開発者に準備させて、テスト担当者を補完する
Microsoft の Visual Studio Team System (VSTS) は、2 つの観点からテストに取り組んでいます。それは、開発者が行うべき作業の一つである「開発者が中心となって行うテスト」 (Visual Studio Team Edition for Software Developers でサポート) と、テストの作業責任(役割)をもつ品質保証や品質管理担当者が行う「テスト担当者が中心となって行うテスト」 (Visual Studio Team Edition for Software Testers がサポート) です。
テスト機能を開発環境の一部として組み入れるメリットは、ツールが統合されていなければ手間がかかるであろう単体テストやその他の手法を、自然な形で取り組むことができるように彼らのアプローチをシフトしていくことが容易である、ということです。また開発ツールは、コード作成と密接に関連していて、開発者がコードを構築するために毎日使用しているため、このように変更する可能性がより高くなります。より優れた品質を持つコードに関する開発者の行動に変化をもたらすことは、費用効率が非常に高く、早ければ早いほど効率が良くなります。これはなぜかというと、以前に述べたように、問題の発見および修復が早ければ早いほどプロジェクト全体にかかる費用は少なくなるためです。
たとえば、事前に単体テストをより整合性を持って、そして頻繁に繰り返して行うことにより、後の開発フェーズ (今後のシステム テストやシステム統合テストなど) においてコードの品質がより優れたものになります。これは、テスト担当者が不具合が多いコードを実行する時間を減らし、コードの不具合や効率の悪さが本番稼動時まで残ってしまい、システムの不稼働時間を長引かせたりパフォーマンスを低下させたりする可能性をより低くすることを指します。Visual Studio Team Edition for Software Developers の開発者向けに扱われるテスト機能には、単体テスト、コード カバレッジ (テストが行われたコードと、まだテストが行われないまま残っているコードを測定して表示させます)、そしてコード プロファイリングなどが含まれます。
また、Visual Studio Team Edition for Software Developers の機能は、コード作成、動的および静的分析、プロファイリングとコード カバレッジをカバーします。静的分析ではマネージおよびネイティブ コードに対するサポートが提供されます。コード プロファイリングにより、シーケンス ビュー、オブジェクト割り当て、ファンクション ビュー、およびアプリケーション検証を視覚的に確認することができます。これは、開発者が前の作業の影響について明確な感覚を持ち、仕様と連動して作成されたコードの全体的な整合性を確認することを指します。統合された単体テストやテスト フレームワークとの密接な統合により、ライフサイクルの初期の段階でより優れた品質のコードを速やかに作成することを容易にして、費用を削減し、生産性を向上させます。また、OS 内のコア インストルメンテーションを公開するコード プロファイラも含まれています。たとえば、アプリケーションの実行中にメモリ リークが発生する場合、コード プロファイラがメモリ リークをキャッチして開発者に知らせます。
Top of Page
テスト担当者を対象とする - 次の段階へ進む
開発ライフサイクルの次フェーズに移動して、テスト担当者を対象として、開発から円滑に移行させるテスト機能を提供するメリットは、a) グループ間のよりよいコミュニケーション、b) コードの受け渡しおよび改善された品質に関する移行を行うときの調整のしやすさ、そして c) テスト成果物の表示および再利用です。

図 1 - 統合された単体テスト機能

図 2 - 統合された負荷テスト機能
通常、テストに関してより成熟した取り組みを持つ企業には、独立した品質保証 (QA) および品質管理 (QC) 組織があります。これはなぜ必要なのでしょうか。開発者は徹底的にテストをするという観点、専門知識、またはモチベーションを持ち合わせていない傾向にあります。開発者は自分自身でコードを構築したので、テストを行う客観性がありません (また、自分で作成したものの問題を "発見する" ことは非常に困難です)。開発者の主要なスキルと行動は、コードやツール、プロセスを構築することであり、開発者の考え方は、QA または QC 担当者とは異なるので、テストの専門知識もありません。開発ライフサイクルの後半でプロジェクトが既にスケジュールより遅れている時にテストが行われることがほとんどであるため、テストを行うモチベーションがありません。開発者は、プロジェクトを "スケジュール通り" に、またはスケジュールに近い状態にするために、良くも悪くも動機付けられます。開発者はコードを完了させることを余儀なくされるため、これらの動機により品質が犠牲になる場合がよくあります。したがって、開発者は徹底的にテストするモチベーションがありません。上記 3 つの理由から、最良の事例を有する企業は開発組織とは全く別のテスト組織を設置します。ただし、繰り返しの多い、モジュール性のあるコードから、ソフトウェアの実体を構成する "システム" へ移行するために、開発者はお互いに密接に関わっていかなければなりません。
開発者とテスト担当者には文化的な分裂がある場合がよくあります。 開発者はテスト担当者を、自分たちのアプリケーションの出荷を妨げるボトルネックと考え、テスト担当者は開発者を、良くて不注意である、最悪の場合には無責任で見かけ倒しであると考えます。したがって、グループ間でのより円滑な伝達を可能にするツールを開発者とテスト担当者の両方に提供することは、組織から見れば意味があることです。
Visual Studio Team System (VSTS) におけるテスト担当者向けの機能には、テストの作成と実行環境 (Test View と Test Explorer)、負荷テストと単体テストが含まれています。負荷テストは、(プロトコルベースのスクリプトによる) Web サービスと Web ページ、負荷パターン、およびしきい値監視を収集および提供するパフォーマンス カウンタに関連するパフォーマンスの問題に対処します。
VSTS によって開発者ロールとテスト担当者ロールを組み合わせることのメリットの 1 つに、一定の機能が両方の製品で利用できるという点があります。つまり、単体テストとコード カバレッジは Team Edition for Software Testers および Team Edition for Software Developers で利用できます。これにより、早い段階で頻繁に繰り返してテストを行うことができるため、単体テストを行う開発者およびテスト担当者の両者にとって有益です。コード カバレッジにより、開発者とテスト担当者はアプリケーションのテストが行われた部分とまだテストされていない部分を知ることができるようになります。また、コードとテスト リソースの優先順位付けも容易にします (ある部分のコードは不具合の危険性が高かったり、ビジネスにとってより重要なコードであったりして、リソースはまずその部分に集中しなければならないためです)。
Top of Page
テストに伴うアーキテクトの役割
Visual Studio Team Edition for Software Architects はアプリケーション デザイナ、論理データセンター デザイナ、システム デザイナ、および配置デザイナにより構成されます。Visual Studio Team Suite を購入しないと共有できない設計ドキュメントもありますが、購入したユーザーは設計およびモデルとテストを調整することができます。
開発者、テスト担当者およびアーキテクトのロールに向けた製品 (Team Edition for Software Architects/Developers/Testers) には、クラス デザイナ、Visio for Enterprise Architects、および Team Explorer (Team Foundation Server CAL ライセンスを含む) という機能があります。Visual Studio Professional Edition の機能も利用可能です。
3 つのロールすべてで利用できる機能をサポートする柔軟性を望む組織には、マイクロソフトは Visual Studio Team Suite を提示しています。設計モデルなどの要素をロールを超えて表示できるのは Suite 製品のみであることに注意するのは重要です。
Top of Page
開発者とテスト担当者を調整するためにモデル、設計、変更、および不具合を制御する

図 3 - Visual Studio Team System のレポートの例
Visual Studio Team System、特に Visual Studio Team Foundation Server を利用する開発者にとって最も有益なメリットの 1 つに、通常は異なるシステムと思われるもの (単体テストおよび他のテスト機能、変更、構築、および構成管理、バージョン管理、不具合トラッキング、モデリング) すべての機能が統合されていることです。VSTS によって、作業項目トラッキングと、たとえばソフトウェア変更や設定管理、および不具合トラッキングとが密接に統合されており、VSTS はアクティビティの調整を容易にします。チェックイン時に、開発者は異なる要素と特定の作業項目 (不具合、ビルド リリース ノート、または他の項目) とを関連付けることができ、その要素は更新されます。
Visual Studio Team Foundation Server は、その他の VSTS に、チームメンバーのコラボレーションのための基盤を提供します。実際に提供する機能には、作業項目トラッキング、プロジェクト ポータル、メトリック ウェアハウス、ソース コード コントロール、ビルド自動化、MSF プロセス ガイダンス、および統合サービスが含まれます。
プロジェクト管理および変更管理の主要な機能は、作業項目(Work Item)です。作業項目は、タスク、シナリオ、バグ、リスクなどの、管理される作業の種類を表します。作業項目は、(Team Foundation Server の標準的なクライアントとなる)Team Explorer 以外にも、Microsoft Excel または Microsoft Projectでも管理することもできます。作業項目トラッキングでは、コード成果物、不具合、および全体的なプロジェクト進行状況と通知に関する協調および報告の目的で、広範囲のリンクが行われています。これは、プロジェクト マネージャは開発ライフサイクル全体の情報にアクセスでき、データ ポイントを掘り下げて追求するよりも、より戦略的な活動に専念することができることを指します。
Top of Page
まとめ: 優れた品質によるメリットを得る
さまざまな開発支援機能我統合されていることにより、開発者とテスト担当者が受け取ることのできるベネフィットは、ビジネスにとってより「品質が優れている」コードを「すばやく入手」でき、またプロジェクト管理によりチーム間の「コミュニケーションがより強力」になり、ソフトウェア開発ライフサイクル全体を通じて作業の効率が良くなることです。VSTS は初めてリリースされた製品にもかかわらず、非常に高度な機能を提供しており、その使い勝手の良さのみならず、開発 (構築) フェーズだけでなく他のライフサイクルのフェーズとの調整も容易となり、ソフトウェアの品質を高め、コストを削減し、迅速なビジネスを実現します。
Top of Page
|