1分で分かる!システム開発における結合テストとは?
ねぇねぇジャバ―ド先生。この前「製造」について教えてくれたよね?
そうだね。製造がどうかしたの??
イタチさんが社内システムを開発したいって相談したのおぼえている??
うん。覚えているよ。
あの社内システム、完成したらしいんだけど、どうもバグが多いみたいなんだ。ボクもあんまり詳しくないからイタチさんの話がわからなかったんだけど、単体テストはしっかりやっているみたいだったよ。
ふむふむ。他に何か言ってた?
なんかね、各機能はたしかに設計書どおりに実装されているらしんだけど、1つにしたときに想定しないとかなんとか…
ことりん君、それはたぶん結合テストの実施がちょっと足りてないのかも知れないよ。
けつごうてすと??単体テストとは別のものなの??
そうなんだ。開発っていうのは1つの機能を小さい機能に分割するんだ。そして、その小さい機能毎に担当者がプログラミングや単体テストをするんだよ。でも、これだと分割された「小さい機能」しか、テストをしていないことになるよね。
あ、たしかにそうだね。分割する前の機能としてはテストをしていないことになるのか。でもさ、単体テストの結果がOKだったら問題ないんじゃないのかな??
たしかに単体テストをしっかりやっていれば、バグはかなり検出することができるんだ。それでも、全部のバグを取り除くことはかなり難しいんだよ。なぜなら、「小さい機能」と「小さい機能」をつなぎあわせたときに、はじめて分かることもあるからね。
う~ん。そうなのかぁ。
そもそもなんだけど、どれだけレビューしても設計書に不備があることもあるんだ。だから各機能が設計書通りだとしても、その機能をまとめて動かしたときにNGっていうこともあるんだよ。
設計書が間違ってると、プログラミングするエンジニアは気付けないかも知れないね…。
そうだね。だから、単体テストで全部OKだったとしても「小さい機能」をつなぎあわせた状態で確認を行うといった目的で結合テストを実施するんだよ。
単体テストで細かいバグをつぶした後は、機能を結合して確認する結合テストをやって、さらに品質アップするって感じだね。
そのとおり!イタチさんには、もう一回結合テストをやり直すように伝えてみればいいんじゃないかな。
そうするよ!ジャバ―ド先生ありがとう!
結合テストとは?結合テストの基礎知識
結合テストの業務内容
結合テストとは、分割された個々の機能を結合させた状態で、仕様を満たしているか、予期しない動作をしないかなどを確認するテストです。結合テストを開始するためには、関連する機能の単体テストが全て完了していることが前提となります。
なお、結合テストは、結合されたプログラムに対して、主に下記のような観点でテストを行います。
- 設計書に記載されている仕様通りの動作であるか
- あらかじめ定めた非機能要件をクリアしているか
- システム改修により、意図しない機能に影響がでていないか
- セキュリティに問題がないか
一般的なプロジェクトでは発生したバグを管理、分析します。発生したバグの原因がどの工程にあったかを調査し、必要に応じて対策を検討するためです。また、結合テストの段階で、想定されるバグ検出数よりも多いバグが検出されることがあります。この場合は、単体テストのケース不足とみなされ、再度単体テスト(の確認項目に対する洗い出し)まで戻ることもあります。
結合テストに対するエンジニアの関わり方
結合テストは下記の作業に分かれます。
- 結合テスト設計
- 結合テスト仕様書の作成
- 結合テスト環境準備
- 結合テスト実施
結合テスト設計は、基本設計書をもとにどういったテストを実施するか検討していく作業です。
結合テスト仕様書の作成は、これまでに成果物として作成してきた設計書等の資料をもとに、実際に確認する項目をまとめていきます。
結合テスト環境準備はテスト環境の整備として、テストデータの作成、テスト環境の準備を行います。なお、データ作成についてはデータベースを直接編集して用意するのではなく、アプリケーションを動かしてデータを作成します。
結合テストの実施は、作成した結合テスト仕様書の項目を1つずつ確認していく作業です。
一般的に、ある機能に対する結合テストの作成および実施は、製造工程とは別のエンジニアをアサインします。製造工程と結合テスト工程を同一エンジニアが担当すると、そのエンジニアの思い込みや勘違いに気付けないリスクがあるためです。