■ テストってなに?なぜ必要?
テストとは簡単にいうと「このプログラム、ちゃんと正しく動いてるかな?」を確認する作業です。
入力に対して、正しい結果が返ってくるかエラーが起きてもちゃんと処理できるかプログラム同士がうまく連携できているか
…など、いろんな視点からチェックします。
◆ テストの種類って?
実際の開発では、いくつかの段階に分けてテストを行います。
テストの種類
内容
単体テスト
小さな部品(関数やクラス)が正しく動くか
統合テスト
複数の部品をつなげたときにうまく動くか
システムテスト
全体として期待通りに動作するか
まずは「単体テスト」から始めるのが一般的です。これがしっかりしていると、あとで起きるバグを減らすことができます。
■ JUnit5で単体テストを書いてみよう!
Javaの世界で広く使われているテストツールが「JUnit(じぇーゆーにっと)」です。今はJUnit5が主流です。
JUnitを使うと、コードの中に「テスト用のコード」を書くことができます。
◆ 例:計算クラスのテスト
// テストしたいクラス
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
この add メソッドが正しく動くかを、JUnitでテストしてみます。
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
// テスト用のクラス
public class CalculatorTest {
@Test // このメソッドがテストですよ、という目印
void testAdd() {
Calculator calc = new Calculator(); // Calculatorを使う
int actual = calc.add(1, 2); // 1 + 2 を実行してみる
assertEquals(3, actual); // 結果が3ならOK!
}
}
上のコードでは「2と3を足した結果が5になること」をチェックしています。もし違う結果が出たら、テストが失敗として表示されます。
◆ よく使うアノテーション(記号)
@Test:これは「テストメソッドですよ」とJUnitに伝える目印assertEquals(期待値, 実際の値):結果が同じか確認するための命令
■ どんなケースをテストすればいいの?
ただ「普通に動いた」だけでOKにしてしまうと、思わぬ場面でバグが起こります。そこで、いくつかのテスト技法を使って、色々なケースを試してみるのがポイントです。
◆ 初心者向けテスト技法
同値分割:「似たような入力」をグループにして代表をテスト(例:0〜100点なら50を試す)境界値分析:ギリギリの値を試す(例:99点、100点、101点)異常系のテスト:変な値(マイナスやnull)を入れたらどうなるか
こうした工夫で、見つけにくいバグもチェックできます。
■ 「テストダブル」ってなに?
テスト中、外部のデータベースやネットワークを使うと時間がかかったり失敗したりします。そこで使うのが「テストダブル」と呼ばれるニセモノの部品です。
たとえば…
スタブ:決まったデータを返すだけの部品モック:ちゃんと呼び出されたかを記録する部品
本物の代わりにテスト用の部品を差し替えて使うことで、スムーズにテストができます。
■ 依存性注入(DI)とは?
難しい言葉ですが、「必要な部品を外から渡して使う」ことです。
普通に書くと、部品の中で他の部品を自分で作ってしまうことがあります。でも、それだと差し替えができません。
// 悪い例
public class UserService {
private UserRepository repo = new UserRepository();
}
テストしやすくするには、こう書きます。
// 良い例(依存性注入)
public class UserService {
private UserRepository repo;
public UserService(UserRepository repo) {
this.repo = repo;
}
}
こうすると、テストのときに「ニセモノのrepo(モック)」を渡せます。
■ まとめ:テストは「守り」と「安心」
テストは、ただの作業ではなく「コードの安全ネット」のようなものです。
変更してもバグが出てないか確認できる複数人の開発でも安心できるバグの発見が早く、直すのもラクになる
初心者のうちは「テストって難しそう」と感じるかもしれません。でも、JUnit5を使ってみると、意外とシンプルに始められます。
まずは「1つの関数が正しく動くか」を確かめるところから始めてみましょう。テストを書くことで、自分のコードに自信が持てるようになります!
- 閲覧数 18
コメントを追加