はじめに

テスト自動化プラットフォーム「Autify」の開発チームは、Autifyで作られたテストシナリオを使ってAutifyのテストを行なっています。
そこでAutifyの製品開発チームがどのようにテストを行なっているかという疑問に答えるべく、ブログを通じてAutifyがどのようにAutify社内で活用されているかを紹介したいと思います。
まず第一回目の今回は、新機能開発時にどのようにしてテストシナリオを作成しているかをご紹介いたします。

新機能開発時のテストシナリオ作成

新機能に対するテストケースを作成する際には、エンドユーザーの視点から新機能の要件を分析することが重要です。
言い換えると、ユーザーが新機能をどのように使用するか、期待される結果やユースケースを理解することが必要です。
Autifyでは新機能のユーザーストーリー作成時に、機能の目的やタスクを同時に洗い出し、それに基づいてテストケースを設計しています。

では、どのようにしてユーザーの目的やタスクを抽出しているのでしょうか。
Autifyでは開発者が新機能実装やテストシナリオ作成を行う前に、3アミーゴセッションと呼ばれるProduct Manager、Developer、そしてQAの担当者全員が議論できる場(会議)を設けています。

この会議では、開発予定の新機能に対してエンドユーザーの視点から満たさなければならない要件や振る舞いを洗い出すようにしています。
そして、洗い出された要件や振る舞いをもとに、E2Eテストのシナリオを作成しています。

どのように要件を抽出するかはチームや開発対象のエリアによって多少異なります。
例えば私たちの場合、一つの新機能に対して複数のビジネス要件(Business Rule)を抽出・定義し、それらの要件のなかで考えられる実例(Example)を定義しています。
また、一つ一つのユーザーの振る舞いはステップ(Step)としてどのように振る舞うかを定義され、それらのステップを実行することによりどのような結果が期待されるかまでも定義しています。

こうして、一つのビジネスルールに対して一つ、もしくは複数の実例を洗い出し、さらにその他のビジネスルールについても同様に実例を洗い出していきます。

このように洗い出した実例やステップは、E2EのユーザーフローになっているためこのままE2Eテストのシナリオとして利用できます。
Auitfyではこのように洗い出した実例を1つのテストシナリオとして、ステップの通りにレコーディングを行い、予期する結果に対してアサーションステップを入れ、意図した振る舞い・結果になっているかを確認しています。

このように、ハイレベルなビジネスレベルの要求と合わせてユースケースレベルで実例を洗い出すと、新機能に必要なテストシナリオ、手順、検証するポイントも明確にすることができるため、この後のAutifyでのレコーディング作業を非常に直感的に行うことができます。
また、新機能の要件についてステークホルダーの間での合意をこの場で行うことができるため、非常に効率的です。

テストシナリオの作成とその役割分担

次にテスト作成時の役割分担とそのプロセスについてです。

原則、開発者がAutifyでテストを作成しています。
テストの作成は先ほどのテストシナリオの準備で抽出された実例に基づき、ステップと予期される結果のレコーディングを新機能開発中のブランチで行い、テスト結果の確認を行います。

QAは、個別のテストシナリオの開発は行なっていませんが、シナリオのレビューや共有リソースの作成・テストプランやCI/CDパイプラインの更新などを行っています。

テストシナリオの作成におけるプロセス管理

AutifyではJIRAを使っており、新たに機能実装のチケットが作られた際は、自動的にE2Eテスト作成のサブタスクチケットが作られるようになっています。
そして、サブタスクであるE2Eテストの作成が親チケットである開発チケット完了の要件となっています。
こうすることにより、新機能の実装完了時にはE2Eテストも同時に作成が完了します。

まとめ

Autifyでは製品開発に関わるPM/Dev/QAが一緒になってユーザーの視点から要件を分析し、Autifyを用いてE2Eテストを作成しています。

このようなプロセスを導入したことにより、ほぼ全てのエンジニアがAutifyを使ってのテスト作成ができるようになりました。
また、テストケース作成をPM/Dev/QAという複数の観点から一緒に行うことにより、製品がどのように振る舞うべきかを多角的に確認できるようになりました。

次回は作られたテストシナリオがどのように実行され、日々活用されているかをご紹介したいと思います。