【てすと】

テスト とは?

💡 ソフトウェアの「健康診断」、動かす前にちゃんと動くか確かめる仕組み
📌 このページのポイント
テストレベルの階層(テストピラミッド) E2Eテスト 全体の動作確認 結合テスト(インテグレーション) モジュール間の連携確認 単体テスト(ユニットテスト) 個々の関数・メソッドの動作確認 少数・高コスト 実行時間:長い 大量・低コスト 実行時間:短い テスト数 底辺(単体テスト)を厚くし、頂点(E2E)は最小限にするのがベストプラクティス ソフトウェアの品質を保証するための検証プロセス
テストのイメージ
ひよこ ひよこ

テストってなんで必要なの?動かしてみて動けばいいんじゃない?

ペンギン先生 ペンギン先生

実は「動いているように見える」のと「正しく動いている」のは違うんだ。たとえば普段の入力では動くけど、空欄を送信したらエラーで落ちる、みたいなケースがある。テストはそういう見落としを防ぐためにあるよ。

ひよこ ひよこ

単体テストとか結合テストとか種類が多くてわからない……

ペンギン先生 ペンギン先生

ざっくり3つ覚えればOK。「単体テスト」は関数やメソッド単位で動作を確認する。「結合テスト」は複数の部品をつないで正しく連携するか確認する。「E2Eテスト」はユーザーが実際に使うのと同じ流れで全体を通して確認する。小さいところから大きいところへ、ってイメージだね。

ひよこ ひよこ

おもしろい!テストを自動化するってどういうこと?

ペンギン先生 ペンギン先生

テストコードを書いておけば、コマンドひとつで何百ものテストを一瞬で実行できるんだ。手動で毎回ブラウザをポチポチ確認する必要がなくなる。CI/CDと組み合わせれば、コードを変更するたびに自動でテストが走って結果を教えてくれるよ。

ひよこ ひよこ

テストって全部のパターンを試さないといけないの?

ペンギン先生 ペンギン先生

理論上は全パターン試すのが理想だけど、現実的には無理なんだ。たとえば入力欄が3つあって、それぞれ100通りの値があったら100万通りになる。だから「境界値分析」や「同値分割」って手法を使って、効率よくバグを見つけやすいケースだけを選んでテストする。この「どのテストケースを選ぶか」が実はすごく難しくて、テスト設計って分野だけで専門の資格があるくらい奥が深い。全部テストを書いたつもりなのに本番で想定外の組み合わせが発生する、なんてことはベテランでも普通に経験するよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「テスト」って出てきたら「ソフトウェアがちゃんと動くか確認する作業。種類がいろいろあるんだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Test」 = 試験・検査
💬 英語の「Test」はそのまま「試す」こと。ソフトウェアの世界では「書いたコードが正しいか試す」意味で使われるよ
← 用語集にもどる