ささざめテックブログ

メインブログ:https://sasazame.hateblo.jp/

【技術書評】はじめて学ぶソフトウェアのテスト技法

毎週、技術書を読んで、ざっくり紹介します。今日は、リー・コープランド著、宗 雅彦訳『はじめて学ぶソフトウェアのテスト技法』。

ちょっと古典の域に入っているので、今からコレ読むなら、コッチのほうがオススメかも!な書籍も一番下で紹介しています。

(購入はこちらから)

本書の目次

書籍目次を開く
まえがき
第1章 テストのプロセス
 テストとは何か
 テストで直面する課題
 テストケース
 入力
 出力
 実行の順番
 テストの種別
 テストのレベル
 すべてをテストすることはできない
 まとめ
 演習問題
 参考文献
第2章 ケーススタディの説明
 なぜケーススタディを使用するのか
 ブラウン&ドナルドソン
 ステートレス大学の登録システム
 SectionI ブラックボックステスト技法
 ブラックボックステストの定義
 ブラックボックステストの適用対象
 ブラックボックステストの難点
 ブラックボックステストの利点
 参考文献
第3章 同値クラステスト
 はじめに
 技法の解説
 例題
 例題1
 例題2
 例題3
 例題4
 適用の対象と制約
 まとめ
 演習問題
 参考文献
第4章 境界値テスト
 はじめに
 技法の解説
 例題
 例題1
 例題2
 適用の対象と制約
 まとめ
 演習問題
 参考文献
第5章 デシジョンテーブルテスト
 はじめに
 技法の解説
 例題
 例題1
 例題2
 適用の対象と制約
 まとめ
 演習問題
 参考文献
第6章 ペア構成テスト
 はじめに
 技法の解説
 直交表
 直交表の利用方法
 全ペアアルゴリズム
 最後に
 適用の対象と制約
 まとめ
 演習問題
 参考文献
第7章 状態遷移テスト
 はじめに
 技法の解説
 状態遷移図
 状態遷移表
 テストケースの作成
 適用の対象と制約
 まとめ
 演習問題
 参考文献
第8章 ドメイン分析テスト
 はじめに
 技法の解説
 例題
 適用の対象と制約
 まとめ
 演習問題
 参考文献
第9章 ユースケーステスト
 はじめに
 技法の解説
 例題
 適用の対象と制約
 まとめ
 演習問題
 参考文献
 SectionII ホワイトボックステスト技法
 ホワイトボックステストの定義
 ホワイトボックステストの適用対象
 ホワイトボックステストの難点
 ホワイトボックステストの利点
第10章 制御フローテスト
 はじめに
 技法の解説
 制御フローグラフ
 カバレッジのレベル
 構造化テスト/基礎パステスト
 例題
 適用の対象と制約
 まとめ
 演習問題
 参考文献
第11章 データフローテスト
 はじめに
 技法の解説
 静的データフローテスト
 動的データフローテスト
 適用の対象と制約
 まとめ
 演習問題
 参考文献
 SectionIII テストのパラダイム
 パラダイムとは何か
 テストの計画
 参考文献
第12章 スクリプトテスト
 はじめに
 IEEE829標準規格の各ドキュメント
 テスト計画書
 テスト設計仕様書
 テストケース仕様書
 テスト手順書
 テスト項目移管レポート(リリースノート)
 テストログ
 テスト不具合レポート(または「障害レポート」)
 テストサマリーレポート
 スクリプトテストの利点
 スクリプトテストの難点
 まとめ
 参考文献
第13章 探索的テスト
 はじめに
 探索的テストの詳細説明
 探索的テストの利点
 探索的テストの難点
 まとめ
 参考文献
第14章 テストの計画
 はじめに
 技法の解説
 まとめ
 演習問題
 参考文献
 SectionIV 支援技法
 ブックエンドからの発想
第15章 欠陥の分類
 はじめに
 プロジェクトレベルでの分類
 SEIによるリスク識別のための分類
 ISO9126による品質属性の分類
 ソフトウェアにおける欠陥の分類
 Beizerによる分類
 Kaner、Falk、Nguyenによる分類
 Binderによるオブジェクト指向用の分類
 Whittakerによる"How to Break Software"の分類
 VijayaraghavanによるEコマース用の分類
 最後の注意点
 自分自身の分類を作る
 まとめ
 参考文献
第16章 テストの終了判定
 バナナの原則
 終了判定の方法
 ガバレッジの目標値
 欠陥検出率
 限界コスト
 プロジェクトチームの合意
 「いいから出荷しろ」の一言
 結論に代えてのアドバイス
 まとめ
 参考文献
SectionV 最後の考察事項
 読者自身のテスト用道具箱
 参考文献
付録A ブラウン&ドナルドソンのケーススタディ
付録B ステートレス大学の登録システムのケーススタディ
参考文献
索引
訳者あとがき

紹介と感想

テストに関する書籍といえば、TDD(テスト駆動開発)の本や、先日も紹介したJUnitの本などが存在する。今回読んだこの『はじめて学ぶソフトウェアのテスト技法』は、それらとは異なり、「ソフトウェアテスト」というものそのものを正しく理解するための本。

内容的にはかなり学術的な印象を受ける本で、正直読むのはハードルが高い感覚。原著の発行が2004年、翻訳版が2005年に出たものであるため、内容的にもやや古いと感じる部分は多い。ただ、ソフトウェアテストの根本的な考え方については、現代でも十分通用する内容と思われるため、問題はないだろう。


単純にテストという作業の進め方(How)の部分を知れるというより、何に着目してテストをするのか(What)、何故そのテストが必要なのか(Why)というところに着目しているのではないかと感じられる。ソフトウェアテストというものを理論的に理解する本と思って差し支えないだろう。


ただし、海外で書かれた本であることや、内容が理論面に偏ったものである点から、実際のテストフェーズの作業と一致させるのはやや難しそうに感じた。「とりあえずユニットテスト書いて!」と言われた人がこれを読んでも、ついていけないし即活かせないかもなぁと。

新人プログラマが読んでももちろん価値があるとは思うのだが、どちらかというと、テストケースを設計したりする立場になった人が読むのがいいのではないかと思う。どういったところを意識すれば漏れがなく、また、少ない工数でテストを完了できるのかというのを考えたくなったときのヒントとなる一冊だ。


より日本の現場に即した書籍としては、2021年発売の『【この1冊でよくわかる】ソフトウェアテストの教科書』という書籍のほうが有効かもしれない。
私はまだ読んでいないが、こちらは日本人著者による一冊で、最新のトピックとしてアジャイル開発におけるテストや、テスト自動化についての項目も用意されているようだ。