ソフトウェアの品質保証やテスト関して紹介しやすいコンテンツとして「【この1冊でよくわかる】ソフトウェアテストの教科書 [増補改訂 第2版]」と「ソフトウェアテスト徹底指南書 〜開発の高品質と高スピードを両立させる実践アプローチ」をよく利用している。タイトル通りだけれども教科書は基本を確認しやすく、指南書は高度で専門的な内容となっている。要は使い分けなのだけれども、では共通的な部分がどこまで共通なのかが気になった。というわけで共通部分を中心にちゃんと比較してみようと思ったという記事*1。
なお内容は読み手(わたし)の力量による。確からしさは保証できない(たぶん大丈夫だと思っているけれど)
教科書と徹底指南書の概要
だいたいこんな感じだろうか
- 【この1冊でよくわかる】ソフトウェアテストの教科書 [増補改訂 第2版]
- タイトル通りの教科書で、テストに関する研修テキストのような構成
- テストで作成する各種ドキュメントはサンプルを示しながら説明するスタイル
- 企業向け情報システム開発(いわゆるエンプラ開発)向けの内容となっている
- ソフトウェアテスト徹底指南書 〜開発の高品質と高スピードを両立させる実践アプローチ
- (おそらく)日本のソフトウェアテストコミュニティで共有されている、テストに関するトピックを網羅的に収録しただろう、カバー範囲の広い本
- 著者の知見だけでなく、多数の評価の高い書籍のノウハウが多数引用されている
- 対象範囲も限定されておらず、ウェブ、プロダクト開発、組込みなど広い範囲をカバーしている
両書の共通項についての比較 読み比べ
以下、『ソフトウェアテストの教科書』(Text)の章番号を T-Ch、『ソフトウェアテスト徹底指南書』(Guide)の章番号を G-Ch で記載する*2。
基本概念:ソフトウェアテストとは
まずは入り口から見て行こう。T-Ch 1、G-Ch1 タイトルは同じく「ソフトウェアテストとは」である。この時点で両者の方向性が異なっているのことがわかり興味深い。
『ソフトウェアテストとは、欠陥を取り除いて、ユーザーの要求を満たす、品質のよいソフトウェアを作ること』(T-Ch 1)
『ソフトウェアテストは、ソフトウェアからフィードバックを得る活動です。そのフィードバックは、デバッグや品質向上といった様 々なソフトウェア開発活動で活用されます』(G-Ch 1)
冒頭でも述べたが、教科書の方は企業向け情報システム開発(いわゆるエンプラ開発)を意識しており、極端にいえば「作ってテストしてリリースする」というスコープであるのに対して、指南書はウェブ・プロダクト開発などを含む継続的な品質活動までをスコープにしているところが大きな違いだ。
テスト戦略
教科書はシンプルにV字モデルを中心に工程とテスト戦略を整理している(T-Ch 2「ソフトウェア開発の流れとテスト工程」)。主軸はウォーターフォール型開発(アジャイルは別章 T-Ch 12 で解説)で、丁寧に段階的な開発工程の説明を行い、それに対比させてどのようなテストを行うかを解説しており シンプルでよい。ソフトウェア開発の初心者にとってはわかりやすい良い説明だと思う。なおコラムでW字モデルが紹介されている。
一方で、指南書ではV字モデルは「伝統的な開発のテスト」というひとことで済まされており、細かい説明もない(G-Ch 5「定番のテスト戦略」>5.3「W字モデルの戦略」)。また他の戦略として アジャイル開発(G-Ch 6)、継続的デリバリー(G-Ch 7)、DevOps(G-Ch 8)、プロダクトライン開発(G-Ch 9)もカバーされている。応用編ともいえるが、実際のソフトウェア開発におけるウォーターフォール開発の適用機会も減っているという意味では、指南書のほうが射程も長く、実践的な印象だ。
テスト計画
ソフトウェアテストは計画も大事。ただこのテスト計画については、両書で取り扱い方は異なる。 教科書では概論を述べたあとは事例紹介を中心に計画を紹介していく(T-Ch 9「テストドキュメントの作成」)。一方で指南書ではじっくりと考え方やポイントについて論じていく(G-Ch 32「テスト計画」)。どちらも最終的に目標とするアウトプットは似ている。
とっつきやすさで言えば教科書はわかりやすいだろう。ただ、指南書には以下のような記述があり、まさにこの懸念はあると思う。
テスト計画書には様々なドキュメントテンプレートが提唱されています。(中略)不適切なテスト計画のやり方として、このテスト計画書のテンプレートを埋めるだけでテスト計画を進めるというものがあります(G-Ch 32.2「アンチパターン:テンプレート穴埋め計画」)
いやな臭い。
テスト観点/テスト分析
テスト観点というのはあいまいな表現だけど、「テストの切り口」(T-Ch 2)とか「テストすべきもの」(G-Ch 14)のことを指している。このテスト観点についての扱い方も対照的だ。 教科書ではテスト観点については「必要である」ということと「再利用可能なテスト観点一覧を保持して、ノウハウ化する」ということが述べられている一方で具体的な作成方法についてはあまり触れていない(そのかわり、かなり有用なサンプルが掲載されている)(T-Ch 1「ソフトウェア開発の流れとテスト工程」>「テスト観点一覧表の作り方」)。 一方で指南書ではテスト観点の作成そのものが「テスト基本分析」(G-Ch 12)「テスト詳細分析」(G-Ch 15)と整理されており、かなり詳細に記載されている。ただ、内容はかなり難しく応用編になっているともいえるだろう。
テスト設計/テスト技法
これは言うまでもなく教科書より指南書のほうが多数の技法をカバーしている。が、教科書でも必要なラインナップはカバーしていると思う。
テスト実装/テストケース作成
実はこのあたりからちょっと印象が変わる。教科書のほうが親切に見えるのだ。
- 指南書では引き続き、抽象度の高い説明が中心である(G-Ch 18「テスト実装」)。優れた説明だけど、抽象度が高くて、ちょっとツラい
- 教科書はサンプルを示しながらの説明となっている(T-Ch 9「テストドキュメントの作成」>「テストケース作成のための中間成果物」、「テストケース」「テストログ」)
テンプレート思考になってサンプルの見かけを真似てしまうだけになる恐れはあるけれども、テストケース作成という点では教科書の説明の仕方はたいへんにわかりやすいと思う。
結局、教科書と指南書はどんな使い分けが良いのか
私見だが、こんな感じがよさそう
- 教科書:初めてテストについて学びたい人、もしくは基礎を学び直したい人向け。ハウツー本として、書いてある内容を実行すれば一定レベルのテストが実施できる
- 指南書:品質に関して何らかの課題を持っていて、解決のヒントを探している人向け。
おまけ:書籍内容の比較表
注:この表の作成にはAIを利用した(目次だけ入力している)。便利な世の中になったものだ。
凡例(再掲)
基本・技法・設計
| 縦:徹底指南書 (章構成) | 横:教科書 Part 1 (基本・プロセス) Ch 1〜2 |
横:教科書 Part 2 (技法・設計) Ch 3〜8 |
|---|---|---|
| Part I & II 基本・戦略・プロセス (Ch 1〜10) |
【共通:基本概念】 ・T-Ch 1「テストとは」⇔ G-Ch 1「目的・課題」 ・T-Ch 2「開発の流れ・Wモデル」⇔ G-Ch 5.3「Wモデルの戦略」 【指南書の拡張】 開発モデル別の戦略論へ展開。 ・シフトレフト (G-Ch 5.1) ・アジャイル戦略 (G-Ch 6) ・DevOps/継続的デリバリー (G-Ch 7, 8) |
- |
| Part III 分析・設計・技法 (Ch 11〜17, 21〜24) |
【指南書の拡張:分析】 技法適用の前に「分析・設計」プロセスを定義。 ・テスト基本分析 (G-Ch 12) ・テストアーキテクチャ設計/VSTeP (G-Ch 13, 14) |
【共通:ブラックボックス技法】 ・T-Ch 4「同値・境界値」⇔ G-Ch 16.3, 16.4 ・T-Ch 5「デシジョン」⇔ G-Ch 16.6 ・T-Ch 6「状態遷移」⇔ G-Ch 16.7 ・T-Ch 7「組合せ」⇔ G-Ch 16.8, 17.3 ・T-Ch 3「ホワイトボックス」⇔ G-Ch 16.10「制御フロー」 【指南書の拡張】 ・探索的テスト (G-Ch 22) ・ユーザーストーリーテスト (G-Ch 23) |
| Part III & VI 実装・環境・実行 (Ch 18〜20, 37〜43) |
- | 【共通:テスト実装】 設計したテストを手順化・実施するフェーズ。 ・G-Ch 18「テスト実装(手順作成)」 ・G-Ch 20「実行と結果判定」 |
| Part IV 自動テスト (Ch 25〜31) |
- | 【関連:ホワイトボックス】 教科書 Ch 3 の内容は、指南書では「開発者テスト」として深化。 ・G-Ch 30「開発者テスト」 ・G-Ch 31「テスト駆動開発(TDD)」 |
ドキュメント・自動化・マネジメント
| 縦:徹底指南書 (章構成) | 横:教科書 Part 3 (ドキュメント・管理) Ch 9〜11 |
横:教科書 Part 4 (次のステップ) Ch 12〜13 |
|---|---|---|
| Part I & II 基本・戦略・プロセス (Ch 1〜10) |
- | 【共通:アジャイル】 ・T-Ch 12「アジャイル開発とテスト」⇔ G-Ch 6「アジャイル開発でのテスト戦略」 ※教科書は「概要」、指南書は「4象限」や「ゾンビスクラム対策」など実践戦略。 |
| Part III 分析・設計・技法 (Ch 11〜17, 21〜24) |
【共通:ドキュメント作成】 ・T-Ch 10「正しい書き方」⇔ G-Ch 15「詳細設計(ケース設計)」 |
- |
| Part III & VI 実装・環境・実行 (Ch 18〜20, 37〜43) |
【共通:不具合管理】 ・T-Ch 9,11「不具合報告書・分類」⇔ G-Ch 20.5「バグ報告」, G-Ch 38「バグ管理とチケット設計」 |
【指南書の拡張:CI/CD】 自動化を支える基盤技術。 ・G-Ch 37「CI/CDの構築」 ・G-Ch 42「ブランチ管理」 |
| Part IV 自動テスト (Ch 25〜31) |
- | 【共通:テスト自動化】 ・T-Ch 13「導入・ツール」⇔ G-Ch 25「自動テストの活用」 【指南書の拡張】 実装・コード品質まで深く網羅。 ・品質/Flaky対応 (G-Ch 26) ・設計原則/FIRST/xUTP (G-Ch 28) ・デザインパターン/PageObject (G-Ch 29) |
| Part V 計画とマネジメント (Ch 32〜36) |
【共通:計画とモニタリング】 ・T-Ch 9「テスト計画書」⇔ G-Ch 32「テスト計画」 ・T-Ch 11「モニタリング」⇔ G-Ch 33「モニタリングとコントロール」 【指南書の拡張】 リーダー・マネージャー向け視点。 ・プロジェクトリスク (G-Ch 34) ・組織能力・採用・心理的安全性 (G-Ch 35, 36) |
- |