ビジネス

【連載】第1回:ソフトウェアテストそもそも話~ソフトウェアテストはいつ「ソフトウェアテスト」になったのか(前編)~

【連載】第1回:ソフトウェアテストそもそも話~ソフトウェアテストはいつ「ソフトウェアテスト」になったのか(前編)~

はじめに

「HQW!」の読者の皆さん、こんにちは。辰巳敬三です。

このたびHQW! 編集部からお声がけいただき、連載で寄稿させていただくことになりました。よろしくお願いします。

まずは自己紹介から。

1976年に富士通株式会社に入社、ソフトウェア製品検査部門に配属され大型電子計算機のオペレーティングシステムやミドルウェアの検査、品質保証の担当となりました。メインフレーム華やかなりし時代でした。1990年頃からは、オープン化の波が押し寄せ、UNIXやPCのソフトウェア製品の検査業務を担当しました。

その後、1999年に一線の現場は離れましたが、長く携わった品質評価やテストへの技術的興味や好奇心は薄れることがなく、これらの技術の探求をライフワークとして最新技術のフォロー、理解に努めています。特に品質やテスト技術の歴史的な変遷に基づいて最新技術に至る系譜を整理することに興味を持っています。

2016年に退職しましたが、一般財団法人 日本科学技術連盟のSQuBOK策定委員会や、NPO法人ソフトウェアテスト技術振興協会(ASTER)のメンバーとして引き続き活動しています。

 

<著書など>
・富士通のソフトウェア品質保証活動(共著)(1987年)
・Test Case Design Support System(ICQC'87)(1987年)
・富士通におけるソフトウェア品質保証の実際(共著)(1989年)
・ソフトウェア品質知識体系ガイド(SQuBOK)V1,V2,V3(共著)(2007年,2014年,2020年)
・ソフトウェアテスト・ヒストリー[テストPRESS Vol.8,Vol.9](2009年)
・初級ソフトウェア品質技術者資格試験(JCSQE)問題と解説V2,V3(共著)(2015年,2022年)

 

さて、私が現役の頃を考えると隔世の感があるのですが、テストや品質に関するシンポジウムの開催や技術者資格の認定といったコミュニティー活動により、テストや品質の技法を習得するソフトウェア技術者が増えてきました。同値分割や境界値分析といったテスト技法、テストカバレッジや品質特性といった品質評価技法の名前も、ソフトウェア技術者の会話の中で当たり前に使われるようになってきたのではないでしょうか。

一方、これらの技法を適用するに当たっては、評価対象の特徴に応じて適切な技法を用いることができるよう、技法の特質を理解しておくことが大切です。

この連載では、技法の理解を深める一助となるよう、テストや品質技術の歴史や背景、さらに、そもそも誰がどういう課題を解決しようとして考案された技法なのか、他の技術とどのようにつながっているのかを紹介します。

第1回は、ソフトウェアテストという名称の「そもそも」を前後編で紹介します。普段、われわれはコンピューターのプログラムのテストのことを当たり前のように「ソフトウェアテスト」と呼んでいますが、いつからこの呼び方になったのでしょうか。

「テスト」の由来

まずは、テスト。もちろん日本語ではないので、「test」という英語の由来を調べてみましょう。1972年に世界初のテストを主題にしたシンポジウムを開催し、翌年、世界初のテストの書籍『Program Test Methods』を編さんしたWilliam Hetzelの著書[1]を読むと次のように書かれています(筆者訳)。

testという語は、ラテン語の土のつぼや容器(an earthen pot or vessel)を意味する"testum"に由来する。このようなつぼは、金属を分析するのに用いられ、さまざまな元素の存在の決定や重量の測定をしたことから、「テストにかける(to put to the test)」という表現が生まれた。

※筆者の蔵書を撮影

英語語源辞書を調べると、確かに次のように書かれていました。

test(n.)

14世紀後半にさかのぼり、「貴金属の品質を試すために使われる小さな容器」として登場。Old Frenchのtestに由来し、さらにはLatinのtestum「土のつぼ」と関連し、testa「焼かれた土のかけら、土のつぼ、殻」(tete参照)ともつながりがある。

「正しさを決定するための試験や検査」という意味は1590年代から記録されている。ここでのつながりは「土のつぼで金属を溶かして品質を見定める」という行為からきている。

出典:https://www.etymonline.com/jp/word/test

 

testが現代のわれわれが使う「テスト」という語の意味を持ったのは16世紀頃ということになりますね。

コンピューター用語としての「プログラム」

テストの語源が分かったところで、次は「プログラム(program)」です。すぐに「ソフトウェア(software)」とならないのは、ソフトウェアが比較的新しい語だからです。

再び英語語源辞書を調べてみましょう。programは1630年代に使われ始めたそうです。そして、「事前に準備された、もしくは発表された明確な計画や案、作戦方法、手順」という一般的な意味は1837年から、「コンピューターが特定のタスクを実行するために指示するコード化された命令の系列」というコンピューター用語としてのprogramの意味は1945年から記録があります。これは、1944年に世界初のプログラムによる動作が可能なコンピューターの一つであるHarvard Mark Iが開発され、1946年に世界初の汎用電子コンピューターであるENIACが公開された時期と符合します。

Harvard Mark Iはスイッチ、リレー、歯車式の計算装置を使った電気機械式で、さん孔テープから命令を順次読み取り、プログラムを実行するというものでした。ENIACは約1万8000本の真空管を使った電子式で、パッチパネルでスイッチ群やケーブルの配線を変更してプログラムを設定する方式でした。現在の電子計算機のようにプログラムをコンピューターに内蔵する方式の実用的なコンピューターは1949年に稼働したEDSACが最初です。

「プログラムテスト」事始め

ところで、人類で初めてプログラムのテストをしたのは誰なのでしょう。プログラムを書いたら何らかの確認をするだろうと考えると、テストはコンピューターの出現と同時に生まれた作業と言えるかもしれません。すなわち、最初のプログラマーが最初のテスターというわけです。

最初のテスター

現在のコンピューターの原型は英国のバベッジ(Charles Babbage)が1837年に開発を開始した解析機関(analytical engine)といわれています。バベッジは解析機関の開発資金を集めるためにヨーロッパ各地を講演して回りました。その時の講演先の一つ、イタリアでの講演記録を1843年に英訳したのが、バベッジに師事していたエイダ・ラブレス(Ada Loverace)伯爵夫人です。このとき、彼女は単に翻訳するだけでなく膨大な注釈を付けたのですが、その中に解析機関のプログラムが含まれていました。このことから、エイダが最初のプログラマーといわれています。ただ、解析機関は完成には至らなかったので、テストをしたくても、エイダは静的テストしかできなかったことになります。

画像引用元:Wikipedia https://ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E6%A9%9F%E9%96%A

バベッジやエイダのことを欧米のコンピューター関係者はよく取り上げています。ソフトウェアテストの分野でも、Boris Beizerがニュースグループcomp.software.testingへの投稿で「テストやデバッグの最初の議論はエイダのメモにさかのぼる」と書いていたり、1984年の著書『Software System Testing and Quality Assurance』 [2]で彼一流のジョークのネタに使っていたりします(このくだりは、彼の著書『Software Testing Techniques』の2版[3]に掲載されています)。

Ada Loverace女史はプログラマーの第1号として、19世紀、Charles Babbageの壮大にして未完成に終わったコンピューターのプログラム作成にたずさわったが、「あと1週間あれば大丈夫です、バベッジ博士。それですべて終わります」と何度も言っていたにちがいない。幸いにもハードウェアが完成しなかったため、Loverace女史は机上デバッグに巻き込まれずにすんだ。

※筆者の蔵書を撮影

Beizerは、エイダは机上デバッグに巻き込まれなかったと書いていますが、私は彼女が最初のテスターだと考えておくことにします(笑)。

なお、1980年代に開発されたプログラミング言語Adaは彼女の名前にちなんで命名され、Ada言語の規格番号MIL-STD-1815も彼女が生まれた年である1815年から番号が決められたそうです。

最初のテストの文献

1949年にチューリング(Alan Turing)は『Checking a large routine』 [4] と題された3ページの文書にプログラムの正当性証明のようなアイデアを記しています。テストコンサルタントとして著名なEdward MillerやHetzelらはこの文書を、正当性証明という極端な例ではあるがテストに関する最初期のものと位置付けています[5] [6]。

また、Gelperinらはチューリングが1950年に発表した論文『Computing Machinery and Intelligence』[7] をプログラムテストに言及した最初の文献であるとし、その理由を次のように書いています(筆者訳)[6]。

この論文は、「プログラムが知能を発揮していることを、私たちはどうやって知ることができるのか?」という設問を扱っている。もしこのようなプログラムを構築することが要件であれば、この設問は、「プログラムが要件を満たしていることをどうやって知ることができるのか?」の特別なケースである。チューリングは、コンピュータープログラムによる知的動作の運用テストを定義し、チューリング・テストは、プログラムと参照システム(人間)の振る舞いが、質問者(テスター)にとって区別できないことを要求したのである。


前編では、テストやプログラムという用語の由来や最初期のプログラムテストについてご紹介しました。

次回、後編ではいよいよ、ソフトウェアテストがいつ「ソフトウェアテスト」になったのかに迫ります。

<参考文献>
[1] B. Hetzel, "The Complete Guide to Software Testing," QED Information Sciences, 1984
[2] B. Beizer, "Software System Testing and Quality Assurance," Van Nostrand Reinhold, New York, 1984
[3] B. Beizer, "Software Testing Techniques," Second Edition, Van Nostrand Reinhold Company Limited, 1990 (小野間彰・山浦恒央(訳), ソフトウェアテスト技法, 日経BP社, 1994)
[4] A. Turing, "Checking a Large Routine," Report of a Conference on High Speed Automatic Calculating-Machines, pp. 67-69, Jan. 1950
[5] E. F. Miller, "Program Testing - Guest Editor's Introduction," Computer, Vol.11, No.4, pp.10-12, April 1978
[6] D. Gelperin and B. Hetzel, "The Growth of Software Testing," Communications of the ACM, Volume 31 Issue 6, June 1988, pp. 687-695
[7] A. Turing, "Computing Machinery and Intelligence," Mind 59, pp. 433-460, Oct. 1950

SNSシェア

この記事は面白かったですか?

今後の改善の参考にさせていただきます!

Search Articles By The Cast出演者/執筆者から記事を探す

Search Articless By The Categoryカテゴリから記事を探す

Ranking

ランキング

もっと見る