結合テストはシステム開発の下流工程で実施される、システム全体の品質を担保するための極めて大切なテストです。単体テストが完了したモジュール※1やコンポーネント※2を結合し、システム全体として設計した通り動作するかどうかを検証します。結合テストを行う際は、開発したシステムがユーザーの要件通りに稼働するか、実際にシステムを運用する視点から丁寧に行いましょう。詳しく解説します。
※2 コンポーネント:プログラミングにおける部品。関数などの処理単位であるモジュールが組み合わされているソフトウェアのこと
この記事の目次
1.システム開発の過程で行われるテストの種類とその役割
システム開発の過程で行われるテストは以下の4つのテストがあります。それぞれ説明します。
単体テスト
単体テストとは、システム内の個々のコンポーネントやモジュールを個別にテストすることであります。
その目的は、個々のコンポーネントやモジュールが設計通りに動作し、正しく機能するかの確認です。
結合テスト
結合テストとは、単体テストが完了した複数のコンポーネントやモジュールが組み合わさり、結合した際に、設計通りに動作するか検証するためのテストです。複数のコンポーネントやモジュール間のインターフェース※3やデータのやり取りや連携などについて確認します。結合テストは、システムの品質を確保するために不可欠です。このテストが不十分だと、異なるコンポーネント間で不具合が発生し、ユーザーがエラーや予期しない挙動に直面する可能性があります。このような問題を早期に発見し、リリース前に修正するための重要な工程となります。
運用テスト
運用テストとは、システムが想定された運用環境や使用条件・負荷のもとで正常に機能し、要件を満たすことを確認するためのテストです。
受け入れテスト
受け入れテストとは、ユーザーが開発されたシステムを使用して、要件や期待に沿った動作を確認するかを実装前に確認するテストです。具体的にはユーザビリティテスト、ユーザーインタフェース、ユーザーが実際の業務をシステム上で行うシナリオのテストを行います。
結合テストの目的は、単体テストで確認したモジュールやコンポーネントが設計した通りに連携して機能するか検証することです。単体テストがモジュールやコンポーネントの各部分における動作を確認するのに対し、結合テストではシステム全体として要件通りに機能するかを検証します。
2.結合テストはいつ、誰によって行われるか
結合テストはいつ、誰によって行われるのでしょうか。3つのポイントについて説明します。
作成されるコードを知っているチームの技術メンバー
結合テストは通常、作成されたコードの動作やシステム全体にどのような影響を与えるかを深く理解している開発チームのエンジニア(多くの場合は、システムエンジニアやテストエンジニア)によって行われます。システムの各部分が正しく結合し、予想される動作を確認します。場合によっては専門のテストチームや品質担当のエンジニアが担当することもあります。
依頼元
結合テストの依頼元はシステムのエンドユーザーです。エンドユーザーが実際に使用するシーンを想定して行われるのが一般的です。開発したシステムが想定通りに動作するのか、設計書通りの性能や機能を備えているかなどについて検証します。
開発のフローのどこで実施されるか
結合テストはシステム開発の下流工程で行われます。モジュールやコンポーネントのすべての単体テストの工程が完了した後に実施されます。また、結合テストは運用工程の前工程で行われます。結合テストではモジュールやコンポーネント間のインターフェースが正しく機能しているか、全体としてのシステムが期待通りに動作するかを確認します。
3.結合テストについて、依頼元はどこまで分かっている必要があるか
結合テストを行うに際して、依頼元はその目的を理解しておくと良いのではないでしょうか。結合テストの目的について、JSTQB(Japan Software Testing Qualifications Board)では、以下の5つを定めています。
・インターフェースの機能的/非機能的振る舞いが設計および仕様通りであることの検証
・インターフェース品質に対する信頼の積み上げ
・欠陥の検出(インターフェース自体、コンポーネントに内在、またはシステムに内在)
・欠陥がより高いテストレベルまで見逃されることの防止
引用:JSTQB『テスト技術者資格制度Foundation LevelシラバスVersion 2018V3.1.J03』)https://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018V31.J03.pdf
結合テストは、外注しているシステム開発会社からの指示に応じて、テストを実施するようにします。またテストにおいて発生した不明点や、テスト中に想定と異なる挙動があった場合は丁寧に外注先に共有する必要があります。
結合テストの結果は運用テストや受け入れテストのテストレベルにも影響します。発注者は結合テストの結果が、その後のテストで実施する工数や品質に大きな影響を与えることを理解しておくことが大切です。
4.よくある結合テストで発覚する設計ミス
よくある設計ミス
システム設計の過程でよくあるミスとしては、要件定義の不備、設計段階でのコミュニケーション不足、適切なテスト計画の欠如などが挙げられます。
これらのミスは、システムの性能や信頼性に影響を及ぼす可能性があります。要件定義の不備は、システムが要求された機能を満たさない結果を生み出す可能性があります。
一方、設計段階でのコミュニケーション不足は、開発チーム間の認識のずれをもたらし、結果的にはシステムの全体的な品質に影響を及ぼす可能性があります。また、適切なテスト計画が欠如していると、重大なバグが見逃され、システムの信頼性が低下する恐れがあります。
ミスを生み出さない工夫
設計ミスを避けるためには、明確な要件定義、開発チームやメンバー間の抜け漏れのないコミュニケーション、そして綿密なテスト計画が必要です。開発チームのスキル向上も重要な要素です。
定期的な研修や勉強会を通じて、最新の技術トレンドや開発手法を習得し、それを設計に反映させることで、ミスの発生を防ぎ、システムの品質を向上させることができます。これらの工夫を通じて、システム設計のミスを最小限に抑えることが可能となります。
特に結合テストでは、発注者と外注先とのコミュニケーションの齟齬を防ぐため、進捗状況の可視化と情報の共有が極めて大切です。具体的にはガントチャートや進捗管理用のツールなどを利用して効率的に管理を行うとよいでしょう。
ミスが起きてしまった際の対応
結合テストでミスが起きてしまった場合、その原因が上流工程の設計やプログラミングの工程に起因することがあります。特に結合テスト時に発覚したミスは、他の工程で発生するミスよりも影響が大きくなります。結合テストで発生したミスは、機能設計上で定義した要件を満たした詳細設計になっていない可能性があります。また、モジュールやコンポーネントが設計書通りにコーディングされていない可能性があります。
そのため、結合テストでミスが起きた場合は設計書とコーディングの両方を確認し、不具合の修正と解消が必要になります。さらに、結合テストでコーディングのミスが見つかった場合、開発のプロセスにも問題をはらんでいる可能性があります。そのため、問題の定義やエンジニアのスキル等についても見直しが必要になることがあります。
5.まとめ
本コラムでは結合テストのポイントについて解説しました。
結合テストでは、バグの発見や想定した処理イメージとの乖離を無くすことが極めて重要です。発注元に求められていることは、外注先では気づきにくい視点でテストを実施することです。ポイントは、専門性よりも実際の運用を想定して行うことができるかになります。結合テストは開発したシステムのユーザビリティにもつながるため、外注先に丸投げするのではなく、発注者側の視点で実施することがプロジェクトの成功にもつながります。
情シスナビでは、本コラム以外にも、情報システムの開発に関わるさまざまなコンテンツを提供しています。是非確認してみてください。