はじめに
業務で使用しているJUnitについて備忘録も兼ね、まとめていきたいと思います。
内容が多いため、何章かに分けてまとめていく予定です。
今回は、まずJUuitの内容に入る前に単体テストについてまとめていきたいと思います。
JUnitシリーズ 項目表
NO | タイトル |
---|---|
その1 | JUnit 単体テストの概要 |
その2 | JUnit 環境の準備 |
その3 | JUnit テストの記述方法 |
※ 新しい記事が作成できましたら、表は更新します。
単体テストとは
テストには、単体テストや結合テスト、総合テストなど様々なフェーズがあります。
各テストにおいて、目的や役割がそれぞれ定められています。
今回は、その中でも単体テストに焦点を当て、まとめていきたいと思います。
単体テストとは、モジュール(部品)単位でプログラムが正常に動作するかを検証するテストです。
テスト工程の中で、始めの方に実施されるテストのため、その後のテストの礎となる重要な役割を担っています。
テストコードとは
テストコードとは、アプリの挙動を確認するためのコードのことです。
テストコードを記述することで、コマンド一つで実装した機能が想定通りに動作するかをチェックすることができます。
Javaでは、標準機能としてJUnit(テスティングフレームワーク)が用意されています。
例) テストコード
簡単なテストコードを紹介します。
テスト対象クラス
public class HelloWorld {
public static String join(String name) {
return "Hello " + name;
}
}
テストクラス
@Test
public void testJoin() {
String result = HelloWorld.join("Taro");
assertEquals(result, "Hello Taro");
}
assertEqualsは、第一引数と第二引数が同一であればテスト成功とみなします。
テストコードを書く意義
テストコードを書くことにより、機能のクオリティが担保できます。
テストコードのメリット
テストコードのメリットについて3つ紹介します。
-
人為的なミスを防げる
実装した機能をブラウザなどで一つずつ確認する方法では、抜けが生じるリスクがある。
テストコードを書くことにより、このような問題を防止することができる。 -
機能追加などの際に、コマンド一つで確認できる
テストコードは、実装する手間こそありますが、一度実装したらコマンド一つで全てのテストが実行できる。
機能追加など仕様の変更があった際に、テスト工程の工数を削減できる。 -
テストをおこなった記録が残る
テストをおこなった記録がコードとして残る。
テストケースの作成
テストの手法として、「ブラックボックステスト」と「ホワイトボックステスト」があります。
それぞれの手法を組み合わせてテストケースを作成することが望ましいです。
テストケースを作成する際は、以下の内容をもとに考えていきます。
正常系と異常系
テストコードでは、正常系と異常系をそれぞれテストする必要があります。
正常系
正常系では、「開発者の意図する操作(入力値)などに対して、期待する結果を返すか」を確認します。
異常系
異常系では、「開発者の意図しない操作(入力値)などに対して、エラーハンドリングが行われるか」を確認します。
例えば、必須項目を入力せずにフォームを送信した際は、「必須項目を入力してください」とアラートメッセージが表示されるかを確認するなどがあります。
同値分割と境界値分析
テストを作成する際に、考えられる入力を全て試そうと思うと莫大なテストパターンが必要になります。
無駄なテストケースの作成を防ぐために、「同値分割」と「境界値分析」という考え方があります。
具体的な説明に関しては、割愛させていただきます。
「同値分割」や「境界値分析」と検索すると、図を用いて説明されている記事が出てくると思います。
同値分割
同値分割とは、仕様に応じて、各範囲から代表値をひとつ抽出し、テスト用の値とする手法です。
境界値分析
プログラムを書く上で、最もバグが発生しやすい値が境界値です。
境界値分析とは、同値クラス間の境界の値をテスト用の値とする手法です。
JUnitとは
JUnitとは、Javaで開発されたテスティングフレームワークです。
JUnitを使用することにより、誰が書いても同じようなテストコードとなり、他の人からでもテスト結果がすぐ理解できるなどのメリットがあります。
おわりに
単体テストの概要は以上となります。
文章ベースでの説明となり、イメージできない箇所もあると思いますが、記事内にあるキーワードで検索すると、図を用いて説明されている記事も出てくると思います。
次はJUnitでのテストを実施するための環境を準備していきます。
その2 JUnit 環境の準備