世の中のアジャイルテスティングの定義と原則

アジャイルテスティングの定義や原則には、いくつかのバリエーションが存在します(大きく「アジャイル原則に適合したソフトウェアテスティング」or「アジャイルに適合したソフトウェアテスティング」の2つに分けられます)。今回は情報の整理のため、有力な文献をいくつかピックアップしました。

実践アジャイルテスト

実践アジャイルテスト テスターとアジャイルチームのための実践ガイド

アジャイルテスティングの原典の一つのように扱われる本書では、「アジャイルテスティングの定義とは」のように定義を簡潔に説明している記述はありません。
ただ参考にできる記述として、「アジャイルテスターの定義」を次のように解説しています。

アジャイルテスターとは、変化に対応し、技術担当の人や業務担当の人たちと共同作業でき、テストのコンセプトを理解して要求を文書化し開発をリードできる、プロフェッショナルなテスターです。アジャイルテスターの特徴は、高い技術力を持ち、メンバーと共同作業を心得てテストの自動化を行うことです。アジャイルテスターはまた経験豊富な探索的テスターでもあります。顧客が何をしたいかを常に気にかけており、顧客のソフトウェア要求を深く理解することができます。

基本的に、アジャイルの原則に沿ったテスティングを、アジャイルテスティングと定義しています。
またアジャイルテスティングの原則として、次を説明しています。

  • 継続的にフィードバックする
  • 顧客へ価値を提供する
  • 対面でのコミュニケーションを可能にする
  • 勇気を持つ
  • シンプルを心がける
  • 継続的な改善を実践する
  • 変化に対応する
  • 自分を律する
  • 人に焦点を当てる
  • 楽しむ

実践アジャイルテストの解説で特徴的なのは、アジャイルテスティングの実践においては、開発手法がアジャイルでなくてもよいと言及していることです。例えば「アジャイルテストとは、単にアジャイルプロジェクトにおけるテストではありません。探索的テストなどいくつかのテストは、プロジェクトがアジャイルでもそうでなくても、本質的にアジャイルです」といった解説がなされています。

More Agile Testing

More Agile Testing: Learning Journeys for the Whole Team

前述した実践アジャイルテストの補足および発展的内容を解説した本です。こちらもアジャイルテスティングの原典の1つとみなされる場合があります。
本書では「アジャイルテストの定義・原則とは」のように定義や原則を簡潔に解説している記述はありません。ただ著者が同じであることから、前述の実践アジャイルテストの原則を踏襲した解説となっています。

Agile Testing Condensed

Agile Testing Condensed… Yuya Kazama 著 et al. [PDF/iPad/Kindle]

この書籍は、前述の実践アジャイルテストとMore Agile Testingの内容の要点を解説した本です。執筆時点で日本語にてアジャイルテストを学ぼうとする場合で、第一に推薦すべき本となっています。
この本では、何度も聞かれるから、ということで、「アジャイルテストの定義」として次の解説を追加しています。

始まりからデリバリーまで、そしてそれ以降も継続的に実施される協調的なテストの実践により、お客様への価値の頻繁な提供をサポートします。テスト活動は、高速なフィードバックループを用いて理解を検証しながら、プロダクトの品質を築くことに重点を置いています。このプラクティスは、品質に対するチーム全体の責任という考え方を強化し、サポートします。

アジャイルテスティングの原則の解説も行っていますが、こちらは前述の実践アジャイルテストと同じ内容となっています。

Testing Manifesto

The Testing Manifesto | Growing Agile

Growing Agileでは、守るべきテスティングの原則として、Testing Manifestoという項目を次のように定義しています。この原則名にはアジャイルという言葉が含まれていませんが、「アジャイルをうまく実践するための知見を解説する」という文脈の中で記述されているものであり、アジャイルテスティングの原則の一つとして見なすことができます。

私たちは下記を大切にします:

  • 最後にテストするよりもずっとテストし続ける
  • バグの発見よりもバグの防止
  • 機能性をチェックするよりもチームが理解している価値をテストする
  • システムを破壊するよりも最高のシステムを構築する
  • テスターの責任よりも品質に対するチームの責任

※翻訳は前述のAgile Testing Condensed Japanese Editionから引用。

なおAgile Testing Condensedでも、アジャイルテスティングの原則の一つとしてこのマニフェストを引用しています。

JSTQB アジャイルテスト担当者

http://jstqb.jp/dl/JSTQB-SyllabusFoundation-AgileExt_Version2014.J01.pdf

ISTQB/JSTQBではアジャイルテスト担当者のシラバスを作成しており、そこでアジャイルテスティングに関する用語や概念を解説しています。ISTQB/JSTQBシラバスは世界共通の用語や概念として参照されることが多いため、今回簡単に触れます。

JSTQBアジャイルテスト担当者シラバスでは、「アジャイルテスティングの定義・原則とは」のような簡潔な解説を行っていません。
ただ、「アジャイルテスティング」=「アジャイルプロジェクトに適したテスティング」のような定義で一貫しています。
また記述が分散しているため引用は割愛しますが、開発活動のと関わり合い、テストに関する成果物、テストレベル、テスト成果物の構成管理など、いくつかのトピックごとに従来型テストと対比する形で、アジャイルテスティングの原則を解説しています。そこでも「アジャイルテスティングの原則」=「アジャイルプロジェクトに適したテストの原則」のような解説で一貫しています。「アジャイルテスティングは開発がアジャイルであることが前提」という立ち位置です。

なお近しい解説として、アジャイルテスト担当者の原則を、「持つべきスキル」として次のように解説しています。

チームメンバおよびステークホルダに対して、建設的かつソリューション指向で向き合う
プロダクトについて、批判的で、品質指向の、懐疑的な思考を発揮する
ステークホルダから情報を積極的に入手する(ドキュメント化された仕様に全面的に頼ることはしない)
テスト結果、テスト進捗およびプロダクト品質を正確に評価して報告する
テスト可能なユーザストーリー、特に受け入れ基準について定義するために、顧客の代表者やステークホルダと共に効果的に働くチーム内で協調し、プログラマおよび他のチームメンバとペアになって作業する
テストケースの変更、追加、または改善を含めて、変更に迅速に対応する
テスト担当者側での作業を計画し、準備する

Modern Testing Principles

Modern Testing – Not that modern, and not that much about testing

「Modern Testing Principles」はテスティングが重視すべき原則として定義されたもので、次の7項目で構成されます。アジャイルに限定されない原則ですが、アジャイルテスティングと方向性が一致しているものとして、アジャイルテスティングでも守るべき原則として解説されているのを度々見るため紹介します。

  1. Our priority is improving the business.
  2. We accelerate the team, and use models like Lean Thinking and the Theory of Constraints to help identify, prioritize and mitigate bottlenecks from the system.
  3. We are a force for continuous improvement, helping the team adapt and optimize in order to succeed, rather than providing a safety net to catch failures.
  4. We care deeply about the quality culture of our team, and we coach, lead, and nurture the team towards a more mature quality culture.
  5. We believe that the customer is the only one capable to judge and evaluate the quality of our product.
  6. We use data extensively to deeply understand customer usage and then close the gaps between product hypotheses and business impact.
  7. We expand testing abilities and knowhow across the team; understanding that this may reduce (or eliminate) the need for a dedicated testing specialist.