書評「基本から学ぶソフトウェアテスト―テストの「プロ」を目指す人のために」

書評「基本から学ぶソフトウェアテスト―テストの「プロ」を目指す人のために」

Cem Kaner (著) , Jack Falk (著) , Hung Quoc Nguyen (著) , テスト技術者交流会 (翻訳) , 日経BP社

カテゴリ:テスト

概要

ソフトウェア開発においては、低い予算、厳しいスケジュール、少ない人員といった厳しい制約の中で、十分な品質を確保することが求められる。本書はそのような開発現場におけるテスト担当者のための、実践的なソフトウェアテストの教科書である。テストにあたっての心得、バグの種類、障害管理システムの構築法から、テスト計画、テスト設計、テスト実施、そしてテスト管理、プロジェクトにおける政治や軋轢、チーム管理まで、詳しく解説する。また巻末には400以上のバグを詳細に分類解説した付録が収められる。テスト担当者はもとより、開発に携わる全ての人々にとっても参考になる実用書である。

本書の使い方

第1章~第5章 すべての読者、とりわけテスト初心者を対象としている。
第6章~第12章 第1部の読者より習熟度が高く、プロジェクトを推進できるテスト担当者、テストリーダーを対象として、テストに関する問題を述べる。
第13章~第15章 テスト管理者を読者対象として、テスト管理に関するポイントを解説する。
本書は、読者が、一定のテスト実務に関する経験と基礎知識を持っていることを前提にしている。
初心者は、他の入門書を一読し、一定の実務を経たうえで、本書を読むことを勧める。

何を学べるか

第1部 基本編
第1章~第5章はすべての読者、とりわけテスト初心者を対象としている。

第1章 テストの進め方
経験を積んだテスト担当者がプログラムの初期テストにどのように取り組むのか、その手順や考え方、障害レポートの書き方から修正確認までを、簡単な足し算プログラムの例に即して、段階を追ってわかりやすく説明する。本章を読むことで、読者はソフトウェアテストの仮想体験ができるようになっている。

第2章 テストの目的と限界
「プログラムが正しく動くことを証明する」という「完全なテスト」を行うことは難しい。では、現実的な「十分なテスト」とはなにか。本章では完全なテストがなぜ困難なのかを考察した上で、テスト担当者の使命は「プログラムが誤っていることの証明」であり、「バグを見つけること」であることを述べる。

第3章 テストの種類と位置付け
本章ではテスト全般についてプロのテスト担当者として身に着けておくべき知識を集めて解説する。「用語」「ソフトウェア開発プロセスの概要」「主なテスト技法の概要」を取り上げる本書の中で、もっとも「用語集」の性格が強い章であり概要をつかんだうえで、リファレンスとして再読するのに適している。

第4章 ソフトウェアエラー
本章では「品質」と「ソフトウェアエラー(バグ)」について定義する。ソフトウェアエラーにはどのような種類があるのか、13の大項目に分類して説明する。 また巻末の付録にて、本章の13の分類項目に基づき400以上のエラーを詳細に説明している。

第5章 障害の報告と分析
プログラマが不具合を直せるかは、不具合レポートの質にかかっている。本章ではプログラマとスムーズにコミュニケーションができる質の高いレポートの書き方、必要な記入項目、再現性のある不具合の分析のコツ、障害を再現させる方法などを解説する。

第2部 テスト技術各論
第1部より習熟度が高く、プロジェクトを推進できるテスト担当者、テストリーダーを対象として、テストに関する問題を述べている。

第6章 障害管理システム
5章で扱った障害レポートを、どのようなシステムで管理するかを解説する。前半では障害管理データベースの基本構造と、実際の業務における流れを詳しく紹介し、どうすれば効果的に障害管理システムを使うことができるかを解説する。とりわけプログラマ、テスト担当者、テストリーダー、プロジェクトマネージャ、経営陣などのそれぞれの立場の各ユーザーが障害管理システムに求めている情報、逆に人間関係に摩擦を引き起しかねない情報が何かを詳細に説明している点は学習者にとって役立つ。後半では障害管理システムを設計、実装する際の具体的な提案を解説する。

第7章 テストケースの設計
質の高いブラックボックステストの設計の要点を解説する。その際に有用なテスト技法として、同値クラスと境界条件、状態遷移、競合状態などタイミングに関するテスト、負荷テスト、関数等価テストなどを紹介する。また修正がうまくいったかを確認する回帰テストについても解説する。

第8章 プリンタ(およびその他のデバイス)のテスト
本章では構成テストの考え方とその進め方について述べる。概要を述べた上で、実際の事例としてプリンタの構成テストを取り上げる。考慮しなければならない項目、テストの計画と設計の際のポイントを詳細に説明する。学習者は、本章を読むことで、実際に一つのプリンタの構成の組合せをテストする際に、どれだけのことを知っておかなければならないか、を知ることができる。他のドメインの構成テストを行う際の考え方を身に着ける上でも参考になる。

第9章 ローカライゼーションテスト
ソフトウェアを他の国の言語に移植する作業である「ローカライズ」において、必要なテストを述べる。文字セット(コード)、キーボード、スペリングのルール、それぞれの文化に依存した表現、などテスト計画時から盛り込んでおくべき、推奨するテストを紹介する。

第10章 ユーザマニュアルのテスト
製品としてのソフトウェアにはユーザーマニュアル、インストールガイドなどのドキュメントも含まれる。これらも大切な製品の一部であり、テストの対象である。本章では質の高いドキュメントがもたらす品質への効果、ドキュメントをテスト(レビュー)する際の考え方、勘どころ、マニュアルの作成工程などを解説する。

第11章 テストのツール
ブラックボックステストにおける有用なテストツールを解説する。ツールにはどのような種類のものがあるか、受入れテストや回帰テストを自動化する際の設計のポイント、コード解析ツールでどのような不具合が検出できるか、グレーボックステストに用いられるツールなどを説明する。

第12章 テストの計画とドキュメント
本章ではテスト計画書の具体的な作成方法を解説する。本書の技術的な中心をなす。 テスト計画書を作成する目的と効用、テスト計画書にはどのような種類のテストが含まれているべきなのか、テスト計画書を作成する際の戦略の立て方、そしてテスト計画書の構成要素として書かれるべきリストや表を、具体例を挙げて一つ一つ詳細に解説する。テスト計画書を作成する際の参考資料として、初心者からベテランまで、活用できる内容になっている。

第3部 テストプロジェクトやテストチームの管理
テスト管理者を読者対象としている。

第13章 開発全体におけるテストの役割
本章では、テスト管理者として身に着けておくべき、テスト全体における、組織的・戦略的な勘どころを詳しく説明する。 開発プロジェクトにおいては、信頼性、機能、コスト、納期などのトレードオフの問題が必ず発生する。テスト担当者として、トレードオフの要素を理解し、適切な情報を提示し、上位層を納得させなければならない。また、テストの段階ごと(アルファテスト、ベータテスト、最終確認テストなど)において、円滑にテスト業務が行われるように、管理者として意識しなければならないポイントについて具体的に解説していく。

第14章 ソフトウェアの不具合に対する法的責任
品質管理担当者は製造物責任法(PL法)に関する理解を持つべきである。本章では、消費者がソフトウェア会社を訴える可能性がある領域を解説する。 契約の不履行(保証義務違反など)、欠陥製品にかかわる訴訟(横領、厳格な責任、業務上の過失責任、詐欺的行為など)、内部告発など、事例を挙げて詳しく説明する。

第15章 テストチームの管理
本章ではテストチームの管理について、品質管理をどのように実現するのかを解説する。チームの運営、管理の方法や心得、良くある問題などについて事例を挙げて詳しく説明する。 テストチームの役割は、技術的なサービスや情報を提供することであること。また、自分たちでテストを行わずにアウトソースに丸投げするのは無理であり、適切な管理が必要であること、スケジュールや見積もりのコツ、要員の採用と配置、やる気の維持などについても説明する。

付録 よくあるソフトウェア不具合
400種類以上のバグを13のカテゴリーに分けて、詳しく解説する。本付録を読むことで、読者がテスト中にバグに遭遇した際に、そのバグの詳細や背景について理解できるように配慮されている。