1分で分かる!システム開発における総合テストとは?
ジャバ―ド先生!こんにちは!
ことりん君こんにちは!どうしたの?
この前、イタチさんの件で結合テストのこと教えてもらったよね?
うん!イタチさん大丈夫だったかな?
結合テストはもう1回やりなおしたらしいよ!でも、今度はイタチさんから総合テストについても聞かれちゃって…。テストっていっぱいあって混乱してきちゃった…。
ことりん君おちついて。たしかにテストっていっぱいあるよね。でも、それは開発ということがただプログラミングするだけじゃなくて、品質がとても重要性ということを意味しているんだ。
たしかになんとなく開発ってプログラミングが重要っていうイメージがあったよ。
そうだね。要件定義、設計、製造、テスト、どれもが同じくらい重要ってことは覚えておこう。さて、イタチさんは総合テストをきっとやりたいんだね。
そうそう!総合テストでどんなことをやればいいのか…みたいなことを悩んでいたみたい。
たしか要件定義は「アプリケーションが実現しなければならない機能や、アプリケーションが達成しなければならない性能を定義すること」だったよね。それに対する確認ってこと?
そうだね。これまで単体テスト→結合テスト→総合テストと教えてきたけど、テストで確認することはレベル感が違うんだ。単体テストは、プログラムのもっとも細部を確認、結合テストは単体テストよりも確認レベルとしては少し粗め、総合テストはさらに大まかな確認 といった感じになるよ。
なるほど…。テスト全部が細かい項目を確認するわけじゃないんだね。
そうそう。単体テストで確認していることを結合テストで改めて確認するのはあまり意味がないことだし、結合テストで確認していることを総合テストで確認するのも意味がないよね。開発は時間に限りがある中での作業になるので、できるだけ無駄な作業は省いていかないと終わらないんだ。
たしかに単体テスト、結合テスト、総合テストで同じことをやっても、あんまり意味がなさそうだね。
これには前提があって、それぞれきちんとテストを終わらせてから、次のテストに進むことが大事なんだ。たとえば、結合テストが疎かな状態で総合テストに進んじゃうと、想定以上に不具合が検出されて、総合テストどころじゃなくなっちゃうからね。
よくわかったよ。ありがとう!
イタチさんによろしくね!
結合テストとは?結合テストの基礎知識
総合テストの業務内容
総合テストは、プログラミングしたものが、要件定義に記述した内容を満たしているかを確認するためのテストです。
総合テストは、より本番環境の運用を想定したテストを行います。環境やテストデータは極力本番環境に近いものを使用します。結合テストまでは問題がなかったとしても、環境の差異、あるいはテストデータと本番データの差異により、総合テストで検出される不具合もあるためです。
総合テストは主に下記のような観点でテストを行います。
パフォーマンス
システムの処理速度や処理時間などのパフォーマンスに問題はないか
運用・保守
バックアップなどが想定した時間内に完了するか
セキュリティ
第三者からの攻撃に耐えられるセキュリティとなっているか。権限などは適切に動作するか。
一部結合試験と重複する観点もあります。プロジェクトによって結合テストで行か、総合テストで行うか分かれることもあります。
いずれにしても総合テストは開発側で行う品質の最終確認の場です。請負開発の場合、総合テストが完了すると納品となるため、丁寧にテストを進める必要があります。
総合テストに対するエンジニアの関わり方
総合テストは下記の作業に分かれます。(主な流れは結合テストと同様です。)
- 総合テスト設計
- 総合テスト仕様書の作成
- 総合テスト環境準備
- 総合テスト実施
総合テスト設計は、要件定義書をベースとしてどのようなテストをおこなうか検討します。時間や費用に余裕があれば、考えられるすべてのテストを実施すべきですが、大抵のプロジェクトではリソースに限りがあります。そのため、重要度や影響を考慮しながらテストの範囲を決定します。
総合テスト仕様書の作成は、総合テスト設計で検討した内容をもとに、実際に確認する項目をまとめていきます。
総合テスト環境準備はテスト環境の整備として、テストデータの作成、テスト環境の整備を行います。なお、総合テストでは基本的に本番相当のデータで行います。
総合テスト仕様書の実施は、作成した総合テスト仕様書の項目を1つずつ確認していく作業です。総合テストで不具合を見逃すと、本番リリース後に問題が発生することとなります。単体テスト、結合テストも同様ですが、さらに慎重に、さまざまな視点でテストをすすめることが重要となります。