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

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

ユニットテストのテスト種類と方法について考える

2005-12-15 17:04:59 | 一人勉強会

 突然ですが(実は、あることが書きたい前置きでこれを書いているわけなのですが)、単体テストとして行われる、ユニットテストの方法について、考えてみたいと思います。

 ということで「JUnitによる、テストファースト開発入門」(ISBN 4-7973-2572-0)で、ユニットテスト方法のところをみてみる。

 なぜ、この本を選んだか?というと、目の前にあったからというだけで、深い意味はない。
 もっといい本があるかもしれないし、ないかもしれない。
 独断と偏見で(というか、運と、惰性と成り行きで)選んだ。




上記の本の、91ページの図「テストの種類とエラーの種類」の図では、以下の4つが、テストの種類としてあがっている。
・制約値テスト
・限界値テスト
・例外処理テスト
・存在テスト
 このうち、たぶん、例外処理テストは、なにかの間違いじゃないかな?実際、この図の説明文にあたる、P96では、「妥当性テスト」になっているし、ここに挙げる例としては、妥当性テストがただしいとおもう。

 ということで、以下に、それら4つのテストと、その内容を説明する
・制約値テスト-システムの制約から来るもの
        桁あふれのとき、どうなるか(エラーとして受け付けないか)とかなど

・限界値テスト-いわゆる、境界値テスト。仕様の制約からくるもの

・妥当性テスト-引数の組み合わせを考えたとき、その値は妥当か?などのテスト
        決定表などを使い、各ケースについて求める。

・存在テスト-そもそも、引数が存在しなかったら(NULLで渡したら)どうなるかのテスト




 で、これらのテストのそれぞれに対して、結果がどうなるかによって、正常系、異常系に分かれる。
 正常系とは、正常に値が帰ってくるもの。
 異常系というのは、そうではないもので、「エラー」と「例外」に分かれる
   エラーは、エラー値が帰ってくる
   例外は、例外処理され、例外が帰ってくるもの

 エラーと例外の区別について、個人的な見解を述べると、一般論でいえば、エラーは、想定の範囲内であり、本システムで、警告など、対処すべきもの。
 例外は、想定の範囲外のことが起きた場合と、想定の範囲内だが、本システムでエラーとして対処するには、不適切なもの(熱暴走が起こった等)に対処する。
 ただし、想定の範囲内で、警告などで対処すべきケースでも、例外処理に落とし込む場合もあり(DBのデッドロック等)このエラーと例外の区別はあいまいになる。




 そうすると、ユニットテストは、こんなかんじに分類できる(ここをうめるように、テスト項目を検討していく)

正常系異常系(エラー)異常系(例外)
制約値テスト   
限界値テスト   
妥当性テスト   
存在テスト   


これを、各項目ごとに、行うことになる。




 とすると、ウィリアムのいたずらが、前に示した単体テストのテストケースの作り方と、異なる。
 なぜ異なるかということと、実は、この表をテキトーに書き換えると、ウィリアムのいたずらの示した表になる(具体的には、3次元、いや、4次元を2次元に圧縮して、あるものを付け加える。別に、次元を乗り越えるというSFな話ではない。ただ、「具体的には」といっておきながら、ひとつも具体的ではない)。

 今日は、その前置きとして書いたのでは。。実は、「ない」。
 もし、気が向いたら、その展開過程を書くかもしれないけど。

 じゃあ、何のために、この話題を書いたのかについては、気が向いたときに、覚えていたら、説明するかもしんない。


この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« VIPSTARが流行ると平... | トップ | ネットユーザーが一番少ない... »
最新の画像もっと見る

一人勉強会」カテゴリの最新記事