テスト入門

Javaによるテスト入門

Maria Milusheva

Senior Software Engineer

テストとは?

ソフトウェアテスト:

  • ソフトウェアが要件を満たすか評価するプロセス

テストの種類:

  • 手動 ― 必要だが範囲と信頼性に限界
  • 自動 ― 数百のテストを数秒で実行でき強力

自動テストには JUnit 5 を使用します

プログラマーのイラスト

Javaによるテスト入門

端境値(エッジケース)

「テストされていないものは壊れている。」$^1$

端境値 (Edge case) ― 典型の境界や極端な入力・条件

: 変数が最大値、null/空、負の値

テストを象徴する図

1 引用元: Bruce Eckel
Javaによるテスト入門

端境値での予期せぬ挙動の例

次のコードを考えます。

public int addTwoNumbers(int a, int b) {
    return a + b;
}

⚠ 入力 2147483647(intの最大値)と 1 を考慮

➡ 出力は -2147483648(intの最小値)になります

Javaによるテスト入門

復習:変数サイズ ― プリミティブはサイズに制限あり

基本型のまとめ表 - byte, short, int, long, float, double, char, boolean

Javaによるテスト入門

例:アリアン5の打ち上げ

1996年のアリアン5ロケット初飛行:

  • 開発に8年以上
  • 総費用3億7千万ドル超
  • 打ち上げ37秒後に爆発
  • 原因はソフトウェアのshortオーバーフロー

欧州宇宙機関のアリアン5ロケットの打ち上げ。

Javaによるテスト入門

テストの利点

  • 端境値バグを防ぐ
  • 要件とプロジェクト理解が深まる
  • 長期的に開発が高速化
  • 要件チェックを自動化
  • 人的ミスを防止

light_bulb.jpg

1 https://books.google.com/books/about/Clean_Architecture.html?id=8ngAkAEACAAJ
Javaによるテスト入門

Passons à la pratique !

Javaによるテスト入門

Preparing Video For Download...