総合テスト(総合試験)とは、「システムが使い物になるかを確認して仕上げるテスト」のことです。
ST(System Test)や、PT(Product Test)と呼び名はいろいろだけど、なんて呼ぶかはその時次第。
単体テストで、モジュール(プログラムの部品)の1つ1つが動くか?を動作確認。
結合テストで、複数のモジュール(プログラムの部品)をつなげて、通しで動作確認します。
総合テストの1つ前の工程である、結合テストまで終われば、一つ一つの部品(プログラム)を合体させても、ある程度は正常に動く状態。
「ホテル予約システム」なり「在庫管理システム」なり、誰かが使える「システム(製品)」が仮完成していると言ってもよしです。
ただ、「仮完成で終わりでいいのか?」といえば、まだまだ確認ポイントはあります。
「完成ですよ」とお客様に出す前に、あらためて総合試験で確認。システムの完成度を高めます。
総合テストはシステムが使い物になってるかを確認
総合テストをひとことで言うと、システムが使い物になってるかを確認します。
単体テストと結合テストでは、普通に動くかを見る
総合テストのお話に入る前に、単体テスト・結合テストの話のおさらいをドラクエでします。
実際のドラクエの作りはわからないので、あくまでもイメージとしてとらえてくださいね。
例えば、冒険の書を作ってオープニングムービーが流れるまでに
- 冒険の書を作るプログラム
- オープニングムービーを流すプログラム
の2つのプログラム(モジュール)があると仮定します。
単体テストでは、「冒険の書を作るプログラムが、単独でちゃんと動くか?」/「オープニングムービーを流すプログラムが、単独でちゃんと動くか?」を、1つ1つ確認します。
結合テストでは、冒険の書を作るプログラムと、オープニングムービーを流すプログラムを合体。
「実際につなげて動かしてみて、ちゃんと動くか?」を確認します(たとえば、冒険の書をつくるときに決めた勇者の名前がムービーで表示されるよね的なことを確認)。
複数のプログラム(はじめから魔王を倒すまでに必要なすべての部品)をつなげて、「そもそも、ドラクエがプレイできるか?」を、結合テストで確認。
単体テストと結合テストは、「普通にシステムとして動かせるよね?」というのを確認します。
総合テストではドラクエを12時間プレイして突然ダウンしないかを見る
ただ、通しのテストを行ったとして、「完成でいいのか?」といえば、それは別問題。
「ドラクエ」は1つの製品(完成品)なので、使い物になるかを、ちゃんと見てやる必要があります。
たとえば、お母さんのいうことを聞かない悪い子が、夏休みに12時間ぶっ続けでドラクエをプレイ(ふつうよりも負荷をかけるという意味で、負荷テストって言ったりする)。
プレイしているうちに突然、フリーズしたら「おいおい(´▽`*)」ってなりますよね。
単体テストで1つ1つのプログラムは動くし、結合テストで部品を合体させても問題なかった。
でも、12時間プレイしただけでフリーズしたら、「製品」としてはダメダメです(実際に、何時間耐えられるのかはわからんけど(´▽`*))。
こんな感じで、「ふつうに使ううえで、起こりえるかも」的なことを、ピックアップ。
総合テストでは、システムが使い物になってるかをあらためて確認して仕上げる作業です。
総合テストのシナリオや確認ポイントは顧客の業務フローありき
総合テストで行われる内容(シナリオ)や、確認ポイントは顧客の業務フローありき。
業務フローは、「取引があったら、伝票を入力して紙に印刷。3日後に請求書を郵送」みたいに、とある会社のお仕事の日常だと思えばよきです。
フローのなかで、あり得ることをやってみたり
だれかが、ゲームをプレイするフロー(流れ)的には「12時間ぶっ続けプレイ」はありえるので、テストしなきゃダメです。
もし、どうやっても6時間くらいしか耐えられないのであれば、「このゲームは6時間で強制終了します。ご了承ください。」みたいに、書かなきゃダメです。
※実際の業務にたとえると、「入力した伝票を1度に紙に印刷できる枚数は、●件まで。●件を超える場合は、複数回に分けてください。守らんかったら、印刷終わるまで時間かかるけど待っといてね」みたいな感じかと。
全体のフローを見直したり、細かい抜け漏れを見る
あとは、「まさかとは思うけど、魔王を倒せずに、ゲームが終わるみたいなことはないよね?」のように、システム本来の目的に沿っていて、顧客の要望を満たしてるか(要件定義の内容通りか)を見たり。
細かいところで言うと、「装備迷うなぁ~。バニースーツも捨てがたいけど、パラメーター(能力値)的には・・・」みたいに、装備のいれかえを何度もしているうちに、おかしくなっちゃいました。
みたいに、実際にありえる操作(業務フロー)を想定して、システム全体に抜け漏れがないか?をテストしたりします。
総合テストが終われば晴れてリリース・納品される
そして、総合テストは1つのシステムとしての完成度を高めるテスト。
「要件定義に書いてあることや、フロー通りに動かしてみる」のように、プログラム目線というよりも、実際のお仕事目線でテストが行われるので。
「お客様がテストに立ち会って結果も見てる」というのも、よくある話(*´ω`)。
お客様が見てもOKならゴールは近く、無事に総合テストが終われば、晴れてリリース・納品されます(つまりは、世に出るシステムになる)。
※会社の文化によっては、さらに「受入テスト(ためしに、お客様自身の手で動かすテスト)」的な、もう1クッション置くための工程があったりもするけど・・・。そこは、適当に読み替えてくださいまし(-_-;)。
まとめ
総合テスト(総合試験)ときたら、「システムが使い物になるかを確認して仕上げるテスト」のことです。
いろんな負荷をかけておかしなことにならないか(負荷テスト)をやってみたり。
お客様の業務フロー(お仕事の日常、流れ)に沿って、システムを動かして問題ないかを確かめる。
1つのシステムが完成に向かう開発終盤のテストだと思ってくださいまし(-_-;)。
コメント