テストってそもそも何をするものなのか、ちゃんと説明できますか?
「バグを見つけること」——それが答えだと思っていたが、実はその定義自体が時代と共に劇的に変化してきた。Zennに掲載されたmima_itaさんの記事「ソフトウェアテストの古典から現在まで」は、1949年のチューリングの論文から現代のISTQB/JSTQBまで、テストという概念の思想的進化を一次資料を辿りながら整理した力作だ。テスト設計をする機会があるなら、この系譜を知っておいて損はない。
テストの進化5段階——「動くことを示す」から「欠陥を未然に防ぐ」へ
1988年にGelperinとHetzelが発表した The Growth of Software Testing では、ソフトウェアテストの進化を5つの時期に整理している。
- デバッグ志向期:テストとデバッグの区別がなく、「バグを取り除くあらゆる活動」がテストだった
- 実証志向期:「プログラムが正しく動くことを確かめる」——テストは成功を示すもの
- 破壊(欠陥検出)志向期:「エラーを見つける意図を持って実行するプロセス」——Myers の名著 The Art of Software Testing(1979)がこの転換点
- 評価志向期:レビュー・分析を含む VV&T(Validation, Verification & Testing)がライフサイクル全体に拡大
- 予防志向期:テスト設計を早期から重視し、要求・設計段階での欠陥防止を重視
この流れを知ると、「なぜ現代のテストでは設計フェーズからQAが関与するのか」が腑に落ちる。ウォーターフォールの末端にテスターがいた時代から、シフトレフトが叫ばれる現代まで、思想の連続性が見えてくる。
一次資料で読む「テストの古典」
記事が特に価値を発揮するのは、一次資料への丁寧な言及だ。いくつかピックアップしたい。
Alan M. Turing「Checking a Large Routine」(1949) 大規模ルーチンの正当性証明を論じた最初期の論文。後の形式的検証(Formal Methods)に通じる発想がある。テストの起源がここまで遡れるという事実だけで読む価値がある。
Glenford J. Myers「The Art of Software Testing」(1979) この本が提示したフレーズ——
Testing is the process of executing a program with the intent of finding errors.
——が、支配的だった「動くことを示すプロセス」からの決定的な転換を宣言した。A Self-Assessment Test という演習はテストケース設計者なら全員挑戦すべきと著者は評している。2011年改訂版ではアジャイル・Webアプリ・モバイルのテスト章も追加されており、今でも2冊目の教科書として推薦できる。
Boris Beizer「Software Testing Techniques」(1983) パステスト・データフローテスト・状態遷移テストなどの技法を体系化した書籍。邦訳タイトルは『ソフトウェアテスト技法——自動化、品質保証、そしてバグの未然防止のために』。2版ではテスト設計こそがバグ防止において実行より効率的という主張が加わり、予防志向への移行を示している。
現代のスタート地点——JSTQB と ISO/IEC/IEEE 29119
「今のソフトウェアテストの概念」を把握したいなら、まず JSTQB(Japan Software Testing Qualifications Board) のシラバスが出発点になる。CTFLv4.0は日本語で無料公開されており、現代のテスト概念・用語が体系的に整理されている。
規格レベルでは ISO/IEC/IEEE 29119 シリーズ(テストプロセス・文書・技法)が基準となるが、IEEEは有料。一方 JIS X25010(品質モデル)は日本産業標準調査会でユーザー登録すれば無料で閲覧できる。また SQuBOK(Software Quality Body of Knowledge) は規格・手法・概念を横断して体系化されており、全体像を掴む入り口として有用だ。
まとめ——「テストとは何か」を問い直す価値
テストの思想は「動くことを示す」→「壊す意図で実行する」→「ライフサイクル全体で予防する」と変化してきた。現代のシフトレフト・TDD・契約による設計といったプラクティスは、この進化の延長線上にある。
古典を読むのは懐古趣味ではなく、なぜ今の手法がこの形になっているのかを理解する近道だ。JSTQBを受験しようとしている人はもちろん、「テストを書いてはいるけど設計の意図まで考えたことがなかった」というエンジニアにも、元記事が指し示す一次資料の系譜を辿る読書体験を強くすすめたい。