正式リリースから5年、Autifyが解決した3つの課題
Autifyは2016年、米サンフランシスコで近澤良CEOら創業メンバーによって創業。日本支社は東京・中央区東日本橋にオフィスを構えている。2019年から、テスト自動化ツール「Autify」を正式リリースした。今年で丸5年が経過し、2024年6月より「Autify NoCode Web」と名称を変更し、さらに多くのエンジニアから愛されているソリューションへと進化している。

Autify NoCode WebはAIを用いたノーコードテスト自動化ツール。特徴は大きく2つ。一つは「ノーコードなので誰でも簡単にエンドツーエンド(以下、E2E)テストが作れること」(末村氏)。もう一つはAIが自動でメンテナンスをしてくれること。
3分でわかるAutify NoCode
3分でわかるAutify NoCodeでAutify NoCodeのより詳しい情報を手に入れることが可能です!詳細はこちら
末村氏は、Autifyがリリースされた当時のソフトウェアテストに対する課題を3つ挙げて、Autifyの特長を語った。
第1の課題は「テストコードの作成が面倒」。ここでのテストコードとは、E2Eでユーザー自身のジャーニーが端から端まで達成できるようなテストができること。この当時、自動テストの技術はそれほど成熟しておらず、ソフトウェアの外向けの振る舞いをテストしなければならないはずが、「idやclassなどの内部構造を要素探索のキーにするのが一般的で、エンジニアはテストコードを書くたびに、毎回、DevToolsと格闘していた」と末村氏は明かす。
第2の課題は「テストコードのメンテナンスが大変」。E2Eのテストは開発が全て完了し、統合されたシステムに対して実施される。そのためステージングなどの統合環境で実行されることが多かった。「開発が全部完了してからテストコードを回そうとしたら、変更した箇所にテストコードが追いついていないことに気づき、駆け込みで修正を余儀なくされてしまうことになる。そういうメンテナンスの問題があった」と末村氏は話す。
これらの2つの課題に対して、Autifyが提供したソリューションの一つがノーコードだ。ノーコードは、ユーザーがUIを操作するのと同じ感覚でテストを作ることができる。そこで同社では、「Autify Recorder」というレコードアンドリプレイ(レコードアンドプレイバックとも言う)型ツールを提供し、操作した内容が自動で記録されていくというアプローチを採用した。「スクリーンショット付きで見やすかったため、UI自動テストにおいて大きなアドバンテージだった」と末村氏は話す。その一方でこのアプローチは、「不安定になりがち」という批判を抱えていたという。

それを解消するために同社が提供したのがメンテナンスAIである。レコーデイング時のタグ名、アクセシブルロール、idやclassなどの内部属性、文言、その他さまざまなメタ情報を元に、DOM上の一番近い要素を探索するというようなアプローチを採用した。
第3の課題は「環境構築と運用が大変」。エンジニアがやりたいのは、ただブラウザを起動してユーザーがやりたいことをそのままテストすること。それに対して、複数のブラウザを動かす環境やSeleniumなどの自動化ドライバー、テストフレームを動かすサーバ、CircleCIなど、いろいろなものを準備する必要があった。E2E自動テストの仕組みを見ればわかるが、「E2E自動テストは本質的に複雑」と末村氏は言う。本当に見つけたいバグは、Webサイトとブラウザの互換性のバグなのに、「自動テストフレームワークのデバッグからはじめないといけないこともあった」(末村氏)。

この課題に対して、Autifyが掲げたのが「Out of the box」。Autify NoCode Webではまさしく「箱から出してすぐに」クラスブラウザテストができる。「ユーザーが契約したら10分以内にクロスブラウザテストを定期実行できるようになる」と末村氏は言い切る。

自動テストの変化とAutifyの進化
Autifyの進化の背景には、世の中の変化が大きく影響している。まず第1に新たなツールが登場し、テストのハードルを下げたことだ。その代表がCypressとPlaywrightである。これらのツールは、Node.jsを始めとしたフロントエンド開発のエコシステムに組み込みやすく、フロントエンドエンジニアのE2Eテストへの参入のハードルを下げた。
E2EテストはGUIとの依存性を作るものなので、GUI部分を開発しているエンジニアがある程度メンテナンスに関わることができないと、メンテナンスが進まない状況が起こっていた。「具体的にはnpm install コマンド一発で自動テスト環境が構築されるようになったことが大きかった」と末村氏は語る。
もちろん、これらのツールが登場する前にも「Selenium」などのWebブラウザの操作の自動化に使えるツールは存在していた。だが、それらのツールを活用するには「Selenium自体の知識が必要で、CypressやPlaywrightのようにコマンド一発でインストールできる形にはなっていなかった」と末村氏は振り返る。
第2にデバッグ体験がリッチになったことだ。CypressやPlaywrightでは、テストを実行した後、その結果がステップバイステップでわかるようになった。デバッグ体験がよくなったことで、トラブルシュートの機会が相対的に薄れてきたという。
第3にCI/CDへのパイプラインへの組み込みも楽になったこと。「これは同時期にGitHub ActionsやCircleCI Orbsが登場したことが大きい」と末村氏。これまではYAMLの設定ファイルを毎回、書かなければならなかったが、GitHub ActionsやCircleCI Orbsは一つのレシピコンポーネントのようにまとめてくれるので、CI/CDのパイプラインに容易に組み込めるようになったのだ。
第4にクロスブラウザ環境構築が楽になったこと。「特にPlaywrightは非常に楽に構築できる」と末村氏。PlaywrightではWebKitブラウザが使用できる。WebKitはレンダリングエンジンとJSのランタイムはSafariと同じである。つまりWindowsやLinuxの上でAppleの標準ブラウザであるSafariの動作確認ができるのだ。
加えて、アクセシビリティベースのロケーターが普及したこともAutifyの進化に影響している。基本的にテストはテスト対象のふるまいに依存すべきである。だが、これまでのE2Eテストは技術的制約から内部構造に依存しがちだったため、タグの名前とタイプという形で内部構造を書かなければならなかった。Testing Libraryの登場により、文字列、セマンティクス、alt-textなどアクセシブルな属性をロケーターに使う考え方が普及した。

また、自動テストのマインドセットが世の中に浸透したことも重要なポイントとなっている。これには「2人の存在が欠かせない」と語る末村氏。
まず1人目は、和田卓人氏だ。ライオンのアスキーアートで有名な和田氏は、テスト駆動開発の立役者で、自動テストの重要性を世の中に強く普及している。そしてもう1人末村氏が挙げたのがブロッコリーさんこと、風間裕也氏。風間氏は、BDD=Behavior Driven Development (振る舞い駆動開発)における自動テストの重要性やそのプラクティスの普及に努めている。
5年前はカンファレンスでテストや品質について議論されるのは珍しいことだったが、今ではテストの話がないカンファレンスの方が珍しくなったことからもマインドセットの浸透は明らかだろう。
自動テストにおける新たな課題
新たな課題も登場している。「どんなテストを実装すれば良いのか、悩んでいる人も多い」(末村氏)ことだ。特によく聞かれるのが、「E2Eテストのカバレッジを増やしたいがどうすれば増えるのかわからない」「どのようなテストがあれば障害の予防に効果的なのかが分からない」。テストの設計で課題を抱える組織・会社が非常に多いという。「テスト設計は非定型の業務なので、改善が難しかった」と末村氏。
そこで注目を集めているのがLLM(大規模言語モデル)の活用である。LLMは既存の自動化とは異なり、何らかのフォーマットで定式化されていなくても理解し、繰り返し実施するモノでなくても効果を発揮する。LLMであれば、仕様書の分析・テスト設計のようなワンショットかつ複雑な業務も自動化できる可能性が出てきたのだ。さらにマルチモーダルAIも登場しており、テキスト以外の入力も扱うことができる。「例えば画面遷移図や仕様書、バグ表などをAIに学習させてテストケースを作ることも現実的になっている」(末村氏)
現在、Autifyでは「Autify Genesis」という開発ドキュメントから、開発者の視点、テスト手法の視点、ユーザーの視点などトレーニング済みの観点を合わせて、テストシナリオを作成するAIソリューションのβ版を開発。「いくつかの会社から実際の仕様書を預かってパフォーマンスの改善に取り組んでいる」(末村氏)

「自動化を進めたいけど、目先のテスト業務に追われている」──。そんな木こりのジレンマに悩んでいるエンジニアにお勧めなのが、Autifyが昨年から提供を開始したテスト自動化導入支援・品質保証サービス「Autify Pro Service」の活用である。
自動テストは手動テストの代替ではなく、マインドセットの変化により、今では高速な開発サイクルの礎になるものとして捉える人が増えてきた。そのため「リリース前にテストしたい」から「常にテストし続けたい」にニーズは変化している。このような高度化したニーズに対応できる新たなソリューションが求められている。
E2Eテストは、忠実性は高いが低速なものとみられている。それゆえ、E2Eテストは限定的な利用がベストプラクティスとされていた。「理想的にはE2Eテストやユーザーが取り得る振る舞いの数だけ存在してほしい」と末村氏。それにはE2Eテストを縛る技術的制約が飛躍的に改善されることが必要になる。それができれば「将来のベストプラクティスは図のようなアイスクリームパフェのような形になる可能性がある」(末村氏)

Autifyはテストプロセス全体を支えるプロダクト、サービスを提供する会社へと進化している。テスト設計などの上流工程の自動化、より良いソフトウェアエンジニアリングを支える技術と文化の実装支援、高速なフィードバックサイクルを支援するE2Eテストの進化という領域にAutifyは投資をしていくという。
