ソフトウェア開発において、成果物の品質を保証するために必須となるのが「テスト」です。
プログラマやシステムエンジニアなど、開発を担当している方は、テストが重要だと頭では理解していても、開発業務が忙しいあまりにソフトウェアテストの工程がおろそかになることもあるのではないでしょうか。
今回は、開発工程とテスト工程の対応関係を表す「V 字モデル」の考え方と各工程の概要を解説していきます。
また、ソフトウェア開発のスタイルによっては、テストを行うべきタイミングはさまざまですが開発に並行してテストを行うと、さまざまなメリットがあります。記事の後半では、開発に並行してテストをする「W 字モデル」という考え方をご紹介していきます。
- もくじ
1.V字モデルとは?
1‐1 V字モデルとは 開発工程とテスト工程の対応関係を表したもの
ソフトウェアの「開発」から「テスト」、「リリース」までの一連の流れにおける、開発工程とテスト工程の対応関係を表したものが V 字モデルです。
V 字の左側が「開発工程」を、V 字の右側が「テスト工程」を表します。
V 字の下の方へ工程が進みコーディングが完了すると開発工程は終了、V 字の頂点である「コーディング」を起点として、テスト工程へと移ります。
ソフトウェア開発の一般的な流れに「ウォーターフォール型開発モデル」があります。
ウォーターフォール型開発モデルでは、1つの工程が完了してから次の工程を進めていくという特徴があります。
具体的には、以下のような流れです。
ウォーターフォール(滝の流れ)になぞらえて、開発工程のことを「上流工程」、テスト工程のことを「下流工程」と呼びます。
このようにウォーターフォール型開発モデルでは、テスト工程は1つの工程として表されますが、実際は、要求定義からコーディングまで1つずつに対応したテストを実施していく必要があります。
そして、上流工程に対応したテスト工程を分割したものを「V字モデル」と言います。
1-2 V字モデルを取り入れるメリット・利点
V字モデルは、開発工程とテスト工程の対応関係をはっきりと表したモデルのため、各工程で何のテストを行うかが分かりやすいという利点があります。
開発工程とテスト工程の対応関係が曖昧な場合、テストによる品質の保証が難しいため、ソフトウェア開発を行う場合は開発工程とテスト工程を明確にしておくことが重要です。
そうすることで、どの段階でどの部分を、どれくらいの細かさでテストするのかが明確になり、テスト工程をよりスムースに進めることができるのです。
2.V字モデルの各工程と役割
この章ではV字モデルの各工程の役割について、簡単に解説していきます。
2-1 開発工程の各工程と役割
まずは開発工程の概要と役割について簡単にご説明します。
要求定義
要求定義とは、システムの発注者である顧客のニーズや、ソフトウェア搭載製品の企画者の要望を整理し、最終的に要求として定義することです。これによってソフトウェアの到達目標が明確になります。
基本設計
要求定義が決まった後は、基本設計を行います。要求項目を実現するために必要なソフトウェアの機能や構成などの基本的な使用をまとめる工程です。
基本設計では、要求をソフトウェアシステムとして実現できる方法にまで落とし込みます。
この段階でシステム全体の「基本設計書」と「機能仕様書」が作られます。
詳細設計
詳細設計では、基本設計で定義した仕様を基に、コーディングに必要な処理の詳細な仕様を決定します。詳細設計の範囲は機能ごとや、モジュールごとで定められます。決定された事項を仕様として記述すると詳細設計書が作成されます。
コーディング
詳細設計が完了後、きちんと意図した動作をするようにソフトウェアを作成します。
2-2 テスト工程の各工程と役割
開発工程後のテスト工程についてご説明します。
単体テスト
単体テストは、ソフトウェアの最小単位である「モジュール」ごとに行います。
主に詳細設計書どおりにモジュールが動くかテストし、コーディングされたソフトウェアの論理構造が適切か確認していきます。
結合テスト・機能テスト
結合テストでは、複数のモジュールを組み合わせてテストを行います。詳細設計で定義したモジュール間の連携方法が実現されているか確認していきます。
機能テストでは、組み合わせたモジュールを1つの機能としてテストを行います。内部構造ではなく、機能として正しい役割を果たしているかを確認していきます。
システムテスト
システムテストでは、個々のモジュールや機能を統合した状態で、要件定義の内容が実現しているかを確認します。製品を出荷(提供)する状態に近い形でテストをするので、発注者や企画者、ユーザーの立場から、さまざまな使い方を試して欠陥を検出します。
受け入れテスト
受け入れテストでは、対象のソフトウェアがユーザーの要求を満たしているのか公式に確認します。
行われるタイミングは基本的にリリースの直前でソフトウェアテストの中でも最後に行われることが多いです。
3.開発とテストを並行して進める「W 字モデル」とは
W 字モデルは、開発初期(要求定義や設計の段階)から開発フェーズとテストフェーズを同時に並行して進めていく考え方のことをいいます。
W 字モデルでは、2章で解説した V モデルを元に、開発の要求定義・設計・実装フェーズで意識的にテストプロセスを関わらせていきます。
すなわち、V 字モデルを発展させたテストスタイルといえます。
開発工程では、実装が完了していないとシステムを実際に動作させるテストはできないので、テスト担当者は「テストケースの準備」や、開発工程での「成果物のレビュー参加」などを行います。
そして、テスト工程では、開発側が、発見された不具合を修正する作業をテスト側と協力して進める必要があります。
W 字モデルは、「上流は開発、下流はテスト」のように分断するのではなく、「並走」して進めるということを表しているのです。
3-1 「W 字モデル」の利点
W 字モデルには大きく2つの利点があります。
1つ目は、テストエンジニアがソフトウェア開発の上流工程(要求定義や設計)から密に関わることができる点です。
開発当事者ではない第三者の目を通して確認することで、仕様・設計の抜け漏れ、矛盾が発見しやすくなり、早期に仕様の抜け漏れなどの問題を防ぐことができます。
これにより、開発工程から品質の向上にもつながります。
2つ目は、上流工程で不具合を発見しやすくなることによるコストダウンが期待できる点です。
上流工程で不具合を発見することで、作業の手戻りの発生を抑えることができるため、その分のコストが減少します。
3-2 「W 字モデル」の注意点
W 字モデルの導入は、利点もありますが一方で注意しておくべきこともあります。
W 字モデルの導入に失敗するよくあるケースは、「開発チームが現状の分析を行わずに、W 字モデルの導入に取り組んでしまうこと」です。
新しいことを始めるためには、まず現状を知ることが重要です。
そもそも、「V 字モデル」を実践できていない開発チームが、「W 字モデル」を導入しようとした場合、その開発はうまくいかないことが多いです。
W 字モデルの考え方を取り入れる前に、現在の開発やテストのプロセスがどうなっているのか、どんな問題があるのか、現状の問題の洗い出しを行う必要があります。
まず個々のプロセスを見直し、整理して、どの段階で何を実施すればいいのかを明確にしておきましょう。
また、W 字モデルに参画するテストエンジニアは、実物の無い設計段階からの問題を発見し、開発側に意見を伝えることが重要な役割です。
開発の初期段階で、仕様・設計の抜け漏れ・矛盾を発見することができなければなりません。
そのため、W 字モデルには経験豊富なテストエンジニアの導入が必要不可欠になります。
開発の初期工程での誤りが原因で発生する不具合の事例を多く経験しているであろう、プロジェクト経験が豊富なエンジニアを参画させることが重要です。
まとめ
今回は、ソフトウェア開発の流れとテスト工程の流れに関してご紹介しました。
ソフトウェアの「開発」から「テスト」、「リリース」までの一連の流れにおける、開発工程とテスト工程の対応関係を表したものが「 V 字モデル」です。
そして、開発初期(要求定義や設計の段階)から開発フェーズとテストフェーズを同時に並行して進めていく考え方を表したものが「W字モデル」になります。
ソフトウェア開発を行う場合は、この2つのモデルの特徴を把握した上で、適切なソフトウェアテストを行うことが重要です。
開発側とテスト側が力を合わせて品質の高いソフトウェアをリリースできるよう、工夫して進めていきましょう。