システム開発における結合テストとは?必要な観点とシナリオの書き方も解説
システム開発におけるテスト工程のうちのひとつである、結合テスト。この工程では、どのようなことをテストするのでしょうか?今回の記事を読んでいただくことで、以下のことがわかります。
- 結合テストとは何か
- 結合テストに必要な観点
- 結合テストのシナリオの書き方
- 結合テスト・単体テスト・総合テストの違い
システム開発における結合テストとは各機能のつながりに不備がないか確認すること
結合テストとは、単体テストで各機能個々の不備がないことを前提に、各機能のつながりに不備がないか確認することです。 つまりシステム開発の工程における順番としては、単体テストの次におこないます。 結合テストは各テストの範囲が狭いので、不備の発見がしやすいです。 それゆえに、結合テストで不備をしっかり見つけておくことで、後の工程の手戻りを防げます。 結合テストは、テスト工程の中でも重要な立ち位置です。 とはいえ、全ての機能のつながりのテストをすることは現実的ではありません。 あくまでコストや納期、品質のバランスの観からテスト項目を選定する必要があります。 では、結合テストの各項目について見ていきましょう。
機能テスト
機能テストとは、システムの機能が仕様通りに動作するかテストすることです。 ECサイトを例に挙げると、「会員登録ができること」や「商品購入ができること」を確認します。 ここで不具合を見つけておくことで、後の工程である総合テストや受入テストでの手戻りの可能性を減らせます。
疎通テスト
疎通テストとは、システム間での疎通が成立するかどうかを確認することです。 具体的には、「システムA」と「システムB」という2つのシステムがある時に、システムAからシステムBにデータを送ったり、システムBからシステムAにフィードバックできたりするかなどを確かめます。 この疎通テストも機能テストと同じく、後の工程での手戻りの可能性を減らすための重要な工程です。
性能テスト
性能テストとは、実際のユーザーの利用に耐えられるかをテストすることです。 例えば、同時アクセス数を増やしシステムに負荷をかけてもレスポンスが想定時間内に返ってくるかなどを確かめます。
回帰テスト
回帰テストとは、システムの改修を行っていない部分に不具合が発生しないか確認することです。 システムが複雑になるにつれてこのようなリスクが高まるため、回帰テストがより重要になります。 全体の仕様に基づいた挙動をするかテストするのが理想ですが、それは現実的ではないため、実際にはある程度影響が出そうな範囲に絞ってテストをします。
セキュリティテスト
セキュリティテストとは、悪意のあるユーザーにシステムが攻撃されても大丈夫かどうかチェックすることです。 実際にパラメータに対して攻撃コードを入れて実行します。
ユーザビリティテスト
ユーザビリティテストとは、ソフトウェアで実際に業務をおこなったり、シナリオを想定してユーザーの操作感や使用感などを確かめたりすることです。 ただし、結合テストにおけるユーザビリティテストは、あくまでシステムの一部の機能のテストしかしないため、総合テストの段階で改めてユーザビリティテストをし直す必要があります。
システム開発における結合テストに必要な観点は内部結合テストと外部結合テストで異なる
結合テストは、さらに「内部結合テスト」と「外部結合テスト」に分けられ、それぞれで確認する観点が異なります。 内部結合テストは、システム内の機能連携の観点で確認し、外部結合テストは、システム間や他システム間の機能連携の観点で確認します。 例えば、「一覧画面から項目を選択して詳細画面を表示する」という画面遷移は、システム内の機能連携なので、内部結合テストで確認します。 一方で、「システムAからシステムBへのデータ送信」という動作は、他システムとの間の連携においておこなわれるので、外部結合テストで確認します。 内部結合テストと外部結合テストに共通するのは、どちらも機能と機能を連携した結果(結合した結果)を確認するということです。 結合テストでは、これらのような観点が必要になります。
システム開発における結合テストのシナリオの書き方
まずテストシナリオとは、一連のテスト工程のこと。 結合テストは各機能間のつながりに不備がないかどうかをチェックするものなので、テストシナリオを書く前に、システム内にどのような機能連携が生じるかを洗い出す必要があります。 その後に、それが1本のテストシナリオになるように並べます。 「電車に乗る」という行為を例に挙げてみましょう。 「電車に乗る」という行為がテストシナリオならば、各機能連携は「切符を買う」「改札を通る」「ホームに行く」「電車に乗る」といった具合です。 結合テストのテストシナリオは、あくまで各機能のつながりの不備を見つけ出すことが目的なので、システム全体のつながりについて考慮する必要はありません。
結合テスト・単体テスト・総合テストの違い
結合テスト・単体テスト・総合テストは、一連の流れになっています。 おこなう順番は、単体テスト→結合テスト→総合テストです。 まず、単体テストによって、各機能に不備がないかどうか確認します。 そのうえで、結合テストでは、各機能のつながりに不備がないかチェックします。 そして、総合テストの段階では、システム全体が正常に動くかどうか確認。 つまり、これらはテストをおこなう範囲が異なるのです。 先におこなうテストほど細かい範囲をチェックします。 なぜなら、細部から見ていった方が、不備を見つけやすいからです。
今回の記事のまとめ
以上、システム開発における結合テストについてお話させていただきました。 結合テストは、システム開発におけるテストの中でも、後の工程がスムーズに進むかどうかを左右する大切な工程です。 納期やコストなどの制約はありますが、できる限り入念にこなさなければなりません。 結合テストを担当される場合は、今回の記事でお話したことを念頭に入れていただきたいです。