テスト

テスト

執筆済 ソフトウェア開発テスト

変更しても壊れていないことを確かめる仕組み。

テストの目的は「バグを見つける」より **「安心して変更できるようにする」**ことにある。 テストが無いコードは、怖くて直せなくなる。

種類#

種類 対象 速度
単体 関数・クラス ミリ秒 多い
統合 モジュール間、DB 接続
E2E 利用者の操作全体 少ない

テストピラミッド — 下ほど多く、上ほど少なく。 E2E は現実に近いが、遅く、壊れやすい(flaky)。

良いテストの条件#

条件 内容
速い 遅いと実行されなくなる
独立 順序に依存しない
決定的 毎回同じ結果。時刻・乱数・ネットワークを排除する
意図が読める 失敗の原因が分かる名前

flaky なテストは無いより悪い。 失敗を無視する習慣がつき、本物の失敗も見逃す。

何をテストするか#

  • 分岐の多いロジック
  • 境界条件(0、空、最大値)
  • 一度壊れたところ(回帰テスト)
  • 外部との境界(パース、変換)

逆に、単純な getter や UI の細部をテストしても得るものが少ない。

テストしやすさは設計に現れる#

テストが書きにくいコードは、 たいてい依存が多すぎるか、責務が混ざっている。

テストのために設計が改善されるのが テスト駆動開発の主張の中核。

このノート群でも、 CI で リンク検証と単体テストを回すことで、 出典の実在と内部リンクの整合を機械的に保証している。

参考文献#

ノート一覧を閉じる