テスターをチームに統合することは、何度も繰り返されたアジャイルの合言葉であるが、その意味や方法を考えることはあまりしたくない。
チームにおいて、テスターの役割は何であるのか?以下のことをおこなう。
- 受け入れ基準(または要求)を定義したり、引き出す支援をする。
- 自動化されたテスト、探査実験などでバグを発見しないように、クオリティーに関する情報を提供する。
- カスタマーと一緒にリスクを特定する。
- デベロッパのテスト(ユニットおよび統合)が最弱な分野で、さらにテストを繰り返す。たとえば、チームがData Layerをうまくテストしたとしても、GUIレイヤーはユニットテストが難しい。そこでテスターはGUIレイヤーにさらに取り組む必要がある。
(Cem Kaner氏(source)、Johanna Rothman氏(PDF)およびJonathan Kohl氏(ブログ・英語))より編纂。
Agileチームの一部としてテストすることは、たいていの人びとが慣れている方法とは全く違った経験である。Kohl Conceptsの共著者であるJonathan Kohl氏(source)が「その違いはアジャイルプロジェクトでは、重要なバグをより速く発見する。開発全体を通じ、テストにより一層関わっている。デベロッパは厳し い仕事を、堅実な自動ユニットテストでおこなっている今、生産テストはさらに堅固である」と記している(ブログ・英語)。
アジャイルテストの独立コンサルタントであるAntony Marcano氏(source)は、教訓を以下のように語っている。
- 受け入れテストを書くときは、協力することが必要である。望ましいのは、カスタマー、テスターおよびプログラマー間である。
- テスターおよびデベロッパは、お互いのスキルを高めるべきである。
- タスクのテストはスプリントバックログの一部であるべきで、個別のテストプランであるべきではない。
- 探査実験を使用して、フィードバックを生成する。
- バグを修正する前に、それらを再現する自動化テストを記述する。
Energized Work(source)の共著者であるSimon Baker氏のチームにおいては、デベロッパはほとんどの受け入れテストを記述する。これによって、テスターが自由に探査実験をすることができ、生産オー ナーと一緒に顧客と関連し、チームが(ストーリーだけでなく)ユーザを理解するのに役立つ。デベロッパは特定の受け入れ基準を満たす縦のスライス(ストー リーの小さい部分)に取り組む。スライスが完了すると、デベロッパはテスターでスライスを調べ、受け入れテストを理解する。チームはラインイベントを停止 するものとして欠陥を扱う。デベロッパがそれを次のスライスで修正するか、もしくはもはや開発中にはない場合、欠陥タスクが作成される。チームにとって欠陥タスクは、最優先課題となる。テスターは同様のスキルを使用しているが、仲間との共同に多くの時間を費やし、バグのファイリングにはあまり時間を費やさない。