最近自分の周りで「テスト戦略とは何か」という議論をちらほら見ます。それを見ていて、世の中のテスト本ではどのような定義で「テスト戦略」の言葉を使っているか気になりました。
そこで今回、テスト戦略について解説のある書籍を、概要とともにリストアップしてみました。
リストアップの対象
数が多いので、テストの解説本で、紙面化されいて、日本語で書かれている書籍に対象を絞っています(よく引用されるJSTQBだけ例外)。
なお、一般的に市販されている日本語のソフトウェアテスト専門書はほとんど読んでいると思いますが、忘れたり、手元になかったり、破棄したりした本もあるので、抜け漏れもあるかと思います。
前置き:推薦図書
リストを書く前に、先に推薦文献や全体の傾向に触れます。
推薦文献ですが、テスト戦略を学ぶ取っ掛かりとしては、「http://www.jasst.jp/archives/jasst10s/pdf/S1.pdf」「JSTQB Advanced Level シラバス日本語版 テストマネージャ」の2つがお勧めです。両方とも手軽に読めて無料です。
次のステップは、学びたいテスト戦略の目的やスコープによって変わると思います。たとえばマネジメントを含むテストプロジェクトの戦略を学ぶ場合、以降のリストで「詳細度★★★」にしている書籍は推薦できると思います。テスト設計の戦略ならばとっかかりとして「ソフトウェアテスト 293の鉄則」が、具体例としてリストの後半にあるバイザー本や、HAYST法の本等が良いと思います。
前置き:リストアップした書籍の全体の傾向
次にリストアップした書籍の全体の概要です。
多くの書籍は、一般的な「戦略」の定義に則った上で、書籍のテーマの戦略を「テスト戦略」と呼んでいるようです。例えばテスト設計の解説書なら、テスト設計の戦略をテスト戦略と呼称することが多いです。マネジメントの解説書なら、テストマネジメントの戦略をテスト戦略と呼称することが多いです。
また「テスト戦略」の定義は多少のブレがあります。リストアップした書籍をグループ分けすると、概ね以下の流派がありそうです。
前置き:凡例
整理のため、書籍解説では以下の凡例に基づいて項目分けしています。
- 【解説の詳細度】として、テスト戦略の直接的な解説の詳しさに応じて★を大まかに付けています。★が多いほど解説が多いです。
- 【解説目的】として、本でテスト戦略を解説している目的を、以下から複数選択で記載します。
- 【遂行手段】として、テスト戦略を遂行するために工夫・実践する活動を、以下から複数選択で記載します。
- スケジュール・リソース:マネジメントに含まれる、スケジュール・人員・環境確保・組織体制の戦略を策定する
- テストプロセス:テストプロジェクト全体のプロセスの戦略を策定する
- テスト設計:テスト設計や、テスト設計に限定したプロセスの戦略を策定する
- テスト実装:テスト実装の戦略を策定する
テスト戦略を解説した書籍(タイトルが詳細へのリンクになっています)
「実践ソフトウェアエンジニアリング」
【解説の詳細度】★★★
【解説目的】定義解説、グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
「ソフトウェアテストの戦略とは、品質の高いソフトウェアが開発できるように、テスト設計手法を手順や計画としてまとめあげることである」と記述。
良いテスト設計をするためのテストプロジェクトの戦略を、テスト戦略と呼称している。テスト設計の進め方がメインだが、テスト設計を円滑にするための組織構成やプロジェクトの段取りもテスト戦略に含まれる。
「ソフトウェアテスト12の必勝プロセス」
【解説の詳細度】★★★
【解説目的】定義解説、グッドプラクティス解説、事例解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
「テストプロジェクトとテストチームの目標または任務に沿って採用した手法及び意思決定の総体」をテスト戦略と記述。「テストを実行する時の具体的な方針、技法、プロセス、方式」はテスト戦術として、テスト戦略と区別している。
プロジェクトを成功させるためのテストプロジェクトの戦略を、テスト戦略と呼称している。環境確保、予算の工夫など広い範囲のマネジメントの工夫もテスト戦略に含む。
JSTQB,ISTQB,「Advanced Level シラバス日本語版 テストマネージャ」
【解説の詳細度】★★★
【解説目的】定義解説、グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
「テスト戦略は、組織の一般的なテスト方法を記述している。プロダクトおよびプロジェクトのリスクマネジメント、テストレベルへの分割、およびテストに関する上位の活動を含む」と呼称。
テスト戦略は、複数のプロジェクトに横断的に適用できる、普遍的・一般的なテスト活動の工夫と定義している。特定プロジェクトに限定されない、組織横断的な知見であることが判断基準で、テスト戦略が扱う活動に縛りは設けていない。テスト技法の選択、自動化ツールの導入、コンサルの活用など様々なものをテスト戦略として紹介している。
本書はテスト戦略の参考文献として、引用されていることが多い。
「ソフトウェアPRESS vol.5」
【解説の詳細度】★★★
【解説目的】定義解説、グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計
【特徴や留意点など】
「テスト戦略とは、テストがうまくいくようにテスト設計の方法(アプローチ)や考え方をまとめ上げることです」と記述。
テストレベルの分け方の工夫、リソース配分、テスト設計技法の選択など、リソースの割り当て、テストの段取り、テスト設計が主な内容。そのほか、レビューや設計のコーディネートなど、他の関連活動の戦略もテスト戦略で扱っている。
ソフトウェアテスト実践ワークブック
【解説の詳細度】★★★
【解説目的】定義解説、グッドプラクティス解説
【遂行手段】テスト設計
【特徴や留意点など】
「テストによりプロジェクトにどんな利益がもたらされるか」というテスト目標をインプットとして策定した、「テストの指針となる原則とアイデア」がテスト戦略と記述している。
テスト設計をうまくするための、テストの十分性基準の設定と、テスト設計の段取り・技法選択が主な内容である。
「TPI NEXT ビジネス主導のテストプロセス改善」
【解説の詳細度】★★
【解説目的】グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計
【特徴や留意点など】
「テスト戦略とは、工数やリソースをテストプロセスへ最適に割り振るための指針である。テスト戦略には、テストにかける工数の分配と、テストする箇所のカバレッジやテスト対象の側面について定義する」と記述。
定義は独自のもの。TPI NEXTはテストの活動をキーエリアという要素に分割している。本書のテスト戦略はそのキーエリアの一つであるが、他書のテスト戦略に含まれるテスト設計や組織、計画などの戦略は、他のキーエリアに分離されている。
「ソフトウェアテスト 293の鉄則」
【解説の詳細度】★★
【解説目的】定義解説、グッドプラクティス解説
【遂行手段】テスト設計
【特徴や留意点など】
「テスト戦略とは、テスト設計の指針をまとめたものを指している」と記述。「テスト戦略」に、プロジェクトのリソースやスケジュールの工夫といったマネジメントの計画は含まれない。
良いテストを作るためのテスト設計のやテスト設計プロセスの戦略を、テスト戦略と呼称している。
本書はテスト戦略の参考書籍として、引用されていることが多い。
「ソフトウェア品質保証の考え方と実際」 、 「ソフトウェア品質保証入門」
【解説の詳細度】★★
【解説目的】事例解説、グッドプラクティス解説
【遂行手段】テストプロセス、テスト設計
【特徴や留意点など】
内容が重複しているので二冊をまとめる。前者が詳細本、後者が入門本と位置づけられているが、テスト戦略に限っては、後者のほうが解説が多い。
良いテストを作るためのテスト設計の戦略を、テスト戦略と呼称している。
テスト設計と、テスト設計を主観点にしたプロセスの戦略が中心。本書ではレビューをテストの一部(机上テストと呼称)としているため、テスト戦略にレビューの戦略も含まれる。
「事例とツールで学ぶHAYST法」
【解説の詳細度】★★
【解説目的】定義解説、グッドプラクティス解説、事例解説
【遂行手段】テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
政略と戦略の2つの用語を区別して使い分けている。戦略は英語のStrategyと対応付ける事が多いと思うが、本書は、政略にPrinciple・Policyを、戦略にPersonnel・Planを対応付けている。
良いテスト作るためのテストプロジェクトの戦略を、テスト戦略と呼称している。
テスト戦略はテスト設計と、テスト設計プロセスの戦略が主だけれど、他部署との連携などマネジメントの戦略も含んでいる。
「ソフトウェアテスト見積りガイドブック」
【解説の詳細度】★★
【解説目的】グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
「ソフトウェアの重要な部分を特定したうえで、品質をどこまで確保し、そのためにテストにどれだけの資源を投入するか、また投入する資源をどう使うかといった方針」をテスト戦略と呼称。
戦略に対応する英語にはApproachを挙げている。
テストの解説というより見積もりの解説の書籍である。ただ見積もりの分析材料としてテスト戦略を重視しているため、全体に渡って戦略への言及がある。
「自動ソフトウェアテスト」
【解説の詳細度】★★
【解説目的】グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計
【特徴や留意点など】
テスト戦略を、欠陥予防戦略と、欠陥検出戦略の2つで構成している。両方共プロジェクト全体の活動を含む。欠陥予防戦略は、早期のテスト関与、標準ガイドラインの活用、レビューなどを扱う。欠陥検出戦略はレビュー、テスタビリティの作り込み、テスト自動化、リスクアセスメントなどを扱う。
テスト戦略に、テスタビリティの作り込みと言った設計・実装の工夫が含まれるのが特徴。
「ソフトウェアのテスト技法(計算機科学/ソフトウェア技術講座)」
【解説の詳細度】★★
【解説目的】グッドプラクティス解説
【遂行手段】テストプロセス、テスト設計
【特徴や留意点など】
「単体テスト、結合テストなどテストの作業段階の設定を含め、どのような順序でプログラムの構成要素をテストしていくかを定める」ことをテストの戦略と記述している。
テストレベル・テストフェーズの策定、結合テストのアプローチ、テストの実施準備など、テスト実施の段取りの話が中心。
ソフトウェアテストを改善する50の実践手法
【解説の詳細度】★★
【解説目的】グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
「テスト戦略は○○である」という定義の説明はない。ただ「テスト目標を最も有効な方法で達成する助け」「所定の目標を達成するために、テスト・チームが遂行すべき非常に具体的なアクティビティが含まれる」なものがテスト戦略と説明される。
テスト戦略は、テストプロジェクトを成功させるための戦略全般を指す。テストプロジェクトのリスクマネジメントが中心である。
バイザー本 「実践的プログラムテスト入門」 , 「ソフトウェアテスト技法」
【解説の詳細度】★
【解説目的】グッドプラクティス解説
【遂行手段】テスト設計
【特徴や留意点など】
著者が同じで言葉遣いが似ているため2冊をまとめる。
「テストスイートに含めるテストケースを選択/生成するためのシステマティックな方法」をテスト戦略と記述。
良いテストを作るためのテスト設計の技法やアプローチを「テスト戦略」と呼称している。テスト戦略とテスト設計技法を同等のものとして扱っているのが特徴的。
なお「ソフトウェアテスト技法」ではテストのための開発の戦略も解説しているが、テスト戦略とは区別されている。
「ソフトウェアテストと品質保証の実際」
【解説の詳細度】★
【解説目的】事例解説
【遂行手段】テストプロセス、テスト設計
【特徴や留意点など】
色々な会社のテストや品質保証の事例をまとめた書籍。
「戦略」は開発を含めて包括的に解説されていたり、他の用語(アプローチ等)に置き換わっていたりするので、本書では「テスト戦略」という言葉はあまり出てこない。ただテスト戦略に該当する活動の解説は複数ある。
日立の事例でのテスト戦略として、前述の「ソフトウェア品質保証の考え方と実際」とほぼ同じ解説が行われている。
アクセンチュアの事例で、「各テストステージ(JSTQBでいうテストレベル)の範囲、テストプロセス、役割と責任、必要となるMetricsを明確に定義する」のがテスト戦略と解説されている。
「ソフトウェアテストの技法第2版」
【解説の詳細度】★
【解説目的】グッドプラクティス解説
【遂行手段】テスト設計
【特徴や留意点など】
良いテストを作るためのテスト設計の戦略を、「テストの戦略」と呼称している。
テストの戦略として、ホワイトボックステストとブラックボックステストを挙げている。内容はテスト設計のみ。バイザー本と同じく、テスト設計技法とテスト戦略を区別していないように見える。ただ、テスト設計技法の書籍なのでたまたまそうなっているだけかもしれない。
「基本から学ぶテストプロセス管理」
【解説の詳細度】★
【解説目的】グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
「テストの戦略とは、できるだけ多くのバグを突き止めて識別するための全体的な計画」と記述。テスト戦略の範囲は広く、要員確保などリソースマネジメントの戦略も包含。
プロジェクトを成功させるための、テストプロジェクトの戦略をテスト戦略と呼称している。
「テスト戦略」の言葉の解説は少ない。ただ書籍全体がテスト戦略のグッドプラクティスの解説を行っているような内容で、今回のテーマにとっては重要度が高い本だと思う。
「体系的ソフトウェアテスト入門」
【解説の詳細度】★
【解説目的】グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
プロジェクトを成功させるためのテストプロジェクトの戦略を「テストの戦略」と呼称している。
テスト戦略には、誰がテストするか、トレーニングをどうするかといった、マネジメントの要素を含む。直接的な説明は少ないが、テスト戦略に該当する活動の解説は結構ある。
「基本から学ぶソフトウェアテスト」
【解説の詳細度】★
【解説目的】グッドプラクティス解説
【遂行手段】スケジュール・リソース、テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
まとまった解説はなく、散発的にテストの戦略という言葉を使っている。プロジェクトを成功させるための、テストプロジェクトの戦略全般をテスト戦略と呼称しているようだ。
「ソフトウェアテストHAYST法入門」
【解説の詳細度】★
【解説目的】グッドプラクティス解説、事例解説
【遂行手段】テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
良いテストを作るための、テスト設計と、テスト設計プロセスの工夫を「テストの戦略」と呼称している。ただ戦略がテスト設計の話ばかりなのは、テスト設計手法の解説本なのでたまたまそうなっている可能性もある。
同じ著者の方の別のHAYST法の本で、テスト戦略の解説が行われている。
「現場の仕事がバリバリ進むソフトウェアテスト手法」
【解説の詳細度】★
【解説目的】用語解説、グッドプラクティス解説
【遂行手段】テストプロセス、テスト設計、テスト実装
【特徴や留意点など】
「テスト全体の活動のバランスを考えるのがテスト戦略です」「テスト戦略とは、品質目標達成のために、どうテストを進めれば市場に出てはいけない重大なバグを『できるだけ早く、できるだけ低コストで発見する』ことができるかを決めることです」と記述。
プロジェクトを成功させるためのテストプロジェクトの戦略を、テスト戦略と呼称している。テスト戦略には、ミーティング方針などの開発チームとの連携の戦略や、見積もりの戦略も含まれる。
なおプレゼン資料なので今回含めていないが、著者の方がテスト戦略についての講演資料を公開している(http://www.jasst.jp/archives/jasst10s/pdf/S1.pdf)。こちらは「テスト戦略とは何か」をダイレクトに解説している資料で、今回のテーマを学ぶなら必読だと思う。
「ステップアップのためのソフトウェアテスト実践ガイド」
【解説の詳細度】★
【解説目的】用語解説、グッドプラクティス解説
【遂行手段】テストプロセス、テスト設計
【特徴や留意点など】
大辞泉の戦略の解説を引用し、それに準拠している。その定義にもとづいて、テストプロジェクトの戦略をテスト戦略と呼称。
戦術と戦略の区別を重視している。「ツールによる自動化」「リソース不足解消のための人員追加」「テスト設計技法の選択」といったものはテスト戦術であり、テスト戦略に含めるべきでないと記述している。
「ソフトウェア品質知識体系ガイドV2」
【解説の詳細度】★
【解説目的】グッドプラクティス解説
【遂行手段】テストプロセス、テスト設計
【特徴や留意点など】
解説はISO/IEC29119を紹介するのみ。一応の引用としてISO/IEC 29119はOrganizational Test StrategyとTest Strategyの2つを提示している。後者は「part of the Test Plan that describes the approach to testing for a specific test project or test sub-process or sub-processes」と記述している。ここにはテスト設計だけでなく、ツールや環境の戦略も含まれる。
(このBOKは日本でのテストの話題を結構網羅しているので)意外だったが、テスト戦略の定義や解説はほぼなかった。
実践アジャイルテスト
【解説の詳細度】★
【解説目的】グッドプラクティス解説、事例解説
【遂行手段】テストプロセス、テスト設計
【特徴や留意点など】
「戦略は長期の行動計画」と記述している。複数のプロジェクトで共通なテストのプロセス・戦略をテスト戦略と呼称している。JSTQBと類似している。
テスト戦略には、テストレベル、テストパラダイム、ツール、環境など、テストのエンジニアリングプロセス全般が含まれる。
テスト戦略についての直接的な解説は少ないが、アジャイルテストにおける、テスト戦略に該当する活動についての解説を全体に渡って行っている。