1961年に出版されたIBM社のHerbert D. LeedsとGerald M. Weinbergの『Computer Programming Fundamentals』[2]は、計算処理やプログラミングの基本的な概念や技法が書かれた書籍ですが、"Program Testing"という名称でテスト技術が書かれた最初の書籍でもあります。著者の二人は、出版当時IBMの社内研修機関であるIBM Systems Research Instituteに所属しており、この書籍も研修の内容が反映されています。ちなみに、Weinbergは1955年にIBMに入社、1958年にマーキュリー計画のプロジェクトで世界初の「独立テストチーム(separate software testing group)」を設立しています。
データ処理のコンサルタントであったDick H. Brandonが、1963年に出版した『Management Standards for Data Processing』[3]は、管理や作業方法の標準の開発方法を示した書籍です。当時、"Data Processing(データ処理)"という用語は、現在の「IT(情報処理)」と同様の感覚で使われており、この書籍も最新のデータ処理におけるマネジメント標準の開発ガイドという趣旨の内容となっています。
(1)机上チェック(Desk Checking) (2)プログラム準備(Program Preparation) (3)テストデータの準備(Test Data Preparation) (4)テストデータのシーケンス化(Test Data Sequencing) (5)プログラムテスト(Program Testing) (6)製品およびシステムテスト(Production and Systems Testing) (7)移行(Conversion) (8)ドキュメントのテスト(Testing of Documentation)
OS/360の開発プロジェクトの経験に基づいて書かれたのが、Frederick P. Brooksの『人月の神話』です[4]。このプロジェクトでは、当然ながら相当なテスト作業が行われ、テストプロセス、テスト技法、テストマネジメントに関するノウハウが蓄積されたはずです。
※HQW!編集部メンバーの蔵書を撮影
後に原因結果グラフを考案するIBM社のWilliam R. Elmendorfは、1953年に入社し、1963年にハードウェア部門からソフトウェア部門へ異動しました。そこでプログラミング言語やOS/360のアーキテクチャを担当した後、1965年からソフトウェアテストを担当するようになったそうです[5]。1969年に発表された論文[6]では、このプロジェクトにおいて、確立されたテストプロセスが実践されていたことがうかがえます。下図のように、左側にOS開発工程の四つのフェーズ、右側にテスト制御プロセスの五つのステップを示し、次のように述べています(筆者訳)。
一方、57件の中には、Brooksが『人月の神話』で「飛び切りうまい扱い方を考案している」と評した、1968年発表のFred Gruenbergerによる『Program Testing and Validating』[8]も含まれています。この論文は明確なテストケース設計技法を示したものではありませんが、二次方程式を解くプログラムの例題を基に、テストデータの選定に関する考え方を提示しており、当時すでにテスト技術の探求が進んでいたことが分かります。
そして、1970年代に入ると、1972年にテストを主題とした初のシンポジウム『The Computer Program Test Methods Symposium』が開催され、翌年には、その発表論文を基に、テストに関する初めての書籍『Program Test Methods』[9]が出版されました。このようなシンポジウムや論文を通じて、テスト技術の研究は加速し、各技法に名前が付けられることで、伝達可能なテストケース設計技法として確立されていったのではないでしょうか。
<参考文献> [1] C. Jones, "The Technical and Social History of Software Engineering," Addison-Wesley, 2013 [2] H. Leeds and G. Weinberg, "Computer Programming Fundamentals," McGraw-Hill, 1961(水野幸男(訳),電子計算機ソフトウエアの基礎, 培風館, 1964) [3] D. H. Brandon, "Management Standards for Data Processing," Van Nostrand, 1963 [4] フレデリック・P・ブルックス, Jr.,滝沢徹・牧野祐子・富澤昇(訳),人月の神話 原著発行20周年記念増刷版,ピアソン・エデュケーション,2002 [5] R. Bender, "William Elmendorf - In Memoriam," 2006 http://benderrbt.com/William-Elmendorf-In%20Memoriam.pdf [6] W. R. Elmendorf, "Controlling the functional testing of an operating system," IEEE Transactions on Systems Science and Cybernetics, pp. 284-290, 1969 [7] W. R. Elmendorf, "Disciplined Software Testing," In Debugging Techniques in Large Systems, R. Rustin, ed., Prentice-Hall, 1971, pp. 137-140 [8] F. Gruenberger, "Program testing and validating," Datamation, 14, pp. 39-47, 1968 [9] W. C. Hetzel(Ed), "Program Test Methods," Prentice-Hall, 1973(鳥居 宏次(訳),プログラム・テスト法,近代科学社,1974)