テスト手法

ユニットテスト ゆにっとてすと

ユニットテスト単体テストテストコードTDDテストカバレッジモック
ユニットテストって書く意味あるの?

簡単に言うとこんな感じ!

ユニットテストは「コードの一番小さい部品(関数クラス)が正しく動くかを自動で確認する仕組み」だよ!書くのは手間だけど、後から変更したときに「壊れてないか」を一瞬で確認できるから、長い目で見ると圧倒的に速くなるんだ。リグレッション(意図しないバグ再発)を防ぐ安全網なんだよ。


ユニットテストとは

ユニットテスト(Unit Test / 単体テスト) とは、プログラムの最小単位(関数・メソッド・クラス)が期待通りに動作するかを自動で検証するテストです。

開発者が書いたコードの「信頼性の保証」として機能し、コードを変更した際に既存の機能が壊れていないかを即座に確認できます(リグレッションテスト)。


主なユニットテストフレームワーク

言語フレームワーク
JavaScript/TypeScriptJest, Vitest, Mocha
Pythonpytest, unittest
JavaJUnit, TestNG
Gotesting(標準)
RubyRSpec, 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パイプラインにユニットテストを組み込むことが標準に

関連用語