TL

テストの基礎

コードが期待どおり動くかを自動で検証する仕組みの入門。単体・結合・E2E の役割と、テストピラミッドの考え方を押さえます。

基礎テスト品質自動テスト最終更新: 2026-06-06
TL;DR要点だけ先に
  • 1.自動テストはコードの正しさを機械的に検証し、変更時の回帰(デグレ)を素早く発見します。
  • 2.テストは粒度で単体・結合・E2E に分かれ、速くて多い単体を土台に据えるのがテストピラミッドです。
  • 3.良いテストは速く・安定し・読みやすく、1つの振る舞いを明確に確かめます。

なぜ自動テストを書くのか

コードを書き換えるたびに、画面を手で操作して動作を確かめるのは大変で、見落としも増えます。自動テストは、期待する結果をコードとして書いておき、機械に何度でも検証させる仕組みです。

  • 回帰(デグレ)を早く見つける — 既存機能を壊す変更を、その場で検出できます。
  • 安心して変更できる — テストが通れば壊していないと分かり、リファクタリングが進めやすくなります。
  • 仕様の記録になる — テストは「このコードはこう動くべき」という実行可能な仕様書として読めます。

手作業の確認は遅く再現しづらい一方、自動テストは速く・繰り返せるのが本質的な価値です。

テストの3つの粒度

テストは「どこまでをまとめて確かめるか」で分類されます。粒度が上がるほど現実に近い検証になりますが、遅く・壊れやすくなります。

種類検証する範囲速さ性格
単体(Unit)関数・クラス単位速い多数・細かく検証
結合(Integration)複数部品の連携やDB接続つなぎ目の不具合を検出
E2E(End-to-End)利用者の操作全体遅い本番に近いが壊れやすい

単体テストはロジック単位を素早く確かめます。結合テストは「DBと正しくやり取りできるか」など部品間の連携を見ます。E2E テストはブラウザ操作などを通して、利用者視点でシステム全体を検証します。

テストピラミッド

3つの粒度をどの割合で書くかの指針がテストピラミッドです。土台に速くて安価な単体テストを多く、上にいくほど少なくします。

        E2E        ← 少数(遅い・壊れやすい)
     結合テスト     ← ほどほど
   単体テスト        ← 多数(速い・安価)
  • 下が厚いほど、失敗の原因を素早く特定でき、テスト全体も短時間で回ります。
  • 上を厚くしすぎると、実行が遅く、ちょっとした変更で壊れるもろいテスト群になりがちです。
E2E に頼りすぎない

E2E は実行が遅く、ネットワークや画面の小さな変化で本質と無関係に失敗(フレーキー)しがちです。E2E は「主要な利用フローが通ること」の確認に絞り、細かいロジックは単体テストで網羅するのが安定運用のコツです。

テストの基本形

多くのテストは「準備 → 実行 → 検証」という3段(AAA: Arrange-Act-Assert)で書けます。assert(表明)で期待値と実際の結果を突き合わせます。

// 例:足し算関数のテスト
function add(a, b) {
  return a + b;
}

test("正の数どうしを足せる", () => {
  const result = add(2, 3); // 実行
  expect(result).toBe(5);   // 検証:5 になるはず
});
  • Arrange(準備) — 入力やテスト対象を用意する。
  • Act(実行) — テストしたい処理を1回呼ぶ。
  • Assert(検証) — 結果が期待どおりかを表明する。

良いテストの性質

数を増やせばよいわけではなく、が重要です。価値あるテストには共通の特徴があります。

  • 速い — すぐ終わるから何度でも回せ、開発の妨げになりません。
  • 安定(決定的) — 同じコードなら毎回同じ結果。時刻や乱数に左右されないようにします。
  • 独立 — テスト同士が順序や共有状態に依存しない。単独で実行できます。
  • 1つの振る舞いに集中 — 失敗したとき「何が壊れたか」がすぐ分かります。
  • 読みやすい — テスト名と内容で意図が伝わり、仕様書として機能します。
まず1つ、落ちるテストから

新機能や不具合修正では、先に「失敗するテスト」を書いてから実装すると、何を満たせばよいかが明確になります(テストファースト)。バグ修正なら、再現するテストを1本書いてから直すと、再発(リグレッション)も防げます。

まとめ

自動テストは、コードの正しさを機械的・反復的に検証し、変更時の回帰を素早く見つける土台です。テストは単体・結合・E2E の粒度に分かれ、速く安価な単体テストを厚く、E2E を薄くするテストピラミッドが基本指針になります。そして数より質。速く・安定し・独立し・読みやすいテストこそが、長く役立つ資産になります。

プログラミング Article

テストの基礎を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

テスト

比較で見る軸

難易度: basic / カテゴリ: プログラミング / タグ数: 3

導入後に効く点

テストは粒度で単体・結合・E2E に分かれ、速くて多い単体を土台に据えるのがテストピラミッドです。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
basic
カテゴリ
プログラミング
タグ数
3

判断チェックリスト

  • 自社の用途が「テスト / 品質」に近いか確認する。
  • 強みである「自動テストはコードの正しさを機械的に検証し、変更時の回帰(デグレ)を素早く発見します。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

テスト品質自動テストテスト品質自動テスト
参考: 公式情報