はじめに
ソフトウェア開発のライフ サイクル プロセス全体を通じて、ソフトウェアが正しく機能するかどうかを適切に確認するためには、さまざまなソフトウェアテストの実施が必要となります。こちらの記事では、そのなかでも重要な役割を持つシステム テストと結合テストに着目し、これらのテストの主な違いや、いつ、なぜ実行するかについて紹介します。
システムテストとは
・システムテストは、完全なビルドが機能要件と非機能要件に適合しているかどうかを確認するテスト工程です。「システム試験」または「総合テスト」とも呼ばれます。
・システム テストでは、システムがさまざまな環境で動作し、さまざまなソフトウェアやシステムと統合されることが保証されます。
結合テストとは
・結合テストとは、ソフトウェア アプリケーションのさまざまなユニット、モジュール、またはコンポーネントが結合されたエンティティをテストするソフトウェア テストの一種です。
・モジュール間のインターフェイスを確認し、これらのコンポーネントが統合されて相互にやり取りする場合に発生する可能性のある欠陥を確認します。
システム テストと結合 テストの違い
システム テストと結合 テストの例
例として、オンラインショッピングのテストを行う際には、以下のように実施します。
※システム テスト:システム全体の確認を行います。
1. バックエンドから製品ページにアイテムを追加し、DBの テーブルに正しく保存されているかどうかを確認します。
2. いくつかのアイテムをショッピング カートに追加し、これらのアイテムがDBの仮テーブルに正しく保存されているかどうかを確認します。
3. ショッピング カートからいくつかのアイテムを削除し、DB からも削除されているかどうかを確認します。
4. 支払い手続きを進め、DB でリアルタイムに支払いオプションやその他の詳細情報が更新されているかどうかを 確認します。
※結合テスト:さまざまなモジュール間の相互作用の確認を行います。
1. 検索バーを使用して製品を検索し、検索バーの文字種チェックを確認します。
2. Enterボタンを押した後に検索結果を確認します。仕様書と一致する場合、検索キーワードを変更し、結果をもう一度確認します。
3. 製品を選択し、製品の詳細ページを確認します。
4. “Add to Cart”を押下し、カートにアイテムを追加し、さらにいくつかのアイテムを追加して確認します。
5. ショッピングカートページで製品の詳細ページから送られるデータが正しいかどうか確認します。
おわりに
ソフトウェアの品質を保証するためには、ソフトウェアの開発ライフ サイクル全体を通じて、さまざまなテストが実行される必要があります。ユーザーのニーズに応え、またビジネス要件を満たす製品を作成するためには、システムテストと結合テストの実施が必要不可欠です。これらのテストを適切に実施することによって、ソフトウェアが重大なバグや欠陥を含んだままリリースされてしまうリスクを大きく軽減することが可能となるのです。
参考文献
2. What is Integration Testing?
3. Difference Between System and Integration Testing
4. System Testing Vs. Integration Testing: 6 Ways They Differ