ユニットテスト ゆにっとてすと
ユニットテスト単体テストテストコードTDDテストカバレッジモック
ユニットテストって書く意味あるの?
ユニットテストとは
ユニットテスト(Unit Test / 単体テスト) とは、プログラムの最小単位(関数・メソッド・クラス)が期待通りに動作するかを自動で検証するテストです。
開発者が書いたコードの「信頼性の保証」として機能し、コードを変更した際に既存の機能が壊れていないかを即座に確認できます(リグレッションテスト)。
主なユニットテストフレームワーク
| 言語 | フレームワーク |
|---|---|
| JavaScript/TypeScript | Jest, Vitest, Mocha |
| Python | pytest, unittest |
| Java | JUnit, TestNG |
| Go | testing(標準) |
| Ruby | RSpec, MiniTest |
| Rust | 組み込みテストモジュール |
テストの3Aパターン
Arrange(準備)
→ テスト対象の入力データや依存関係を設定
Act(実行)
→ テスト対象の関数・メソッドを呼び出す
Assert(検証)
→ 期待する出力と実際の出力を比較
モックとスタブ
- モック(Mock):依存するオブジェクトの振る舞いを検証するための代替物
- スタブ(Stub):決まった値を返す単純な代替物
ユニットテストのベストプラクティス
- FIRST原則:Fast(速い)・Independent(独立)・Repeatable(繰り返し可)・Self-validating(自己検証)・Timely(適時)
- テストは仕様書:テストコードを読むと「この関数は何をするか」がわかるように書く
- 境界値テスト:0・1・最大値・空文字など境界条件を必ずテスト
歴史と背景
- 1994年:Kent BeckがSmalltalkのSUnit(JUnitの原型)を開発
- 2000年代:JUnit・RSpecの普及でTDDとともに開発者文化に定着
- 現在:CI/CDパイプラインにユニットテストを組み込むことが標準に
関連用語
- TDD(テスト駆動開発) — テストを先に書く開発手法
- 統合テスト — ユニットテストより上位のテスト
- テストカバレッジ — どれだけのコードがテストされているかの指標
- CI/CDパイプライン — ユニットテストを自動実行する仕組み
- コードレビュー — テストコードもレビューの対象