テスト技術の研鑽がライフワーク
富士通 ソフトウェア事業部事業計画統括部 プロジェクト部長 辰巳 敬三 氏
スピーカーの辰巳氏は、富士通入社後、ソフトウェア製品検査部門でメインフレームOSの検査、品質保証を担当。その後UNIXやPCのソフトウェア製品の検査業務にも従事しました。現在は検査業務を離れているものの、ライフワークとしてソフトウェアの品質、テスト技術の研鑽に取り組んでいます。
本講演では、技術評論社「ソフトウェア・テストPRESS Vol.8」での寄稿をベースに、コンピュータやソフトウェア技術の発展過程をたどり、その中でソフトウェアテスト技術がどのように進化してきたのかを振り返りました。
5段階に区分されたテストの歴史的成長過程
辰巳氏は講演の前段で、ソフトウェアテストという概念が誕生する以前のコンピュータおよびソフトウェアの歴史を俯瞰。その後、テストの考え方の進化として、D. Gelperin とW. Hetzelが1988年に「The Growth of Software Testing」で発表した、次のように5段階区分されたテストの歴史的成長過程を紹介しました。
デバッグ指向の時代(~1956年)
論証指向の時代(1957年~1978年)
破壊指向の時代(1979年~1982年)
評価指向の時代 ( 1983年~1987年)
予防指向の時代(1988年~)
デバッグ指向の時代は、デバッグとテストがまだ明確に区別されておらず、ソフトウェアはハードウェアの信頼性の一部とされており、プログラムを書いたらチェックする程度の認識でした。
1957年、Bakerが「Digital Computer Programming」の書評で、「 デバッグとテストという二つのフェーズを区別すべき」という見解を発表し、「 テストはプログラムが仕様を満足していることを提示するためのもの」という認識が生まれ、ソフトウェアテストは論証指向の時代に入りました。また、1970年代に入ってDebugging Techniques in Large Systems シンポジウムが開催されるなど、テストコミュニティが誕生し、テスト技術の研究が拡大するのもこの時代のことです。
続いて出現したのが“ 破壊指向” と呼ばれる時代で、Myersは「The Art of Software Testing」( 1979年)で、「 いかなるプログラムのテストも不完全にならざるを得ない。だから、作戦としては、この不完全さをできる限り減らすことであることが明らか」と述べ、テストとは投資対効果の最大化を目的としながら、エラーをみつけるつもりでプログラムを実行する過程となりました。
ソフトウェアの開発ライフサイクルを通じた評価活動の中にテストが統合的に位置付けられるべきだとされたのが、評価指向の時代です。解析、レビュー、テストといった一連の活動で、吟味して選んだ技法群を使うことにより品質のよいソフトウェアの開発が可能になるとされました。
現在は、ソフトウェアライフサイクルと並行して、テスト計画の立案、テストの設計、テストのメトリクスの収集方法、リスク分析などが進められるテストプロセスを実施していく“ 予防指向” の時代にあります。
歴史とともに進化したテスト技法
辰巳氏は、テスト技法も歴史とともに進化していると語ります。そして、IBM OS/360のソフトウェアテストを担当したElmendorfの「テスト制御プロセス」に始まり、プログラムの仕様を条件部とアクション部というデシジョンテーブルに整理してテストケースを作成する「デシジョンテーブルテスト」 、入力データを“ 同じ出力結果が得られるグループ” に分割して、各グループの代表値および同値クラスの端に着目してテストケースを作成する「同値分割、限界値分析」 、外部仕様を、入力条件と出力や状態の論理関係、および原因間の関係を示すグラフで表現、それにもとづいてテストケースを作成する「原因結果グラフ」など、開発現場で取り組まれているテスト技法を一つずつ丁寧にピックアップし、それぞれの特長と技法が生み出された歴史を簡潔に解説しました。
テスト技術は“知恵の総合格闘技”
最後のパートはテスト技術の研究最前線の紹介でした。A. Bertolinoが執筆した「Software Testing Research: Achievements, Challenges, Dreams,」( 2007)をベースに、この分野におけるこれまでに達成してきたテーマ、現在の課題、これからの夢が語られました。
とりわけ印象的だったのは“ 夢” の部分です。この文献では4つの夢が提示されているといいます。具体的に、テスト技術の支援と育成に役立つ包括的な理論としての「普遍的テスト理論の構築」 、モデルからテストを設計するのではなく、効果的にテストできるモデルを開発者が考慮する「テストベースド・モデリング」 、ソフトウェアの組み込み、テスト環境構築、テストケース生成・実行・レポートを自動的に行う統合テスト環境などで実現する「100%自動テスト」 、高品質なソフトウェア開発を行うための実践的テスト手法、ツール、プロセスに対して費用対効果の高い工学技術として機能する「有効性最大化テスト工学」がそれにあたるそうです。そして、これらの夢に到達するために解決すべき課題、たとえばサービス指向コンピューティングなど最新開発パラダイムのテスト技法確立、機能特性と非機能特性の双方をカバーする整合性テストの実現、などの研究状況がこの文献にまとめられているそうです。辰巳氏は、これらの課題の中には開発現場にいる我々が気づいていないものもあり、課題を知っておくことも大切であるといいます。「 テスト技術は開発技術のみならず、いろいろな分野の技術を駆使して進化してきた、いわば” 知恵の総合格闘技” 。このようにかなえたい夢は豊富にあり、いくらでもおもしろく仕事できる分野。ぜひ、皆さんも参戦しこれからの歴史は一緒に作っていきましょう」
と力強くスピーチを結びました。