Headline About TechLog Download Java VBA Link

December 16, 2008.

単体試験


火曜日。いつもどおり歩く。特に何も考えることなく歩けるようになってきたな。そろそろリスニング復帰をしないと。いつもお昼ごはんは朝のうちにコンビニで購入しておく。今日は400円未満ですんだ。最近物価が地味に上がって、気を抜くと800円ぐらいかかってしまう。恐ろしい。ATMで残金チェックをしたら、どうやらボーナスはもう振り込まれた様子。給与明細を見ていないので増えたんだか減ったんだか。仕事のモチベーションにかかわるのでURLとPASSを調べていつでも見られる環境を作っておかないと。まぁ、取り合えず不景気だからといって大いに減ったなんて事はなさそうでひと安心。貯金が上手な方ではないので、ボーナスだけはなるべく貯めることにしている。大幅に減ったりするとピンチなわけだ。

 

仕事は単体試験のエビデンス作成。といっても試験は済んでいるので後追いで資料を作っている状態だが。そういえばこないだYahoo知恵袋に「単体試験のホワイトボックス試験って何件ぐらいやるのが目安ですか」という質問をしている人がいた。取り合えず、件数を目安とすること自体が間違いであることと、どのように試験を組み立てれば良いかというアドバイスを書いておいてあげたが、返事はなし。きっと人の意見なんか聞けない人だから、そんな質問をするPGになっちゃったんじゃないのかな?

前にも似たようなことを書いた気がするが、ホワイトボックス試験ってのはプログラマがやるべき試験だ。その名の通り、ブラックボックスの中を知っている前提で書く試験なわけだ。なので、基本はif文やswitch caseのすべてのパターンが網羅できるよう試験を書き、数値などの最小値、最大値試験を盛り込む。

例えば、数字の1から10を入力すると、それに対応した処理を行うプログラムがあったとする。まず作るべき試験は5とかを入れて正しい動作を確認することだ。1〜10までがそれぞれ別の処理をする以上、すべてのパターンで試験を行う。次に最大値、最小値である。1〜10なら、0, 1, 2, 9, 10, 11ぐらいは試験に含んだ方が良い。したがって1,2,9,10はさっきの試験で網羅されているので2パターンが追加される。

ところがこれだけでは片手落ちだ。入力を受け取る変数の型がintの場合、intの範囲を超える数値が入力されるとエラーとなるからだ。OS、言語、その他の条件によって違うが、例えばintの範囲が-2147483648 から 2147483647の環境で開発するなら、少なくとも-2147483649,-2147483648,2147483647,2147483648を入力する試験はやっておくべきである。

そして、入力フィールドの設計で数値しか入力できないなら良いが、そうでない場合、文字列を入れたらどうなるかなどの試験も必要だ。また数値以外の文字列を許す場合、全角の3とか10を入れた場合に、エラーとして処理するか、半角に変換して処理するのかによって試験の組み立てが変わる。さらに、半角数字しか入力できないという制限をかけても、その制限の手法によってはマウスでコピー&ペーストが出来る場合もあるので注意したい。

とまぁ、画面に1つ入出力の項目があればこれぐらいの試験は発生する。一般的な「件数の目安」なんて存在し得ない。あったとしたらその会社の単体試験は形骸化している。

とまぁ、ここまで読んで「SE業、PG業って大変だな...」と思われそうだが、じゃあ実際にbaristaが常に上記のような試験をこなしているのかというと、そうでもない。baristaなら上記のような場合なら、そもそも入力フィールドをやめる。1〜10のプルダウンメニューにするか、10個のボタンにしてしまう。すると、入力値のチェックはすべて不要となる。たくさんの入力フィールドが必要な場合でも部品の共通化をはかり、結局同じロジックを通過するようにすることで、1つのフィールドで試験をしたら、他のフィールドでは入力チェック系の試験がいらないように設計してしまう。そういうことを考えて画面設計が出来るかどうかが、SEとしての明暗を分けるのだ。

 

帰りもいつものようにウォーキング。家に帰ったらちょっとショックな話あり。取り合えず2時間ほどかけて対応。しかし、望みは薄いだろうな。気晴らしに2時間ぐらいビデオ&ゲーム三昧。昨日のダブルスの申し込みはうまく受理されたようで一安心。次回からもう少しわかりやすくして欲しいものだけれど。入浴するも疲れが出たのか湯船でうとうと。結局布団に入ったのは26時過ぎ。いかんな、時間を大切にしよう。


名前: 意見: パス:

※パスにはこの日記のタイトルをコピペして下さい。


December, 2008
SUN MON TUS WED TUR FRI SAT
123456
78910111213
14151617181920
21222324252627
28293031