テストに関する文献は、方法論的なものや確率統計など、実際にプログラムを作る人間向けではないものが 多いと思っている。それほど難しい内容でもないので、メモ書き程度に纏めていきたい。
プログラムの動作は、プログラミング言語的には明確で、もし論理的に正しく作れれば、バグなどはないはずです。 しかし、実際には、Windowsでは、毎週のように不具合修正のアップデートがあり、携帯電話やデジタル家電でもソフトウェアアップデートはよくあることになりつつあります。 すでに、バグのないプログラムというのは、夢物語となりつつあります。 (なぜそうなったかは別として)どうやったら、バグのないプログラムが作れるか?またバグがないことをどうやって確認するかを書いてみたいと思います。
ただし、現状の開発のやり方にマッチする手法ではありません。現在は、短納期、仕様変更が多い、社員の熟練度、などの問題でまったく実施できていない場合が多いと思っています。 あくまで、以前の情報として備忘録的に残したいと考えています。
めんどくさくなってきたので、下記参照
http://itpro.nikkeibp.co.jp/article/COLUMN/20060418/235585/
ループや再帰など、複数回繰り返すプログラムをテストする場合の考え方。
数学の証明で使ったと思うが、n=1..Nの問題に対し、n=1の場合、正しいこと、 n=mが正しいとき、n=m+1が正しいこと証明できれば、すべての場合に正しいというやつ。
ループが1回で終わる場合、2回目以降の場合でテストを行う。