書評「ソフトウェア・テストの技法 第2版」

書評「ソフトウェア・テストの技法 第2版」

Glenford J. Myers (著), Todd M. Thomas (著), Tom Badgett (著), Corey Sandler (著) 長尾 真 (監訳), 松尾 正信 (翻訳) 近代科学社

カテゴリ:テスト

概要

ソフトウェアテストの技術書として、非常に有名であり、伝説的な本。
初版の発行は今から数十年前の1980年であるにも関わらず、2020年現在でも絶版となることなく販売され、読み続けられています。
本書は現代となっては古典的な部類に属し、テストの技法について書かれた良書は他にも多くあります。しかし、テストに関わるエンジニアは、一度はこの本を手に取って、今でも話題に挙がる「Myersの三角形問題」が記されている第一章を読んでいただきたい。テストは設計が必要であり、テストは技術であることが分かるはずです。

本書の使い方

第1章~第2章:著者のテストについての考え方がわかる。すべての読者に一読を薦める。
第3章~第7章:本書の技術的な中心をなす。単体テスト、結合テストを行うプログラマ、自動テストに携わるエンジニア、機能テスト、システムテストの担当者に通読を薦める。ただし、基本的なプログラムの知識とがあることが望ましい。
第8章~第9章:最近の開発事情に合わせた、適用事例を学ぶことが出来る。読者の興味関心に応じて読むことが出来る。

何を学べるか

第1章 自己診断テスト
有名なソフトウェアテストの古典問題であるマイヤーズの『三角形の判定』問題が出題される。一見、簡単な問題ながら、読者は改めて、「もれなくすべてをテストする」ことの難しさを認識させられる。すべての読者にまず挑戦することを勧める。

第2章 プログラム・テストの心理学と経済学
自分で作ったソフトウェアを自分でテストすることは、心理的に困難であること、「すべてをテストすること」は事実上不可能なので「費用対効果の高い」テストを行うべきであること、など、有名なマイヤーズのテストに関する提言が示される。その上で、「ソフトウェアテストの原則」を提示し、良いテスト、良いテストケースとは何かを考察する。本書の考え方の中核となる章。

第3章 プログラムの検査、ウォークスルー、検討
コンピューターを使わずに不具合を見つける、検査(コード・インスペクション)、ウォークスルー、検討(レビュー)といった人的テストについて解説する。どうすればにエラーを見つけることができるか、その具体的な技術を紹介する。

第4章 テスト・ケースの設計
エラーを発見できる確率が高い、効率的なテストケースを書くにはどうすればよいか。そのためのテスト設計技法を解説する。論理網羅テスト、同値分割、限界値(境界値)分析、原因-結果グラフ、エラー推測、などを説明する。

第5章 モジュール(単体)・テスト
本章では、プログラムの内部構造に立脚して、個々のモジュールやサブルーチンをテストする、ホワイトボックステストについて解説する。大きなシステムをいきなりテストするのではなく、小さなモジュールに分けて単体テストを実施することのメリットを説明し、その具体的な技法や、効率的な結合テストの方法などを解説する。

第6章 上級テスト
本章では、前章の単体テストより上位の段階のテストである、ユーザー視点に立ったブラックボックステストの技法について解説する。機能テスト、システムテスト、受入れ認可テスト、インストールテストなど様々なテスト観点を紹介する。また、テスト計画とそのコントロールの方法、テスト終了基準などを解説する。

第7章 デバッグ
テストケースでエラーを検出した後の作業である、プログラムのデバッグについての実践的な助言を紹介する。エラーの潜む箇所を推測・発見する方法、効率的な修正の方法などを説明する。

第8章 エクストリーム・テスト
90年代に入って開発された、アプリケーションを迅速に開発する手法である、エクストリーム・プログラミングとエクストリームテストについて、その考え方、プロセス、手法を概観し解説する。

第9章 インターネット・アプリケーションのテスト
本章では、インターネットアプリケーションをテストする際の基本の考え方を解説する。電子商取引(eマースサイト)の基本構造を取り上げ、本書で述べた、テスト技法をいかに利用するか、また、インターネットアプリケーションをテストする際の課題点を解説し、テスト戦略の立て方を考察する。