開発プロセス

開発プロセスとは、ソフトウェア開発における一連の活動や手順のことです。
ソフトウェアの開発を体系化したものとして、ソフトウェア開発ライフサイクル(以下、SDLC)があります。
SDLCは、設計・開発・テストなどの工程を通じて、効率的かつ高品質なソフトウェアを作成するために定められたプロセスの体系です。
このライフサイクルは、ソフトウェアの構想段階からリリース後の運用・保守に至るまでの各フェーズで構成され、それぞれのフェーズには特有のタスクが含まれます。

JSTQBのシラバスでは、SDLCとして以下が紹介されています。

SDLCは、テスト活動の以下に対して影響を与えます。

テストアナリストの関与

テストアナリストが関わるタイミングや関わり方、必要な時間、利用可能な情報、期待される内容は、使用するSDLCによって異なります。
テストアナリストは、他の関連組織に提供する情報の種類を理解しておくことが重要です。
JSTQBのシラバスには、以下のように提供先と提供する情報が記載されています

前述している通り、テストアナリストが関与するタイミングや内容はSDLC事で異なります。
テストアナリストが各SDLCで関与するタイミングや内容を各SDLC毎に記載します。

シーケンシャル開発モデル

シーケンシャル開発モデルとは、ソフトウェア開発プロセスを一連の順序にして工程で分けて進行する方法です。
各工程は明確に定義されていて、前の工程のすべての成果物と活動が完了するまでは次の工程(フェーズ)に移行しません。

次の工程に移行することをステップ移行といい、一般的にはドキュメントやソースコードなどのチェックを行う審査があります。 V字モデルは以下の図のように、オレンジ色の工程が上流工程で、青色の工程が下流工程を示しています。

V字モデル

シーケンシャル開発モデルでは、要求分析が完了したら次の工程である要件定義を実施します。
要求分析には受け入れテスト、基本設計には結合テストと設計に応じてテストレベルが異なります。

ソフトウェア開発ライフサイクルの早い段階(要件定義や設計段階など)でテスト活動を行ってフィードバックを行うことをシフトレフトテストといいます。
このアプローチを行うことで、欠陥やインシデントを早期に発見・修正して、後ろの工程で発生する修正コストやリスク軽減できます。

シーケンシャル開発にはWモデルがあり、それは従来のV字モデルで課題となっていた「手戻りが困難」「テスト活動が後ろの工程に集中」などの問題を改善するためのモデルです。
このモデルでは、シフトレフトテストなどのアプローチを活用し、開発工程とテスト工程を密接に連携させます。
各開発段階に対応するテスト活動を並行して進めることで、欠陥や問題を早期に発見し、品質を保証しながら効率的に開発を進めることが可能となります。

システムテストでは、プロジェクトの開始から計画が始まり各プロセスの開始時期は以下になります。

シーケンシャル開発モデルでのテストアナリストの役割

シーケンシャル開発モデルでは、テストアナリストがシステムテストを担当することが多くなります。
システムテストでは、プロジェクト計画と同時にシステムテストの計画をはじめ、システムテストが完了するまでテストマネージャーがモニタリングとコントールします。

テストアナリストは、以下のように対応します。

1

テスト分析・設計

要件定義に基づいて実施すべきテストを分析し、具体的なテストケースやテストシナリオを設計します。
テスト計画書に基づき、テストに必要な工数を見積もることで、テストスケジュールの詳細な調整や実行計画の策定を支援します。
このプロセスで作成されたスケジュールは、プロジェクト全体の進行スケジュールに影響を与える可能性があるため、テストアナリストには正確な分析力と協調性が求められます。

3

テスト実装

システムテストを実行するためには、テストを行う環境が必要です。
この環境構築はシステム設計時から開始する場合もありますが、コーディングやコンポーネントテストと同時に開始することも多いです。
そのため、システムテスト環境の準備がシステムテスト実行の開始数日前まで続くこともあり、スケジュールが不十分になるリスクもテストアナリストは考慮して進めます。

4

テスト実行

テスト実行するには、テストの開始基準と終了基準の事前条件を定義して、その条件を満たす必要があります。
条件を満たした場合にテストを開始することができますが、必要に応じて事前条件を免除する場合もあります。
テストの開始基準の事前条件は、リソースの可用性、テストウェアの可用性、テスト対象の初期品質レベルなどです。
テスト実行の事前条件にコンポーネントテストや統合テストの終了基準が満たされている必要があります。

5

テスト完了

テストの終了基準の事前条件には、テストケースの結果(達成されたカバレッジレベル、未解決の欠陥数、欠陥密度、テスト結果など)や、テスト計画で計画されたテストが計画通りに完了したことなどがあります。
システムテストの終了基準を満たした後に、システムテストの完了活動が実施されます。

システムテスト以外のテストレベルにもテストアナリストが関与することはあります。
テストレベルごとに目的や対象は異なり、開始基準と終了基準も定義されますので注意が必要です。

イテレーティブ・インクリメンタル開発モデル

イテレーティブ・インクリメンタル開発モデルとは、システムを小さな部分に分割し、その分割した部分ごとにソフトウェア開発プロセスを繰り返す(イテレーション)方法です。
イテレーションには、成果物と活動を含む工程が発生し、シーケンシャルで実施したり、工程を重複して実施します。

本開発モデルは、シーケンシャル開発のウォーターフォールよりも迅速(Rapid)に行うためのラピッドアプリケーション開発(RAD)のアプローチや複雑なシステムに対応したラショナル統一プロセス(RUP)のフレームワークがあります。

各イテレーションでは、静的テストと動的テストの両方が実行されます。 段階的な開発、繰り返しのプロセス、早期のフィードバック、リスク軽減などの特徴があります。

要件の変更が発生しやすいプロジェクトに向いていますのでユーザストーリなどテストが重要になります。
繰り返す作業が多いため、修正した機能と影響する機能にはリグレッションテスト(回帰テスト)が必要不可欠で、リグレッションテストを自動化することで効率よくテストを実施することができます。

イテレーティブ・インクリメンタルでは、以下のように小さな部分に分割したのを1つのイテレーションとして分割した分繰り返して実施します。
要件定義、設計、開発、テストの各活動をアクティビティといいます。

V字モデル

図のテストには、テスト分析、設計、実装、実行が含まれています。
そのため、イテレーションごとにテスト分析、設計、実装、実行を行います。

イテレーティブ開発モデルとインクリメンタル開発モデルでは、アクティビティの順序は変更可能でアクティビティを省略することもできます。
アクティビティはイテレーションごとに行い、プロジェクトの開始時に計画を立てて、終了時にタスクを完了させます。

テストアナリストは、イテレーションやインクリメンタルな活動中に、よりインタラクティブな役割を担います。

ハイブリッドモデル

ハイブリッドモデルとは、シーケンシャル開発モデル、イテレーティブ開発モデル、インクリメンタル開発モデルなどのSDLCを組み合わせて使用します。
それにより、シーケンシャル開発モデルのステップ移行を取り入れつつ、イテレーティブ開発モデルの繰り返しのサイクルを合わせます。
繰り返しのサイクルを取り入れつつ、各サイクルの中でV字モデルのように計画、設計、実装、テストを行います。
顧客の要件が変化することを前提として、柔軟に対応することができます。

アジャイルソフトウェア開発

アジャイルソフトウェア開発は、ソフトウェア開発の手法で世の中の変化に柔軟に対応します。
そのため、ステークホルダーと密な関係を気づいていくことが大切です。
前述したイテレーティブ・インクリメンタル開発モデルでスクラム・カンバン・エクストリームプログラミングなどがあります。

イテレーションは、2~4週間と短いサイクルで、各イテレーションの成果物と活動が完結して次のイテレーションを開始します。
テストはイテレーティブモデルと同様に進行し、開発活動とさまざまなテスト活動が重複して行われます。

テストマネージャは、直接的なマネジメントではなく、技術的な専門家またはアドバイザとして実施します。

テストアナリストの役割が定義されていないことが多く、ドキュメントの作成も最低限になっています。
開始時点で、テスト活動を実施して定期的にコミュニケーションを実施することが大切です。

スパイラルモデル

スパイラルモデルとは、リスクを管理しながらシーケンシャルやイテレーションなアプローチで行うソフトウェア開発手法です。
プロジェクトの早期にプロトタイプを使用し、ビジネス優先度とテクニカルリスクに基づいて開発の順番を選択します。
プロトタイプをテストして未解決の技術的問題を特定し、主要な技術的問題が解決していきます。

テストアナリストの役割

使用するSDLCに関わらず、テストアナリストは期待される関与の度合いとタイミングを理解する必要があります。
特定のSDLCに応じて、事前に定義されたロールモデルに固執しない活動と関与のタイミングを調整してソフトウェア品質に貢献します。