開発・Git・設計の用語一覧へ
このページの目次

自動テストとは?

最終更新:2026/08/18

3秒でわかる

期待どおりに動くかをコード自身に確かめさせる仕組み。一度書けば何度でも同じ確認が数秒で終わり、変更のたびに壊れていないかを保証できます。

もう少し詳しく

どういうものか

自動テストは、プログラムを動かして結果が期待どおりかを判定するコードのことです。人が画面を触って確かめる代わりに、テストコードが入力を与え、戻り値や表示を宣言した期待値と比べます。

実行するとテストランナーが結果を集計し、合格した数と失敗した箇所を表示します。失敗したテストは、どの入力でどんな値になったかまで教えてくれます。

なぜ必要か

手作業の確認は、回数が増えるほど破綻します。機能が 50 個あるアプリで 1 行直すたびに全部を触り直す人はいません。結果、直した箇所だけ見て、無関係に見えた場所が壊れたまま本番に出ます。

自動テストがあれば、この確認が数十秒で終わります。効果が一番大きいのはリファクタリングのときです。テストが通り続けている限り、外から見た振る舞いを変えずに中身を作り替えたと言えます。テストは仕様書としても働き、コードを読むより先にテストを読むほうが早い場面も多いです。

具体例

// sum.js
export function sum(items) {
  return items.reduce((a, b) => a + b, 0);
}

// sum.test.js
import { describe, it, expect } from "vitest";
import { sum } from "./sum.js";

describe("sum", () => {
  it("数値を合計する", () => {
    expect(sum([100, 200, 300])).toBe(600);
  });

  it("空<a href="/glossary/array" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">配列</a>なら 0 を返す", () => {
    expect(sum([])).toBe(0);
  });

  it("負の値も扱える", () => {
    expect(sum([100, -30])).toBe(70);
  });
});

どのテストも「準備」「実行」「検証」の 3 段で書かれています。この形を崩さないと読みやすさが揃います。

つまずきやすいところ

  • 正常系しか書かない — 壊れるのは空配列、0、null、想定外の型といった端の値です。境界を狙って書きます

  • テスト同士が依存する — 前のテストが作ったデータに次のテストが頼ると、実行順を変えただけで落ちます。各テストは単独で完結させます

  • 現在時刻や乱数をそのまま使う — 日付が変わると落ちるテストは信用されなくなります。時刻は固定値を注入します

  • カバレッジの数字を目的にする — 呼んだだけで何も検証していないテストでも数字は上がります。見るのは検証の中身です

  • 落ちるテストを放置する — 常に赤い状態が続くと、本物の失敗に誰も気づきません
  • 似た用語との違い

    層対象速さ
    単体テスト関数やコンポーネント 1 つ非常に速い
    結合テスト複数のモジュールの組み合わせ中くらい
    E2E テストブラウザ操作を含む全体遅い


    覚え方

    自動テストは「壊れたら鳴る警報」です。鳴らない警報に価値は無いので、まず落ちることを確認してから、通るように直す順で書きます。

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地自動テスト開発・Git

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    Reactコースの全編を見る