毎週、技術書を読んで、ざっくり紹介します。今日は、リー・コープランド著、宗 雅彦訳『はじめて学ぶソフトウェアのテスト技法』。
ちょっと古典の域に入っているので、今からコレ読むなら、コッチのほうがオススメかも!な書籍も一番下で紹介しています。
(購入はこちらから)
本書の目次
書籍目次を開く
第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冊でよくわかる】ソフトウェアテストの教科書』という書籍のほうが有効かもしれない。
私はまだ読んでいないが、こちらは日本人著者による一冊で、最新のトピックとしてアジャイル開発におけるテストや、テスト自動化についての項目も用意されているようだ。