システム開発プロジェクトで、単体テストが終了した後には、『結合テスト』という工程に入っていく。
結合テストは、機能と機能との連携について不具合を検出する工程だが、経験が少ないと悩むことも多いだろう。
・どんな観点でテストをすれば良いのか?
・どんなテストシナリオを作れば良いのか?
そこで、今回は結合テストの基本的な情報を記載したので参考にしてほしい。
目次
結合テストの目的
結合テストは、機能間の連携(インターフェース)について不具合を検出することが目的だ。
連携する機能によって、大きく2つのテストに分けられる。
内部結合テスト
サブシステム内の機能間連携について不具合を検出する。
外部結合テスト
サブシステム間や他システム間の機能連携について不具合を検出する。
規模の小さいプロジェクトでは、サブシステム間や他システム間の連携が行われない(改修しない)場合もある。
プロジェクトによっては、『外部結合テストを省略』という判断がされる場合もあるだろう。
結合テストの観点
結合テストは、前述したように内部結合テストと外部結合テストで確認する観点が異なる。
内部結合テストは、サブシステム内の機能連携の観点で確認し、外部結合テストは、サブシステム間や他システム間の機能連携の観点で確認していく。
共通して言えるのは、機能と機能を連携した結果(結合した結果)を確認するということだ。
画面を例にしてみよう。
画面では、『一覧画面から選択して詳細画面を表示する』といった画面遷移がよくある。
この場合、一覧画面から詳細画面に遷移する際に、詳細画面を表示するためのパラメータが一覧画面から渡されているはずである。
こういったパラメータを”画面間のインターフェース”と呼ぶため、結合テストではインターフェースを検証すると言える。
画面遷移は、サブシステム内の機能連携なので、内部結合テスト工程で確認するだろう。
確認する観点は『連携部分』なので、一覧画面から詳細画面を表示することができれば、結合テストは基本的にOKとなる。
他にも例を挙げてみよう。
サブシステムAの中で、
・画面遷移
・画面からバッチの起動
・バッチからバッチの起動
・サブシステムAからサブシステムBのデータ送信
・システムAからシステムBへのデータ送信
結合テストのシナリオの書き方
結合テストは機能間の連携(インターフェース)の不具合を抽出することが目的であるため、インターフェース部分に着目したテストシナリオを作成する。
基本設計段階で、インタフェース一覧や仕様書を作成していない場合は、結合テストのシナリオを作成する段階でどのようなインターフェースがあるのかを洗い出さなくてはならない。
テストシナリオとテストケースの違いに悩むかもしれない。
会社や組織によって定義が異なる場合があるが、一般的には下記のように定義されるだろう。
一連の処理(業務)を最初から最後まで通したもの。
テストケース
1つのシナリオで確認するポイント。
つまり、1つのテストシナリオで複数のテストケースを確認することになる。
テストシナリオの書き方の例を紹介する。
まずはイメージしやすいように”カレー作り”を例にしてみた。
テストシナリオ:カレー料理を作る
テストケース:
1.野菜を切る
2.野菜を炒める
3.肉を入れて炒める
4.水を入れて煮込む
5.ルーを入れて煮込む
もっと実務的な例を挙げてみよう。
テストシナリオ:受注情報を画面で確認する
テストケース:
1.受注情報の作成(バッチ間連携)
2.バッチの結果を一覧画面で表示(バッチと画面のデータ連携)
3.一覧から詳細の画面表示(画面間連携)
実際のプロジェクトでは、バッチ間連携と画面遷移を分けてテストをすることも多いが、上記のようなテストシナリオを設けてそれぞれのテストケースを確認するのが正しい姿だ。
結合テスト仕様書に記載すべき項目
結合テストを実施する際、結合テストの仕様書を作成するのが一般的だ。
テスト概要
いきなり細かいテストシナリオをツラツラと書くのではなく、結合テストでどのようなテストをしようとしているのかをざっくりと記載する。
テストシナリオ/テストケース
前述したように、どんなテストシナリオで、どのようなテストケースを検証していくのかを記載する。
また、どのようなデータを使うのかまで書いておくと、テストの準備をする際に悩まなくて済む。
テスト実施担当者
テストを実施する人。
テスト結果確認者
思い込みを防ぐためにも、テスト結果確認者は、実施者とは違う人が確認する方がいい。
テストスケジュール
各テストシナリオの実施スケジュールを記載する。
テストデータの作成や、テスト結果のレビュー日程も記載しておくと良い。
さいごに
結合テストの基本的な知識を紹介してきた。
結合テストは、機能間の連携(インターフェース)に着目して検証をしていくのだが、結合テストでの不具合抽出が不足していると、総合テストや運用テストで検出されてしまい、本番化に致命的な影響を与える場合がある。
また、本番化以降のトラブル要因となってしまう可能性もあるだろう。
テスト関係の記事はこちら。
コメントを残す