LegalForce Engineering Blog

LegalForceの開発チームによるブログです。

Autifyを活用したE2EテストとこれからのQA

こんにちは、LegalForce CTOの時武(@tokichieto)です。

今日はLegalForceで行っている品質保証(QA: Quality Assurance)の取り組みについてご紹介します。

LegalForceでは、契約書のレビューや管理を行うためのSaaSを提供しており、サービスのユーザーとなるのは企業の法務部や法律事務所で契約書業務に携わる方々です。契約書を扱う業務システムという性質上、ユーザーから求められるサービス品質の期待値は高く、開発速度を落とすことなく期待に応えられるだけの品質を維持していく必要があります。

しかし、限られた開発メンバーの中でサービスを継続的に改善し、ユーザーに期待感を持たせながら高い品質を保ち続けるのはなかなか困難でした。2019年4月に "LegalForce" を正式版としてリリースした後、開発者の増加に伴って新機能を並行開発するケースも増えたことで、デグレが目立つようになってきてしまいました。

デグレを早期発見できる仕組みを整える必要がありましたが、実装担当者がテスト工程まで見るようにしていた当時のQA体制では、リリースごとに網羅的なデグレチェックをかませることは難しく、E2Eのテストコードを実装してもUIの進化に追いつけず費用対効果が上がりづらい状況でした。そこで目をつけたのが Autify というノーコードでE2Eテストを実装できるサービスです。

Autifyとは

E2Eテストを自動で実行でき、テストシナリオをWebブラウザ上からコードを実装することなく作成できるサービスです。

誰でも簡単にプログラムコードを書くことなく、ウェブアプリケーションの検証作業が自動化できるため、非エンジニアでもテスト自動化が可能です。また、AIがアプリケーションコードの変更を監視し、自動で検証シナリオの修正を行うため、メンテナンスコストを大きく下げる事ができます。

LegalForceでは先述した背景から、新機能リリース時のデグレを未然に防ぐ、もしくは最小限に留めるという目的で2020年2月から導入しています。

幸い同時期にQAエンジニアの入社が決まったことで、開発体制におけるQAタスクの比重も少しずつQAエンジニアに寄っていき、現在ではQAエンジニア3名体制で日々のリリースにおけるソフトウェアテストやAutifyを利用した自動化に取り組んでいます。

ちょうど導入から1年経ったこともあり、この1年で貯まってきた運用についてのノウハウを公開しつつ、今後のQA体制についての展望をご紹介していきます。

LegalForceにおけるAutify活用の変遷

導入初期: 機能監視テスト

とりあえず、リリース後でもいいからなるべく早い段階でデグレに気づくことができるような体制を構築することを目指し、QAエンジニア主導でテスト設計書の作成や機能・画面ごとのシナリオ作成が進み、以下の2種類のテストを本番環境で実施するようになりました。

Autifyでは「シナリオ」という単位でテストの設定を行いますが、メンテナンス性の高いテストを行うためにはこのシナリオの設計が重要になります。LegalForceではシナリオ作成に一定のルールを設けた上で以下のようなシナリオ設計用のシートを作成し、QAエンジニア間でレビューを行うようにしています。

f:id:tokichieto:20210204202438p:plain

シナリオ一覧シート

f:id:tokichieto:20210204202506p:plain

個別シナリオ設計シート

導入後約半年: 検証環境でのリグレッションテスト

本番環境における定期的なテストでは、リリース後の不具合にいち早く気づくことはできますが、事前に不具合を検知しリリース前に修正するという本来のリグレッションテストまではカバーできません。

そこで、本番環境でのテストが安定してきたタイミングで検証環境で同様のテストを行うようにシナリオを移植しました。

検証環境は開発中の機能が次々にデプロイされ頻繁に環境が更新されるため、本番環境と同じシナリオではどうしてもテストシナリオが壊れやすいという課題がありましたが、ユーザーにとってクリティカルな機能に絞った検証を行うことで、シナリオの陳腐化を防ぎつつ検証環境でのリグレッションテストを行うことが出来ています。

最近の課題と取り組み: 社内・社外でのナレッジシェア

2020年秋頃までには上述した本番環境と検証環境におけるリグレッションテストが整備され、Autifyを実際のサービス開発で日常的に利用する体制が整ってきました。

しかし、エンジニア組織全体の拡大に伴って新しい開発エンジニアやQAエンジニアが増えたことで、これまで整備してきたAutifyの環境を新メンバーに引き継いでいくことが課題になってきました。

そこで、従来から作成していたテストシナリオの管理シートとは別に、社内ドキュメンテーションツールとして利用しているNotion上にAutifyに関する資料を一通りまとめるようにしました。

エンジニア向けのオンボーディング資料等もすべてNotion上で管理しているため、オンボーディング時にAutifyに関する資料も含めてエンジニアが目を通せるような形でまとめ、新しいメンバーになぜAutifyを利用しているのか、Autifyの利用方法についてキャッチアップできるような体制が出来上がってきています。

f:id:tokichieto:20210204220840p:plain

Autifyに関する社内ドキュメント

また、先日はAutifyさん主催のAutify User MeetUpに社内のQAエンジニアが登壇し、LegalForceにおけるAutify活用事例について現場の視点も交えて発表する機会を頂きました。

当日使用した資料をこちらの記事にて公開させていただきますので、これからAutify活用を考えられている方や、すでに導入していて他社の事例を参考にしたい方はぜひご覧ください。

LegalForce QA組織のこれから

Autifyを利用することで機能開発時の予期せぬデグレを最小限に留める仕組みが出来上がってきましたが、QA組織としてはまだたくさんやるべきことが残っています。

少し前までは、QAというと「=ソフトウェアテスト」のことであるという認識が多かったように思います。たしかにソフトウェアテストはQAにおいて重要な側面を占めますが、あくまで1つの側面であってソフトウェアテストがQAの全てではありません。

これからのQA組織は、アジャイルな開発フロー全体に入り込み、ソフトウェアのデリバリーサイクルを品質という観点からチェック・サポートする存在であることが必要です。また、QAエンジニアとしてもテスターとしての働き方に留まらず、開発エンジニアやプロダクトマネージャ、ビジネスメンバーとも協働していくような働き方が求められます。

LegalForceでは将来的に以下のような動き方ができるQA組織を目指しています。

  • プロダクトマネージャと協働し、要件や仕様の段階からソフトウェア品質の観点を導入する
  • スクラムマスター的にアジャイルな開発フロー全体を監督・改善していく
  • 開発パイプライン全体における情報の流れを整理し、リリースまでのリードタイムを最適化する
  • 検証工程において自動化をさらに推進する

自動化は手段の1つですが、ソフトウェアテストにおいては自動化によってかなりの工数を削減できるため、今後も積極的に取り組んでいきたいと考えています。

まとめ

この記事では、LegalForceにおけるQAに関する取り組みを、Autifyの活用事例を中心にご紹介してきました。LegalForceのQA組織はまだまだ発展途上ですが、製品の品質をより良くしていくためにはどうすればよいかを日々考えながら仕事に取り組んでいます。

今回の記事を読んで興味を持ってくださった方は、一度お気軽に話を聞きに来ていただけると嬉しいです。理想のQA組織を一緒に作り上げていけるメンバーを大募集しています!