初心者のためのC#プログラミング本格入門67 - ユーザーストーリーもチェック!
今のところエラー処理のテストと成功時のテストの2つを解説しています。これでプログラミングがサクサク進むかというと、そうでもありません。今は最低限のテストしか行っていないので、誤りが無い事をチェックしているだけです。もっと役に立つテストを行いたいと思うのが人情です。
もちろん、そうしたテストを行う方法はあります。それが、ユーザーストーリーに沿ったテストを行う方法です。ユーザーストーリーを簡潔に言うと、オブジェクトの利用者が取る行為(ストーリー)です。つまり、貴方が作ったオブジェクトがどの様に使われるのかを考えます。
こういうものは文章では分かり難いので実際に行ってみましょう。
class MultiAnalyzerTest
{
//間違った式を指定した後、正しい式を分析する。
public void ErrorAndSuccess()
{
//間違った式を指定
string errorValue = "1 @ 2";
this.target = new MultiAnalyzer();
this.target.AnalyzeExpression( errorValue );
if ( target.Success == true )
{
System.Console.WriteLine(
"誤った式を解析できていません。" );
}
//正しい式を受け入れるか?
string value = "1 + 2";
this.target.AnalyzeExpression( value );
if ( target.Success == false )
{
System.Console.WriteLine(
"誤った式後に指定した正しい式を解析できていません。" );
}
}
//他のプログラムは省略・・・
}
//作ったテストを呼び出す事を忘れないように
class TestProgram
{
static void Main()
{
MultiAnalyzerTest multiTests =
new MultiAnalyzerTest();
multiTests.AnalyzeSimpleExpression();
multiTests.ErrorExpressionCheck();
multiTests.ErrorAndSuccess();
}
}
このテストは、利用者が間違った式を指定した後、正しい式を入力する場面(ストーリー)を想定しています。人間はだれしも間入力ミスをします。そして、ミスをしたら正しい式を入力しなおす事も考えられます。さて、このテストはどうなるでしょうか?実行すると分かると確認できますが、エラーメッセージが表示されます。現在のMultiAnalyzerオブジェクトは、一度間違ったら二度と式を正しいとみなしません。これでは不便ではないでしょうか?ユーザーストーリーに沿ったテストは、こうしたオブジェクトの扱いやすさを考えるきっかけを与えてくれます。
私が先にテストを行う(テストファースト)とプログラミングが素早くできると言ったのはこういうテストがあるからです。ユーザーストーリーに沿ったテストを行わないと、オブジェクトがどの様に使用されるのか判明せず、扱いにくいオブジェクトが出来上がってしまいます。また、複数のメソッドやプロパティを実行した結果が分からないので、複数の処理から生まれるエラーを見過ごしてしまいます。
以上のようにユーザーストーリーに沿ったテストを行うと、自分の考えを検証できるようになるので悩む時間が減り、プログラミングがサクサク進むようになります。作りたいプログラムが思い浮かんだらテストを先ず作り、そのテストに合格するプログラムを作りましょう。その流れを途切れることなく行えば、ストレスなしに素早くプログラミングを行えます。