goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

開発の初めから順番に書いていってみる その86:結合テストテスト(1)テスト項目

2007-09-04 14:56:52 | 開発ネタ

 シリーズ「開発の初めから順番に書いていってみる」の続きです。

 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 (バックナンバーは、ここ 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の場合も、エラーの場合もあり)のチェックも必要です。




ということで、画面項目は挙がったこととします。
次回は、バグ票の話再びです。


この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« オブジェクト指向で開発の最... | トップ | 「年100万超の著作権使用... »
最新の画像もっと見る

開発ネタ」カテゴリの最新記事