スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

テストケースの作り方

プログラムをしていると、必ずテストという工程が必要になります。
(自分はテスト工程を飛ばしてミスをしまくった経験が多々あります)

いや、まあそれだけミスをすると、テスト工程も大事だと物凄く認識するんです。
一個のコードが足りないだけで、あるサービスの全員のユーザーの登録情報が変わる事もあり。
一個のコードが足りないだけで、あるサービスのユーザーがアップロードしたファイルを全部消してしまう事もあり。

散々です(爆/笑い事ではないんですが)

そんなわけでテストケースというものが必要だと言われました。

テストケースとは、例えば

var $a;
var $b;
var $c;

(int)$a + (int)$b = $c
echo $c;

という文があったとします。
この場合は、$cが予想した結果として表示されるかのテストになります。

$a + $b

なので、$a = 1; $b = 2 だと、$cは3になりますよね。

これがテストケースの単純な形です。

・・・のように説明されました。

でも実際にそんなコードなんて滅多に書かないし、今あるプログラムの内容のテストケースを作るとなると、内容は非常に複雑なものになります。

結局はどうすればテストケースが作れるのか?という悩みに陥ります。

しかし答えは簡単。でもないんですが。

1.最初からテストケースを作ろうとしない。
2.プログラムの仕様書を書いてみよう。

この2点だけです。

仕様書と書くと非常に難しく聞こえますが、自分の思いつく限り、「この場合はこうならなければならない」という「仕様」を作ります。これは「設計する」とも言われると思います。

例えばこのブログのコメントする部分の仕様だと

・タイトルの文字数が○○を超えたらエラーを表示する
・メールアドレス、URLが正しくない時にはエラーを表示する
・コメントの本文が空の場合にはエラーを表示する
・パスワードに2バイト文字が含まれていたらエラーを表示する
・管理者にだけ表示を許可するにチェックが入っていたらデータベースの○○というカラムの値を○にする
・ブログ設定でメール通知をする設定の場合には登録メールアドレスに通知をする

もっとあると思いますが、ぱっと思いつくだけでこういう仕様が出てきます。

仮に上記の仕様があれば、テストケースとして

・○○文字以上の文字列をタイトルに入力する
→エラーが出ればOK。出なければNG。
・メールアドレスやURLに「abcdef」等、不正な値を入力する
→エラーが出ればOK。出なければNG。
・コメントに何も入力せずに送信する
→エラーが出ればOK。出なければNG。
・パスワードに「あ」や「漢字」といった2バイト文字を入れる
→エラーが出ればOK。出なければNG。
・管理者にだけ表示を許可するにチェックが入っていた場合にデータベース内のそのユーザーのその記事のそのコメントに対して、値が予想している内容になっているか
→なっていればOK。なってなければNG。
・通知設定していた時にコメントされた場合にメールが届くか?
→届けばOK。届かなければNG。
・通知設定していない時にコメントされた場合にメールが届くか?
→届かなければOK。届いたらNG。

こんな感じでテストケースを作っていきます。
テストケースは、OKかNGのみです。

全てがOKになれば、そのテストが完了した事になります。

でも当然テストケースに問題があれば、バグは存在します。
設計・仕様に問題があればコーディング自体が出来ないので、テスト工程に移る事はないと思いますが、設計・仕様に対して時間を多めに取る事でまともなプログラムが短時間で出来上がります。

・・・でも正直、設計とか仕様とか考えずに適当に作ってなんとなーく動いて、わーい!とかの方が楽しいですよね(笑)
スポンサーサイト

この記事のトラックバックURL

http://kgworks.blog47.fc2.com/tb.php/39-cf8442f5

コメント

私はプログラムを実際に書いていくのも好きですけど、
↑のような仕様(つまりは妄想w)を膨らましていくのも好きですw

それが好きだとプログラムも苦労しないだろうなぁ。
独学というのもあって、設計については全く初心者だから今はめちゃめちゃ苦労してます(笑)
まあ作るものも作るものですし
そんな仕様に関して詰めるところも無いですしねー(あ

たまに学校でプログラムの勉強してる人のブログ見るけど、
そういう人たちが時々すごい羨ましくなる・・・
今作ろうとしているものは、仕様をきちっと固めて、設計をしっかりしてコーディングを始めようと思ってます。
そうしないと時間の無駄になるケースが多くなることに気付いた今日この頃。
あまりガチガチに固めても、途中で「あの機能も欲しい」とかあるから、その辺も踏まえての設計だけれど。

学校でプログラムの勉強・・・羨ましいなぁ。と言いつつも自分は会社でプログラムの仕事という名の勉強をしてます(笑)
会社で勉強っΣ
うらやましーです。。

実際SEさんが書いてくる仕様書と言うものはどのぐらい具体的なものなんですかね・・・。
そういうペースで仕事が出来るので今の会社を続けているんですけどね。時給とか安いですが。まだアルバイトだし。(これは自分の問題でもあるんですが)

SEが書く「ちゃんとした」仕様書って見た事ないので分からないですねー・・・。
でも、PHPのマニュアルを全部印刷するくらいの量はあるんじゃないかな。
ウェブ系だと、変更が多い傾向があるから多少は減ると思うけれど。
ぴぴぴぴっぴぴぴぴぴPHPのマニュアルって関数一覧とかも含めてですか!?!!??!!
ちょと想像ができない量ですね・・・
うん、関数含めて全部。
自分も実際に現物を見た事がないから確証はないけど、うちの社員さん曰く非常に分厚いという事を言ってました。
しっかりしたシステムだとそれが2冊も3冊もあったりするみたい。
うへぇー・・・
すごいですねプログラマさんもSEさんも・・・

やっぱ仕事と趣味は天と地ほど、それ以上の差がありますな。
当然ですが。
そんなに差はないと思いますよ。
趣味でやっていても設計する人はすると思うし、仕事でやっていても設計の仕方を知らないとかする気がないとかっていう人もいるので。
プログラムに限らず、何かモノを作る時の概念が設計する・しないを左右すると思います。
や、やはり差があると思うのです。
そもそも「ソースを共有する」と言うことをしたことさえないヘタレですので。

うー通訳は諦めよっかな。
そろそろ一つに絞らないと・・・
経験したか、経験していないかの差はあると思う・・・かな。

ソース、共有してみます?(笑)
例えば東京の夜さんが作っている掲示板とかを・・・。

通訳?進路の事かな。
いやいやいやいやいやいやいやwww
やっぱり一人でボツボツ作りますですww
いやいやいやいやいや(笑
コードはどんどん人に見せて、悪いところは直して良いところは伸ばしていこうよ(笑
承認待ちコメント
このコメントは管理者の承認待ちです

コメントする

管理者にだけ表示を許可する

Template Designed by DW99

テクノラティ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。