システム統合テストとは?
システム統合テスト (SIT) は、多くのサブシステムで構成されたシステム全体のテストです。
SUT (System Under Test) は、ハードウェア、データベース、ソフトウェア、ハードウェアとソフトウェアの組み合わせ、または、人間とのインタラクションを必要とするシステム (HITL – Human in the Loop Testing) などで構成されます。
ソフトウェアエンジニアリングやソフトウェアテストの文脈では、SITはソフトウェアシステムが他のシステムと共存しているかどうかをチェックするテストプロセスと考えられます。 SITは、これらのシステム間の必要な相互作用を全体としてテストします。
システム統合テストの必要性
SITの主な機能は、異なるシステム コンポーネント間の依存関係をテストすることであり、それゆえ、回帰テストはSITの重要な部分となります。
共同プロジェクトの場合、SIT は STLC (Software Testing Lifesycle) の一部です。一般的に、顧客が独自の SIT テストケースを実行する前に、ソフトウェア プロバイダによってプレ SIT ラウンドが実施されます。
アジャイル スプリント モデルに基づいて IT プロジェクトに取り組んでいるほとんどの組織では、各リリースの前に QA チームによって SIT ラウンドが実施されます。
スプリントのMVP (Minimum Viable Product)のリリースは、SITを通過したときに初めて行われます。
SITは、統合されたサブシステム間で相互作用が起こったときに発生する不具合を明らかにするために必要です。
システムには複数のコンポーネントが使用されており、それらを個別にユニットテストすることはできません。
システムにはいくつかのコンポーネントが使用されており、それらを個別にユニットテストすることはできません。たとえユニットが個別にテストされたとしても、サブシステムが相互に作用するときに発生する多くの問題があるため、システムに統合されたときに不具合が発生する可能性があります。 SITは初期段階で不具合を検出するため、後から修正する時間とコストを節約できます。
SIT の粒度
SIT は 3 つの異なる粒度で実施することができます:
(i) システム内テスト。
(i) Intra-System Testing (システム内テスト): 低レベルの統合テストで、モジュールを融合させて統一されたシステムを構築することを目的としています。
(ii) Inter-System Testing: 独立してテストされたシステムを相互に接続する必要がある、高レベルのテストです。 ここでは、システム全体の中で、相互に接続された2つのサブシステムのみを一度にテストします。
システム 統合テストの実施方法
SITを実施する最も簡単な方法は、データ駆動型の方法です。
まず、システム コンポーネント間でデータ交換 (データ インポートおよびデータ エクスポート) が行われ、その後、個々のレイヤー内の各データ フィールドの動作が検証されます。
ソフトウェアが統合されると、データ フローには以下の 3 つの主要な状態があります。
データ交換のパフォーマンスは、以下のステップを通じて、このレイヤーで調べることができます:
- BRD/FRD/TRD (ビジネス要求文書/機能要求文書/技術要求文書)に対して、このレイヤー内のデータ プロパティを検証します。
- XSD と WSDL を使用して Web サービス リクエストをクロスチェックする。
- いくつかのユニット テストを実行し、データ マッピングとリクエストを検証する。
- ミドルウェアのログを確認する。
#2) データベース レイヤー内のデータ ステート
このレイヤーで SIT を実行するには、SQL とストアド プロシージャの基本的な知識が必要です。
この層でのデータ交換のパフォーマンスは、以下の手順で調べることができます。
- 統合層からのすべてのデータがデータベース層に正常に到達し、コミットされているかどうかを確認します。
- BRD/FRD/TRDに対してテーブルとカラムのプロパティを検証します。
- ストアドプロシージャに処理データがないか確認する。
- サーバーログを確認する。
#3) アプリケーション層内のデータの状態
SITは以下の手順でこの層で実行できます:
- すべての必須フィールドがUIに表示されているか確認する。
- いくつかの肯定的および否定的なテストケースを実行し、データのプロパティを検証する。
注意: データのインポートとエクスポートには多くの組み合わせがあります。 利用可能な時間を考慮して、最適な組み合わせでSITを実行する必要があります。
System Testing Vs System Integration Testing
システムテストとSITの違い。
SIT(システム統合テスト) | システムテスト |
---|---|
SITは主に、個々のモジュールがシステム全体に統合されたときに、相互にどのように作用するかをチェックするために行われます。 | |
システムテストは、主にシステム全体が指定された要件を満たしているかどうかを確認するために行われます。 | |
ユニットテストの後に行われ、新しいモジュールがシステムに追加されるたびに行われます。 | |
それは低レベルのテストです。 | それは高レベルのテストです。 |
SITのテストケースは、システムコンポーネント間のインターフェイスに焦点を当てています。 | テストケースは、この場合、現実のシナリオをシミュレートすることに焦点を当てています。 |
System Integration Testing Vs User Acceptance Testing
ここではSITとUATの違いを説明します。
SIT (System Integration Testing) | UAT (User Acceptance |
---|---|
このテストは、モジュール間のインターフェイスの観点から行います。 | このテストはユーザーの要求の観点から行われます。 |
SITは開発者とテスターによって行われます。 | UATは顧客とエンドユーザーによって行われます。 |
ユニットテストの後、システムテストの前に行われます。 | これはテストの最後のレベルで、システムテストの後に行われます。 |
一般的に、SITで発見された問題は、データ・フロー、コントロール・フローなどに関連しています。 | UATで発見された問題は、一般的にユーザーの要求通りに機能していない機能のようなものです。 |
テストのレベルに関する以下の画像は、ユニットテストからUATまでの流れを明確にしています。
SIT の例
ある会社が顧客の詳細を保存するためにソフトウェアを使用していると仮定しましょう。
このソフトウェアは、UI に 2 つの画面 (画面 1 & 画面 2) があり、データベースを持っています。 画面1と画面2で入力された内容は、データベースに入力されます。
しかし、数年後、会社はこのソフトウェアが要件を満たしておらず、強化の必要性があることに気づきました。
しかし、数年後、このソフトウェアが要求を満たしていないことに気づき、機能強化の必要性が生じました。
さて、統合後のシステム全体に対して行うテストをSystem Integration Testと呼びます。 ここでは、新しいシステムと既存のシステムとの共存をテストし、統合されたシステム全体が問題なく動作することを確認します。
SIT テクニック
- トップダウン・アプローチ
- ボトムアップ・アプローチ
- サンドイッチ・アプローチ
- ビッグバン・アプローチ
トップダウン・アプローチとボトムアップ・アプローチは、一種の漸進的なアプローチです。
トップダウン アプローチ: トップダウンアプローチ
このアプローチでは、テストはアプリケーションの一番上のモジュール、つまりテスト ドライバーと呼ばれる UI だけから始まります。
基礎となるモジュールの機能はスタブでシミュレートされます。トップモジュールは下位モジュールのスタブと1つずつ統合され、後に機能がテストされます。
各テストが完了すると、スタブは実際のモジュールに置き換えられます。 テストが完了すると、スタブは実際のモジュールに置き換えられます。モジュールの統合には、breadth-first方式とdepth-first方式があります。
このアプローチの利点は、ドライバーが不要で、テストケースをシステムの機能性の観点から指定できることです。
このタイプのアプローチの主な課題は、下位レベルのモジュール機能が利用可能かどうかに依存することです。 実際のモジュールがスタブで置き換えられるまで、テストが遅れることがあります。
#2) ボトムアップ アプローチ:
トップダウン アプローチの制限を取り除きます。 これらのクラスターは、アプリケーションのサブ機能として機能します。 次に、テストケースの入出力を管理するためのドライバを作成します。
クラスターがテストされると、ドライバーは削除され、クラスターは次の上位レベルと結合されます。
このアプローチでは、スタブは必要ありません。
このアプローチではスタブは必要ありません。処理が上に行くほどシンプルになり、ドライバーの必要性が減ります。
しかし、このアプローチの限界は、最も重要なサブシステム、つまり UI が最後にテストされることです。
サンドイッチ アプローチ
ここでは、前述のトップダウンとボトムアップのアプローチを組み合わせています。
システムは、中間層であるターゲット層、ターゲットの上の層、ターゲットの下の層の3つの層で構成されていると認識し、テストは両方向から行われ、中間層であるターゲット層に集まります。
サンドイッチ テスト戦略
このアプローチの利点は、システムのトップ層とボトム層を並行してテストできることです。
この制限をなくすために、私たちは、スタブとドライバーを使用して、トップ、ミドル、ボトムの各層の統合を並行してテストするサンドイッチ テストを改良しました。
#4) ビッグバン アプローチ:
このアプローチでは、アプリケーションのすべてのモジュールが完全に準備できた時点で統合が行われます。
このアプローチでは、漸進的なテストとは対照的に、すべてが一度に統合されるため、問題の根本原因を見つけるのは困難です。
結論
この記事では、システム統合テスト (SIT) とは何か、なぜそれを実行することが重要なのかを学びました。
また、SIT が UAT やシステム テストとどのように異なるかについても説明しました。