ebayのアジャイルテスティング
UKのebayでHead of Software Testingとして活躍するDan Ashby氏のセッション「Testing in Agile」はその名のとおり、「アジャイル開発におけるテスト」を集約した内容でした。
ソフトウェアテストとは何か? さまざまな解答がでてくる問いですが、一般的な解答は以下のようなものがあるはずです。
- ソフトウェアが要件にマッチしているかをチェックすること
- 予想どおりにソフトウェアが機能するかを確認すること
しかし、本当にこれだけを「テスト」すればよいのでしょうか? テストというものを理解するためには、そして、それがアジャイル開発のどの部分にフィットするかを考えるためには、「INFORMATION」について考える必要があると氏は説明します。
いったい情報にはどんな種類があるのでしょう。セッションでは以下のような情報に分類されていました。
- 明確に分かる情報(Known Explicit Information)
- 暗黙の情報(Tacit Information)
- 気がついているけど分かっていない情報(Unknown that we are aware of)
- 気がついていなくて分かってもいない情報(Unawareness of unknown)
明確に分かる情報であれば、確実にテストでき、その確認もできます。テストケースに落としこめ、自動テストといったスクリプトも作れます。
では、暗黙の情報についてはどうでしょう? この情報は暗黙知なので、探索テストなどで探さなければ見つかりません。気がついているけど分かっていない情報や、気がついてなくて分かってもいない情報も同じく、特定するために探さなければなりません。
テストケースや自動テストのように、はっきり特定できるアプローチ(Assertive approach)も、特定できないため調査のようなアプローチも(Investigative approach)、どちらも大切であると氏は話します。
テストケースに落とし込めるものだけテストしても、本来はやるべきたくさんのテストを見落としてしまうのです。そう考えると、テストケースを作成したり、自動化したりできる部分は、テストすべき領域の一部分でしかないことがよく分かります。
あらためて、「アジャイル開発におけるテスト」とは何か。
テストという活動がアジャイルプロセスのどの部分にフィットするのか? 氏は以下のキーワードにもとづき、すべてのプロセスにおいてテスト(調査)は可能であると話します。
- Agility(アジリティー):調査を通じて発見した新しい情報に適応していく俊敏性のこと
- Risks(リスク):リスクを特定するための調査。また、特定したリスクのさらなる調査
- Continuous Testing(継続的テスト):新機能、アーティファクト(成果物)、UX/UIデザイン、コードデザイン、コード、コードの実行、CIパイプライン、リリースプロセス、アジャイルプロセスなど、それぞれのプロセスやアクティビティのなかで出てくるアイデアに対して継続的に実施すること
Assertive approachのほかに、探索的テストなどのInvestigative approachを実施しつづけた結果どうなっていくのか? 継続的なテストから得られる「INFORMATION(情報)」を継続的に更新してゆき、さらに手に入る新しい情報に適応していきます。
そして、DevOpsの継続的なプロセスの中のあらゆる局面で、テストは有効である、そしてそれこそが「アジャイル」におけるテストである。「テスト」が置き去りになりがちな業界の中で、氏が語るアジャイルテスティングにはとても説得力があるものでした。
要件にマッチしているか? 予想通りに機能しているか? 従来型のテストをただするだけでは、テストというアクティビティそのものが死んでしまいます。よって、既存のフレームワークや手法に則りつつも、プロダクトを「INFORMATION(情報)」という新たなコンセプトで捉え直すことで、テストの可能性を押し広げてくれる、非常に有意義なセッションでした。