Facebook x

ジャンル

書評「ソフトウェアテストを改善する50の実践手法」

エルフリード・ダスティン (著), 成田 光彰 (翻訳), 日経BP社

テスト

概要

ソフトウェアテストを成功に導くために有効な、50のベストプラクティスをまとめる。実際のテスト業務においてとりわけ改善効果の高いものを精選しており、扱う範囲も、要求定義、テスト計画、テスト・チーム、テスト設計とテストドキュメンテーション、単体テスト、自動化、非機能的テスト、テスト管理、と幅広い。とりわけ著者は、各論を提示しつつも、テストを開発ライフサイクル全体の中でとらえなおして、開発とテストを統合して考えることの重要さを強調する。TIPS集というよりも、本格的なソフトウェアテスト改善のための実務書であり、初心者よりも、中堅~管理職に薦めたい。

本書の使い方

各章ごとにテーマ分類されており、読者は自分の興味のある章単位で読むことを勧める。
第1章、第2章はすべての読者に通読を薦めたい。
テスト管理者には第3章、第10章
テスト設計者には第5章、第9章
開発者には第4章、第6章
テストの自動化を検討する人には第7章、第8章
から、多くの示唆を得ることが出来るだろう。

何を学べるか

第1章 要求フェーズ
要求フェーズ段階からテストの作業を始めることは、最も効果的なテスト活動であると著者は説く。要求をテスト担当者の視点から検討し、要求が定まり次第、テスト設計に取り掛かること、要求の変更があれば関係者全員に周知徹底させることなど、本章ではテストの仕事に関連して、要求フェーズ段階で考慮しておくべき事項を取り上げる。

第2章 テスト計画
テストを成功させるためにはテスト計画が重要である。テストの達成目標を明確にして理解する方法、テスト戦略を決定するためのアプローチ、考慮すべきリスク、テストデータや環境の準備、スケジュールとコストの見積もり、見積りに基づく予実管理など、テストを成功に導くためのテスト計画を作成する際のポイントを解説する。

第3章 テスト・チーム
本章では、テストを成功に導く中心的な要素である、テストチームについて考察する。テストチームを構成するメンバーの役割と構成、メンバーのスキル・専門知識・経験のバランスのとり方、テスト担当者の有効性を評価する方法など、テストチームを組織する上でのポイントを紹介する。

第4章 システム・アーキテクチャ
ソフトウェアを適切にテストするためには、テスト対象のシステム内部のアーキテクチャ面も検討する必要がある。グレーボックステストの考え方、システム自体がテスト可能であることを検証し、テストの有効性を高めるために必要な考え方、また、要求段階からテスト担当者が関与することによって、システム自体にロギングや動作の追跡の仕組みを講じることで、テストの容易性を高めることが出来ること、などを紹介する。

第5章 テストの設計とドキュメンテーション
テストの設計とテストケースの作成方法、用いるべきテスト技法、テスト手順テンプレートなどについて、詳しく解説する。加えて、テストに必要なドキュメンテーションに関してその要点を説明する。また、要求とシステム設計の変更に応じた、テストの改定の重要性と、そのノウハウについても説明する。

第6章 単体テスト
開発者による効率的な単体テストについて解説する。単体テストを実施すれば、ソフトウェアの品質は向上し、それ以降のテストフェーズでの成功率が高まる。しかし単体テストは時間もコストもかかる。本章では、効率的に単体テストを実施するため考え方と手法を紹介する。

第7章 自動的テスト・ツール
自動テストのツールを用いてテストを効率化するためには、その特徴や問題点を理解しておく必要がある。本章では、自動テストツールにはどのような種類があるのか、ツールのメリット・デメリット、ツールを選定・購入する際に考慮すべき事柄、ツールを自社で内製する場合の考慮点などを解説する。

第8章 自動的テスト:精選したベスト・プラクティス
テストの自動化を成功させるためのベストプラクティスを紹介する。キャプチャ/プレイバックツールの適切な使い方、テストハーネスを利用した効率的なテスト方法、回帰テスト、ビルドテスト、スモークテストの自動化などを紹介する。

第9章 非機能的テスト
ソフトウェアアプリケーションの非機能的な側面のテストについて解説する。非機能要求を満たすことは、アプリケーションの全般的な品質の向上に寄与するので、可能な限り開発の初期段階から考慮しておくことが望ましい、と著者は説く。本章では、パフォーマンステスト、セキュリティテスト、使いやすさ、互換性、同時アクセステストなどを紹介する。

第10章 テストの実施を管理する
テスト実行フェーズを管理するためのノウハウ、戦略について解説する。テストケースの実行状況及び、欠陥のライフサイクルの追跡する適切な方法、テストの進捗を評価するためのメトリクスの収集などを紹介する。