シリーズ「開発の初めから順番に書いていってみる」の続きです。
設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
(バックナンバーは、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm)。
今回から、「結合テスト」についてです。
■単体テストとの違い
といっても、結合テストと単体テストの違いは、テスト項目くらいです。
そして、テスト項目の違いにより、バグ票が、複数の人の間で回ることがある・・くらいかな(単体でも、そー言うバグを見つけちゃうことがあるんだけどね)
で、そーなると、仕様変更がおこるっていうケースもあることかな・・
っていうことで、ここでは、単体と、結合で違いのある
・テスト項目
・複数人対象のバグ票など(あとIT2におけるIT1テストと構成管理)
・仕様変更
のお話を、何回かに分けてかきます。今回は結合のテスト項目について。
■IT1とIT2
結合テストでは、大きく2種類のテストをやることが多いです。
(場合によっては1種類や、もっと、多いテストがありますが)
1つは、モジュール間の結合テスト。
いままで、スタブだった、下位モジュールのテストを、実際のできあがったモジュールに変えて、テストを行います。
もうひとつは、画面や外部入出力からのテスト。
画面設計書など、外部設計のユーザーインターフェースの設計書をもとに、その内容が正しいかどうか確認します。
ということで、前者がIT1,後者がIT2となるはず・・・
なのですが、実際には、ごちゃごちゃになったり、プロジェクトによって違う分け方をしていたりします。
■テスト項目の基準
で、IT1の、下位モジュールとの結合テストの場合は、テスト項目は問題ないです。
単体のブラックボックステストと同じです。引数の同値条件(ないしは境界値)や例外条件によってわけます。
画面項目のテストケースですが、画面定義書に明記してあればよいのですが、そうでない場合や、そもそも、本来、項目においては、何に注意して考えるべきか?という話があります。
で、その画面項目のテストケースですが、JUnitによるテストファースト開発入門の91ページに、エラーの種類とテストの種類として、(画面項目に限らず)テスト項目の種類が挙がっています。
・制約値テスト
・限界値テスト
・例外処理テスト
・存在テスト
ただし、92ページから96ページに
・境界値テスト
・妥当性テスト
というのがこのほかに追加されています。
これらをまとめると、
・境界値・同値テスト
・入力制限テスト
・桁数・未入力
・字種(数字、漢字、記号など)
→SQLインジェクションテスト
・例外処理テスト
ということになります。が、ここに挙がっていないテストで
・項目間・操作間の組み合わせテスト
・画面間の項目の組み合わせ
・操作手順の組み合わせ
・操作手順における画面項目の組み合わせ
・2度うち、戻るボタンを使う場合
というのがあります。それぞれについて、ちょっと詳しく書きます。
■境界値・同値テスト
これは、引数の同値、境界値テスト同様、
・処理が変わってくる値の境界値テスト
・そもそも、入力可能範囲、範囲外のテスト
について、値をいろいろ設定して行います。
■入力制限テスト
入力可能な桁数以上の場合どうなるか、逆に未入力の場合どうなるかのテストです。
上記の境界値テストでもう、しれべているかもしれません。
あと、字種についてです。とくにWeb系で調べたいのは、エスケープ文字です。
たとえば、&も<(本当は半角)も、境界値、同値チェックでは、どちらもエスケープ文字で、同値なので、チェックは1つだけでいい。。っていうことで、&を選ぶと、このGooのブログでは困ります。
Gooのブログでは、&は、書いても大丈夫
<(本当は半角)は、書くとおかしくなったりすることあり。
で、>(本当は半角)とすると、修正するときに、<(本当は半角)
に直されてしまい・・(>_<!)
ということがあります。(なので、修正のときにめんどっちいので、ウィリアムのいたずらは>とかかず、<(本当は半角)としています)
このように、同値でも、エスケープ文字は、動きが違う場合があります。
とくに、チルダの解釈などが違うことがあるので、できれば、エスケープ文字は
全部調べたほうが、念のためかもお。。。
それと、漢字は必ず調べてくださいね(^^)
SQLインジェクションについては、ここのチェックではじける場合は、それもチェックします。
■例外処理テスト
サーバーが立ち上がっていない、DBが接続できない(立ち上がっていない)などの、例外的なテストです。
■組み合わせテスト
それぞれの項目では、適合する値なのですが、この値の組み合わせは、処理できないとかあります(ユーザーの権限が平社員のとき、役員会議事録は参照できない)。
このような、組み合わせに関して、おかしなことがおこらないかどうかをテストします。
このテストにおいては、1画面内での項目間の組み合わせもありますし、操作手順の組み合わせもありますし(ログインしないで、編集画面のURLをじか打ちする)、操作手順における、画面項目の組み合わせ(セッションに入っているので、ここの値は入力しなくて良いなど)もあります。
また、操作手順としては、同じ画面の2度打ち、戻るボタンで戻った場合のケース(OKの場合も、エラーの場合もあり)のチェックも必要です。
ということで、画面項目は挙がったこととします。
次回は、バグ票の話再びです。







