初心者のためのC#プログラミング本格入門66 - 必要なテストデータを知ろう
数値の様な膨大な値があるテストデータを全て用意して、テストを実施するのは実用的な観点から言って好ましくありません。しかしながら、1と2の様なありきたりな値をテストデータとして用意しても十分にエラーを発見できません。そこで、特徴のあるデータを使用します。
ここで言う特徴とは、最小値と最大値の事です。プログラミングのエラーはその多くが、最大値と最小値の処理を間違う事により発生します。それに加えて、前後と中央でも間違う事が多いので、それらの値も忘れずにテストデータにします。この事を踏まえて、実際にテストを作ってみましょう。
//簡単な式が指定された場合の解析処理をテストする
public void AnalyzeSimpleExpression()
{
//テストデータを準備
char[] signs = new char[] { '+', '-', '*', '/', '%' };
int[] values = new int[]
{
int.MinValue, int.MinValue + 1, int.MinValue / 2,
0, int.MaxValue / 2, int.MaxValue - 1, int.MaxValue
};
//全演算子と主要な数値の組み合わせをチェック
foreach ( char sign in signs )
{
foreach ( int v1 in values )
{
foreach ( int v2 in values )
{
this.AnalyzeTest( sign + " " + v1 + " " + v2 );
this.AnalyzeTest( " " + v1 + " " + sign + " " + v2 );
this.AnalyzeTest( " " + v1 + " " + v2 + " " + sign );
}
}
}
}
以上の様に対象となるオブジェクトが取りうる範囲の境界となる値を使用すると、多くのエラーを見つけ出してくれるテストになります。初心者の方はまだピンと来ないかもしれませんが、プログラミングで発生するエラーの多くは簡単なものです。何故ならば、
//本当は0を含むつもりのプログラム //実際は0を含んでいない if x > 0 then ...の様な、ちょっとしたことでエラーとなるからです。もちろん、プログラムの仕様が間違っているなどといった、より発見が難しいエラーもありますが、どんな人でもケアレスミスをおかします。特に実務では、数十万行のプログラムなんてざらにありますから、誰もが間違う可能性があります。簡単なエラーは発見できれば直ぐに修正できますし、実務では自分以外の人の事も考えなくてはならないので、こんな単純なチェックをするテストプログラムでも大切なのです。
今回解説した事はほんの些細な事です。ですが、知っているのと知らないのとでは天と地の差が出ます。ぜひ覚えて、快適なプログラミングライフを満喫して下さい。