開発・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

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

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

    Node.jsコースの全編を見る