書評「はじめて学ぶソフトウェアのテスト技法」
リー・コープランド(著) 宗 雅彦(翻訳) 日経BP社
テスト
テストの技法について手っ取り早く把握したいなら、この本を読むとよいでしょう。
タイトルに「はじめて学ぶ」と銘が打たれているとおり、初学者向けに平易に分かりやすくコンパクトに、テストの技法がまとめられています。
本文中は例示も多く、理解の助けになることでしょう。また、もっと詳しい内容が知りたければ、参考文献も豊富に紹介されているので、この本を起点に、別の本も読んで理解を深めることをおすすめします。
概要
ソフトウェアテストで使用される技法を一冊にまとめた本。テスト技法を概観することができる。一章あたりの記述量もコンパクトにまとめられ、考え方の概要を確認するのに適している。各章末の参考文献も使いやすい。
一方で、初学者が本書ですべてのソフトウェアテストの技法を学ぶためには、前提としている知識量、経験量はかなり多いため、一定の学習と実務経験の後、再度本書で、基本を確認するとなお良いだろう。
本書の使い方
Section 1 ブラックボックステスト技法で本書の1/2を占める。
Section 2 ホワイトボックステスト技法までで本書の全体量の2/3に及ぶ。
「テストの技法」を簡便に学びたい読者は、まず、上記Section 1、Section 2を必要に応じて、読むとよいだろう。
Section 1 ブラックボックステスト:
機能テスト、システムテストのテスト設計技法を学びたい人に適している
Section 2 ホワイトボックステスト技法
単体テストのテストケースの抽出方法を学びたい人に適している
後半1/3はむしろテスト管理の技法に重きが置かれる。
テストドキュメントの紹介(テスト計画書、テスト設計仕様書など)、テストケースによらない探索的テスト、テスト計画、欠陥の分類、テストの終了などが紹介されている。
記述の仕方としては「紹介」というニュアンスが強いので、「基本を一から学ぶ」というより、一定の経験と学習の後に確認、あるいは興味があれば類書にあたる、という使い方が良いだろう。
何を学べるか
第1章 テストのプロセス
「テストとは何か」というといから始まり、テストで直面する課題、テストケースの設計の重要性などを解説する。
第2章 ケーススタディの説明
本書で使用する、2つの架空のケーススタディを説明する。
架空のオンライン証券会社「ブラウン&ドナルドソン」
架空の「ステートレス大学」の登録システム
Section 1 ブラックボックステスト技法
ブラックボックステストの定義、適用対象、難点を確認する。
第3章 同値クラステスト
カバレッジを保ちながら、テストケースを減らす有効な技法として同値クラステストを紹介する。ケーススタディを用いながら、具体的にテストケースを作成していく。
第4章 境界値テスト
多くの欠陥が潜む境界値のテストを紹介する。
ケーススタディを用いながら、具体的にテストケースを作成していく。
第5章 デシジョンテーブルテスト
複雑なシステム要求や、ビジネスのルール、仕様の内容をわかりやすく整理して文書化するための技法である、デシジョンテーブルを紹介する。システムの設計・実装においても、テストにおいても役に立つ技法。
第6章 ペア構成テスト
テストすべき非常に多くの「組合せ」のパターンを、リソースに見合ったテストケース数に減らす方法として、ペア構成テストを紹介する。直交表、Allpairsを用いた、テストケースの作成方法を解説する。
第7章 状態遷移テスト
複雑なシステム要求やシステムの振る舞いを、わかりやすく把握して文書化するための技法として、状態遷移図と状態遷移表を紹介する。テストケースの作成も解説する。
第8章 ドメイン分析テスト
先に紹介した同値クラステスト、境界値テストは独立した変数をテストする技法であった。本章では相互に影響しあう複数の変数を、一緒にテストすることが可能な技法としてドメイン分析テストを紹介する。
第9章 ユースケーステスト
システムの機能を最初から最後まで通してテストするためには、複数の処理の集まりである「トランザクション」単位でのテストケースを作成する必要がある。その有効な記述方法としてユースケースを紹介する。
Section 2 ホワイトボックステスト技法
ホワイトボックステストの定義、適用対象、難点を確認する。
第10章 制御フローテスト
本書ではホワイトボックステストを制御フローテストとデータフローテストの2種類に分けて説明している。制御フローテストはプログラムコードのモジュール内の実行パスに注目する。そしてそのパスを網羅するようにテストケースを作成していく。
第11章 データフローテスト
データフローテストは、データ変数の定義、使用、消滅といったライフサイクルに注目し、コーディングエラーを発見するためのテストである。その考え方を紹介する。
Section 3 テストのパラダイム
正反対ともいえる、2つのソフトウェアのパラダイムとして、「スクリプトテスト」と「探索的テスト」を紹介する。現実のテストはこの両極の両方の要素を含んでいる。
第12章 スクリプトテスト
スクリプトテストとは「仕事を計画し、計画に従って仕事をする」というアプローチのテストであり、事前に作成されたテスト計画、テスト設計、テストケースに従ってテストが遂行される。その代表的なものとしてIEEE829ソフトウェアテストドキュメント標準を紹介する。
第13章 探索的テスト
スクリプトテストとは対照的に、テスト担当者がテストを実行しながら、テストケースの設計内容を考えるアプローチである探索的テストを紹介する。
第14章 テストの計画
前章の対照的な二つのアプローチの「中道」として、テスト計画を立案する技法を紹介する。
Section 4 支援技法
テストを「どこから開始するか」「いつ終了するか」という2つの疑問を考察する。
第15章 欠陥の分類
テストすべき対象を理解し、計画、設計しやすくするアプローチとして、様々な「欠陥の分類」の方法を紹介する。
第16章 テストの終了判定
テストの終了判定の方法として有効な、いくつかの代表的アプローチを紹介する。
Section 5 最後の考察事項
付録A ブラウン&ドナルドソンのケーススタディ
付録B ステートレス大学の登録システムのケーススタディ