IntroJS でテストファーストを実践してみる
IntroJS の自動テスト機能を使って、テストファーストを実践してみます。
例題として、簡単な足し算プログラムを作ります。
入力データ仕様は、1 行目と 2 行目に整数 1 つずつとします。
出力データ仕様は、入力データの 2 つの整数を足したものを 1行目に 1つ出力するとします。
まず、空のソースコードファイル add.intro を作成しておきます。
def main() end
次に、add.intro ファイルを作成したディレクトリに、case1 ディレクトリを作成します。 そして、その case1 ディレクトリの中に、次のように入力データファイル input.txt を作成します。
1 2
同様に case1 ディレクトリの中に、出力データファイル output.txt を作成します。 足し算プログラムが正しく動作したときの出力データを記述します。 ここでは、入力データの 1 + 2 の結果 3 となります。
3
ここで、一度、自動テストを実行してみます。
introjs -t add.intro
まだ、ソースコードに何も処理を書いていないので、エラーが表示されるはずです。
とりあえず、テストが成功するようにするため、add.intro を次のように修正します。
def main() write_int(3) end
再度、自動テストを実行します。
introjs -t add.intro
今度は、テストが成功するはずです。 ただし、このままでは、他のテストケースでは、うまく動作しないはずです。
もうひとつテストケースを作成するため、case2 ディレクトリを作成し、 その中に input.txt と output.txt を作成します。
case2 の input.txt は次のようにします。
2 3
case2 の output.txt は次のようにします。
5
テストを実行します。
introjs -t add.intro
case 1 は成功しますが、case2 は失敗するはずです。 add.intro を修正して、足し算を正しく計算するプログラムにしましょう。
def main() var a = read_int() var b = read_int() write_int(a + b) end
テストを実行します。
introjs -t add.intro
すべてのテストケースに成功するはずです。
こうして、無事、足し算プログラムをつくることができました。
このように、テストケースを先に作成してから、ソースコードを作成する手法は、テストファーストと呼ばれています。
ということで、整数型しか使えない簡易プログラミング言語 IntroJS は、いかがでしょうか。