書評「実践的プログラムテスト入門―ソフトウェアのブラックボックステスト 」

書評「実践的プログラムテスト入門―ソフトウェアのブラックボックステスト 」

ボーリス バイザー (著) , 小野間 彰 (翻訳) , 山浦 恒央 (翻訳) , 石原 成夫 (翻訳) , 日経BP社

カテゴリ:テスト

概要

本書は中級者以上のテスト担当者と開発担当者の両方を対象として、プログラムの構造とは関係なく、ユーザーの立場に立っておこなうテスト=ブラックボックステスト(動作テスト、機能テスト)の考え方と実践的なテクニックを伝えることを目的とした本である。とりわけ、テストの基本の概念である、グラフによるモデリングについて、深い学習を行うことができる。
同著者によるホワイトボックステストに関する著書である『ソフトウェアテスト技法』と対をなす本であり、ソフトウェアテストに関する入門書を一通りの学んだあとで、再読、熟読すべき、理論書である。読者には基礎的なプログラミング知識が前提とされている。

本書の使い方

第1章はテストに関する知識と、読者が自分の置かれた状況を整理・認識するために設けられている。
第2章は続く第3章~第9章で必要な基礎知識となるため、十分な理解が必要となる。第1章、第2章はすべての読者に熟読を勧める。
第3章~第9章は個々のテスト技法について、第10章はツールと自動化について述べられている。読者の興味関心がある章から読むことができる。

何を学べるか

第1章 概要
本章では、中級者以上の知識レベルの読者を対象に、テストで使用する用語や概念を整理する。テストの目的、テストとソフトウェアの品質との関係、どこにどんな種類のバグがあって、どう検出すべきか、検証に適した環境とは何か、といったテス戦略、なぜテスト、特にブラックボックステストだけではバグを撲滅できないか、などについて述べる。

第2章 グラフと関係
テストを考える上で中心的な概念となるグラフについて解説する。グラフとは、点と線で表現された図を意味する。グラフを記述し、使用する上での考え方を説明する。 本書は続く第3章~第9章で必要な基礎知識であり、読者は本章を理解していることが以降の章では前提となる。

第3章 制御フローテスト
テストの設計の基本モデルである、制御フローグラフについて解説する。実際に、米国国税局の納税申告書(IRSの書式1040)に制御フローを適用して、モデルを作成する。この納税申告書は、通常のテストと同程度に複雑なものである。このモデルを使い、リンクを網羅するためのテストケースを設計する。

第4章 ループテスト
本章では制御フローグラフを使用してループテストを説明する。経験から、プログラマはループの開始と終了時にバグを作る傾向があることがわかっている。ループテストは経験則にもとづくテスト技法であるため、他の検証技法と併用する必要がある。本章で述べる技法はグラフ、例えば制御フローグラフのほか、トランザクションフローグラフ、や構文グラフの中にループがある場合に適用できる。したがって本章は続く第5章~第8章の基礎知識でもある。

第5章 データフローテスト
データフローグラフは、多くのソフトウェア設計手法のうちの一つである。テストの設計に使うと特に効果が期待できる。データフローテストはデータフローグラフを用いてモデルを定義し、そのモデルをテスト設計の基本として使用する。本章では先の納税申告書からデータフローグラフを作成し、スライス(パス)の選択法、カバレージメトリックスなどを説明する。

第6章 トランザクションフローテスト
トランザクションフローグラフはオンライアプリケーションプログラムや、バッチ処理プログラムのシステムテストなど、高レベルのシステムテストを実施する際に効果的なモデルである。 本章では納税申告書をモデル化する。トランザクションの切り分けから始まり、トランザクションの生成と消滅する場所の特定、パスの選択などを説明する。またトランザクションテストの考え方の中心である「待ち行列」について解説する。

第7章 ドメインテスト
ドメインテストは数値処理が主体のソフトウェアをテストする場合に効果的である。経験則と力ずくの境界値テスト、限界値テストに替わるテスト技法である。本章では、従来の境界値テストだけでは、どのような限界があるかを解説したうえで、ドメインテストの方法を説明していく。ドメインテストは自動処理にも向くテスト技法である。

第8章 構文テスト
本章では、構文テストの考え方を解説する。構文テストはコマンド駆動型や類似ソフトウェアの、コマンド処理部の構文解析(パーサ)テストに有効な手段である。構文テストではBNFに代表される形式的メタ言語を 使って構文を定義する。BNF定義があれば、その構文グラフを網羅するテストケースは容易に作ることができる。市販の自動化ツールにも触れる。

第9章 有限状態テスト
もともとハードウェア論理のテストに適用された有限状態マシンモデル(状態遷移図・表はその代表的なモデルである)は、テストの基本モデルであり、多岐にわたってソフトウェアに適用できる。メニュー駆動型ソフトウェアをテストする場合や、オブジェクト指向ソフトウェアを設計する際にも幅広く使われる、重要なテスト技法である。本章では有限状態テストの考え方や注意点を詳しく説明する。

第10章 ツールと自動化
テスト自動化ツールの有効性を示し、自動化ツールの導入推進を支援・支持するための材料を提供する。また、基本的な各種テストツールとその機能の概要を説明する。最後に著者によるソフトウェアテストの長期的展望と予想が述べられる。

付録A 所得税申告書式
本書の説明や演習で使用する、米国所得税申告書の書式を掲載する。