|
マイクロソフト プロダクト ディベロップメント リミテッド
ディベロッパー製品開発統括部テスティンググループ
テスト リード
橋本 芳昭
長年ため込んだ体脂肪を燃焼させるべくウォーキングでも始めようかと思う今日このごろです。
マイクロソフトの製品開発部門には「QAチーム」と呼ぶ組織があります。QAはQuality Assuranceの略。製品開発に伴うテストを専門に行っているテスト・チームのことです。テスト・チームは当然,製品の品質に関して最も詳しくかつ厳しく,その製品が出荷できる品質に達しているかを判断する責任を負っています。つまり,テスト・チームが最終的に承認しなければ,その製品の出荷はできないのです。では,このような責任を全うするために,具体的にどのように作業しているのでしょうか。 本連載の第2回となる今回からは,3回にわたってテスト・チームについて説明していきます。まず今回は,テスト・チームが行っている作業内容について,実際のVisual Studioの例にも触れながら,その概略を紹介します。次回の本連載第3回ではテスト・チームが効率的に作業するための工夫について,そして第4回ではテスト作業の定量的な評価方法についてお話しします。
テスト・チームの役割は,テスト計画の立案,実行,結果報告
(1)テストの計画を立てる また,これらの作業とプロジェクト全体のスケジュールを同期させるため,テスト・スケジュールの管理やテスト用資源(人員やハードウエア)の割り当て,といった管理作業も発生します。余談になりますが,Visual Studioのテスト・チームは,現在開発中のVisual Studio 2005だけでなく,Visual Studio .NET 2003や.NET Framework 1.1といった現行製品のサービス・パックなどについても,並行してテストしています。そのため,スケジュールやテスト用資源の割り当てに対しては,柔軟に対応することが要求されています。
設計やコーディングと同時にテストもスタート
テスト・チームが担当する各作業が開発工程のどの段階で発生するか,その概略を図1に示しました。このように,テスト・チームの作業は開発工程の初期から始まり,製品の出荷まで続きます。そのため,製品について一番詳しいのは,プロジェクトの初期段階ではプロジェクト・マネージャ,実装段階ではプログラマ,そして最終的に製品を出荷した後にはテスト・チームと,その製品について一番詳しい担当者が変わっていきます。 それでは,前述したテスト・チームの作業内容を具体的に説明していきましょう。
製品仕様とスケジュールを基にテスト計画を作成 その後,製品仕様書を基に,各テスターは担当分野に対するテスト仕様書を作成します。テスト仕様書には,担当分野のそれぞれの機能に対して,実施しなければならないテスト手順の詳細を記述します。これは,実際にテストするときの条件,環境,使用するテスト・データといった情報です。 また,この初期段階では,プログラム・マネージャやプログラマとともに,品質基準をどこに置くかを確認することも重要です。この基準に沿って,実際のテスト作業の優先順位,バグ報告の深刻度を決めます。
テスト手順を作成して実際にテスト このようにして不具合を発見するのですが,実際には生成物にバグがあって不具合が発生するだけではなく,テスト手順が原因となって起こる不具合もあります。そのため,テスト結果を評価し,テスト手順自体に問題があるのか,それともテストした生成物の機能にバグがあるのかを解析します。バグと判断できれば,後述するバグ管理データベースに報告し,テスト手順に問題がある場合にはそれを自ら修正します。テスト手順の実行が自動化されている場合には,自動化自体の問題かもしれないので,慎重に解析する必要があります。 前述したようにマイクロソフトでは,開発工程の中で,設計・実装・テストがほぼ同時に進行しています。このモデルを遂行するには,テスト対象となる生成物を,定期的に,かつ高い品質でビルドする仕組みが必要です。マイクロソフトでは,実際にそのようなシステムを構築しています。
マイクロソフトでは,ほぼ毎日のようにビルドが繰り返されます。ただし,新しい生成物が必ずしもテスト可能な品質に達しているとは限りません。そこで,毎回のビルド終了後にセットアップ・テストや生成物の妥当性テストが自動的に実行され,その生成物がさらに詳細なテストを実行するに耐えうる品質に到達しているかどうかが判断されます。 これらの初期テストで問題がなければ,テスト・チーム全体にその生成物がテスト可能であることが伝えられ,各テスターがそれぞれの担当分野の詳細なテストを実行していきます。テスターは,新しい生成物に対してプログラマがどの機能までを実装しているかその状況を見つつ,テスト手順を実行しています(図2)。 |