テストの目的
テストとは開発したコードに不具合がないか確認し、仕様通りの開発を達成しているかを確認する事を指します。
仕様書で定めた目的を達成するためには作ったらおしまいではなく、あらゆるパターンを考え、そのパターンに対応することができているかを証明しなければいけません。
証明することで品質が保証されるとともに仕様書定めた目的も達成することができます。
本来であれば開発した後には単体テストや結合テスト、システムテストという工程がプログラム開発には含まれている事がほとんどなので、テスト仕様書通りにテストを実施しなければいけません。
しかし、今回は自分が書いたコードが目的の動作なのかを自分で確認する方法を紹介します。
テストの考え方
下記の考え方を大事にしましょう。
- 書いたら試す
- 人が手を加えたものにはミスが起こると考える
- ミスを少しでも0に近づけるために実施
mainメソッドが無いクラスのテスト方法
自分で書いたコードはそのまま実行すれば動作を確認することができますよね。
しかし、mainメソッドがない機能を実装している場合は確認することが実行する事ができないので正常に動くかどうかがわかりません。
そんな時はmainメソッドを持つテストクラスを新規作成し、自分が書いたコードを試しましょう。
public class Animal {
public String Name;
public int Age;
public void ShowProfile(){
System.out.println( "名前は、" + Name + "、" + Age + "歳です。" );
}
public void Speak(){
System.out.println( "......" );
}
}
public class TestAnimal {
public static void main(String args[]){
showProfile(); --メソッドテスト
speak(); --メソッドテスト
}
public String Name;
public int Age;
public void showProfile(){
System.out.println( "名前は、" + Name + "、" + Age + "歳です。" );
}
public void speak(){
System.out.println( "......" );
}
}
上記の様にすることで、mainメソッドのないクラスでも自分の環境でテストを行うことができます。
mainメソッドを追加する場合は、本番稼働するコードには追加せず、Test〜〜の様に新規にクラスを用意してテストしてください!
本番稼働するコードに直接mainメソッドを追加してしまうと、コードを提出する際にmainメソッドを削除しなければいけません。
人が手を加えるという事は何らかのエラーが起きる可能性があるので、せっかくのテストが無駄になってしまいます。
新規にテストクラスを用意してmainメソッドの記述をしましょう。
上手なテスト
上手なテスト方法として正常系と異常系のテスト方法があります。
- 正常系→開発したプログラムが正常に動くか試す
- 異常系→引数に想定外の値を渡す。
正常系は動くかどうかを調べるだけなので簡単なのですが、異常系は工夫をしなければいけません。
下記コードでは足し算をおこなっているのですが、異常系を試す場合だと引数にマイナスの値やNULL値などの予想外の値を入れたりしてテストします。
public class Calc{
int num1;
int num2;
int total;
public int numTotal(num1,num2){
this.num1 = num1;
this.num2 = num2;
total = num1 + num2;
return total;
}
}
JUnitで簡単にテストできるよ
JUnitというJavaの機能を使えばmainメソッドのないクラスでも簡単にテストできるよ。
この記事がJUnitの使用方法を上手に丁寧に説明しているので見てみてください〜〜