こんにちは。メルカリで自動化&品質保証グループ(Automation & QA Group:通称AQA)のエンジニアリングマネージャをぶりぶりしている@daipresentsです。
AQAは、従来のQAではなく、自動化を駆使した「完全自動化時代のQA」を目指すグループとして活動しています。その道のりはなかなか険しいのですが、じわりじわりとメンバーも増え、社内でも「自動化」というキーワードが広がってきました。
この記事では、テスト自動化でとても大切なポイントとなる、テスト結果をまとめたビューティフルなレポートのノウハウを共有させていただこうと思います。
継続的システムテスト
現在、メルカリAQAでは、「継続的システムテスト」の実現に取り組んでいます。ここでいう継続的システムテストとは、365日24時間、ずーーーっと自動化されたE2Eテスト(レグレッションテストとも言える)を実行することを指しています。
AQAの継続的システムテストは、まずは夜間に1回だけ自動実行しており、あとは好きなタイミングで誰でも実行できるようになっています。ただ、テストの実行回数が増えると、テストの確認回数も同じく増えます。テストが安定していればよいのですが、テストが不安定だと毎回失敗した内容を確認しなければなりません。
なぜビューティフルなレポートが必要なのか
テストをずっと実行するようになって気がついたのですが、継続的システムテストでクリティカルなバグが見つかるのは「まれ」です。おそらく、継続システムテストでバグが見つかるのはかなりまずい状況で、それよりも「ケアレスミスが原因でのバグ」がよく見つかります。
おそらく、このままリリースされても気がつかれないものばかりなのですが、こういった細部を整えることで、手触りの良いアプリになっていく部分もあると思います。よって、軽微であっても、はやいフィードバックはとても重要です。
さらに、自動テストはもくもくと同じ動作を繰り返すせいか、人間の気がつきにくい「あれ?」と感じる怪しい動きがあるとすぐテストが落ちます。プロジェクトが忙しくなると、こういった「大きなバグやトラブルに繋がりそうな怪しい前兆」の発見も増えてきます。
これまではAQAに所属するテスト自動化エンジニアが結果を確認していたのですが、同じく所属するQAエンジニア(テストエンジニア)でも簡単に確認できるように、ビューティフルなレポートを導入しました。
レポートは SETグループの@vishal が作った rspec_html_reporter を利用しています。その使い方などは以下のブログに詳しく書かれているので参考にどうぞ。
rspec_html_reporter を使うと、失敗したときのスクリーンキャプチャや動画を保存することができ、誰が見ても何が起きたかわかるようになります。
テスト結果も自動的にTestRailに反映
さらに、自動E2Eテストが実行され、結果がでるたびに、自動でテスト項目書のステータスを変更するようにしました。AQAではTestRailを使ってケース管理しているので、上記の画像のように、APIを利用して簡単にテスト結果の反映ができます。
TestRailの場合、テスト結果を複数残せるので、くりかえし実行しても結果を上記のように残せます。
テストに失敗した場合は、上記のように失敗した箇所情報や、 rspec_html_reporter で出力したキャプチャや動画へのリンク、スタックトレースを結果として残せます。
リアルタイムに結果が反映されるため、TestRailのダッシュボードをみていると進捗も簡単にわかります。ぼーっとみているとじわじわ進捗が進むのでとてもかわいい。特にマニュアルテストと自動テストを同時にやっているときなどは、こういったテスト管理ツールを使うと便利ですね。
おわりに
もともと僕は、アジャイルコーチとして現場サポートの仕事をしていたのですが、開発全体をプロダクトを考えるフェーズ、開発するフェーズ、テストするフェーズと分けた場合、前の2つはある程度「アジャイルに」できました。しかし、最後のテストフェーズ(一般的にQA期間などとよばれる、プロセス後半のシステムテストなど)が「アジャイルに」ならなくて、よく困っていました。
この「ボトルネックになりやすいシステムテスト」を解決したくてメルカリに入社し、SETやQAといった次世代品質部隊の組織づくりから取り組んでいるのですが、今回、その一つの解(そしてチャレンジでもある)として「継続的システムテスト」を紹介させていただきました。
もしかすると、これが「アジャイルテスティング」実現のきっかけになるかもしれません。そうすると、AQAは、「Automation & QA」 から、 「Agile QA」になるかもしれません。
そんな期待をふくらませながら、次世代の品質部隊を目指して突き進んでいこうと思います。
PS・・・テストや自動化の話をカジュアルにできるようにFacebookグループ Agile Testing, Automation and QAの現場 を作ってみました。もしご興味があれば、ぜひ遊びにきてください!