SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2024 セッションレポート(AD)

オーティファイが取り組むAI活用とは?──誰もがテストを自動化できるプラットフォームの実現を

【15-D-5】AIを活用した誰でもテストが自動化できるプラットフォームの実現に向けて

  • X ポスト
  • このエントリーをはてなブックマークに追加

 開発したソフトウェアが仕様通りに動作するか、その評価・検証ために不可欠なテスト工程。ソフトウェアを安心・安全に利用するには、テストは不可欠だが、開発者の中には「面倒くさい」と感じている人も多い。そんな開発者の悩みを解決するのが、ノーコードのテスト自動化プラットフォームを提供するオーティファイである。同社では独自開発したAIモデルに加え、昨今注目を集めている大規模言語モデル(LLM)を活用し、誰もが自動化できるプラットフォームの開発に取り組んでいる。どのくらいテスト工程が効率化・省力化できるのか、オーティファイ 機械学習チーム・QAチーム マネージャの松浦隼人氏が解説した。

  • X ポスト
  • このエントリーをはてなブックマークに追加

E2Eテスト自動化プラットフォーム「Autify」

 オーティファイはテスト自動化プラットフォームを提供する2016年創業のベンチャー企業である。オーティファイが提供するテスト自動化プラットフォーム「Autify」は、誰もが簡単に自動テストがノーコードで作れるプラットフォームだ。

 同社がテスト自動化プラットフォームに着目したのは、「技術の力で世界中の人々の創造性を高める」というミッションを実現するため。ソフトウェア開発においてテストは時間をかける重要な工程だが「多くの開発者は、テストは必要と思いながらも、やりたくないことの一つだと思っています。そこを自動化し、開発者が人間しかできない創造性の高い仕事に集中できるようにプロダクトを開発しています」と松浦氏は話す。

オーティファイ株式会社 機械学習チーム・QAチーム マネージャ 松浦隼人氏
オーティファイ株式会社 機械学習チーム・QAチーム マネージャ 松浦隼人氏

 ソフトウェア開発におけるテストと一口に言っても、ユニットテスト、システムテスト、統合テストE2Eテストがある。開発者に馴染みがあり、コードに最も近いのがユニットテストで、最も遠いのがE2Eテストである。一方、ユーザーに最も近いのがE2Eテスト、最も遠いのがユニットテストである。興味深いのは、必ずしもユニットテストが通ったからと言って、ユーザーに提供する機能が完全に動くとは限らないこと。「そのためシステムテスト、統合テスト、E2Eテストを実施する必要があります」と松浦氏。だが、コードから遠くなればなるほど、テストにかかる時間も長くなる。つまり一番、コードから遠いE2Eテストは実施するのが難しくなる。

 このE2Eテストが持つ課題を解決すべく、オーティファイが提供するのが「Autify」である。

 Autifyは2つの製品に分かれる。一つはWebアプリケーションをテストする「Autify for Web」。もう一つは「Autify for Mobile」。いずれも使い方は簡単だ。Autify for Webであれば、最初にシナリオの名前を付け、テスト対象となるURLを入力する。レコーディング開始ボタンを押すと、別のウインドウ上が起動し、その上で操作したことが全てテストシナリオとしてレコーディングされる。実際、松浦氏はタイトルの文字が一致しているかどうか、また英語のページでも同じ表示になっているかというテストシナリオをつくる様子を披露した。コードを1行も書くことなく、先のテストシナリオを作成した。「コードを書けば、さらに高度なテストもできるようになります」(松浦氏)

 できたシナリオは複数のものを一つのテストプランに入れることで、並列実行もできる。「AutifyはPCブラウザだけではなくモバイルブラウザもサポートしているので、さまざまなデバイスでテストを同時実行できます」(松浦氏)

 また定期実行だけではなく、API連携もできるので、テストの自動化に大きく貢献できる。テスト結果は、スクリーンショットがついた状態で確認できる。またビデオも録画されているので、「どこがうまくいかなかったのか、容易に把握できるようになる」と松浦氏は話す。ログもテスト結果画面で確認できるので、テストの失敗理由を容易に切り分けができるようになる。

 一方のAutify for Mobileはモバイルアプリが対象。Autify for Webとの違いは、Webブラウザではなく、iOSやAndroid環境のエミュレータが立ち上がること。そのため端末実機を用意する必要もない。「エミュレータの上でタップやスワイプというアプリ操作をするだけで、誰でも簡単にテストを作成・実行できます」と松浦氏は説明する。

Autifyのテスト結果画面
Autifyのテスト結果画面

AI活用で実現している機能

 オーティファイでは、人間がより創造性の高い仕事に従事できるように、Autify for Webをリリースした約4年半前から要素の特定にAI活用を進めてきた。WebアプリケーションのE2Eテストコードを記述する場合、クリックすべきボタンなど、テストすべき要素の特定情報を入力する必要がある。

 だがAutifyでは、ユーザーがそれを入力する必要がない。これが可能なのは、「クリックや選択した要素の特徴情報を記憶し、テスト実行時にAIがその要素の特徴情報と同じ要素を特定しているからです」と松浦氏は説明する。

 要素特定にAIを活用する理由は、ユーザーの入力手間を省くからだけではない。テスト対象は変わり続ける性質であることも理由だ。「例えば住所が頻繁に変わる人の場合、住所の代わりにヒゲが生えている、メガネをかけているみたいなところで人を特定するのと同じようなことです」(松浦氏)

 例えば、Webデザインを少しだけ変更することは頻繁に起こりうることだ。だが、そうするとHTMLのコードも変わる。自分でテストスクリプトを書いている場合、前回のまま使用してしまうとテストは失敗してしまう。Autifyであれば、デザインの変更により特徴情報の一部が変わっても、前回のテスト実行時との要素認識のずれを検知するセルフヒーリングという仕組みを持つ。「類似度が比較的高ければ、そのままテストを実行できる」と言い切る。

 類似度が低かったり、要素がなくなったりする場合は失敗し、人間に確認を促す。一方、モバイルアプリのテストには、特有の問題がある。モバイルアプリの場合はHTMLで要素の状態が記述されていないため、HTMLを使った要素の特定ができない。そこでAutifyでは、スクリーンショットに注目し、画像情報から必要な情報を抽出することに取り組んでいる。

 画像情報をもとに、指定した要素をAIが判断し、抽出・特定する。またセルフヒーリング同様、画像情報を基に変化があった要素を探索できる。「私たちが独自開発したAIモデルを使って実現しています」(松浦氏)

 さらにユニークなAI活用の仕組みとして松浦氏が紹介したのは、チェックボックスの認識である。一般的なチェックボックスは<input>というタグを使って表現する。だが昨今のチェックボックスは<input>タグではないもので実装されることも多い。つまり実装がさまざまで人間が見ても分からないことが多いのだ。

 このような異なる実装のチェックボックスが存在すると、その違いを認識できずテストが失敗することになる。そこでAutifyでは、チェックボックスの見た目から選択・非選択を判断するAIモデルを作成。「このモデルが実現できたのは、私たちがたくさん積み重ねてきたテスト実行の事例があったからです」と松浦氏は話す。この仕組みにより、チェックボックスのテストが非常に楽になる。「このように私たちはいろいろなところでテストの自動化をスムーズにするAIを開発しています」(松浦氏)

 とはいえ、これらの仕組みは容易に実現できたわけではない。AIモデルの作成には機械学習で行うが、それには大量のデータが必要になる。だがテスト自動化に使えるデータセットはあまりないという問題があった。たとえデータが大量にあったとしても、学習させるには正解情報をつける(アノテート)必要がある。「この正解情報をつける作業は非常に手間がかかる」と松浦氏は明かす。しかも間違った情報をつけてしまうと、それ自体高精度である必要があるのだ。

 高精度を保つため、Autifyではさまざまな工夫を行っている。例えば、文字認識もその一つ。800〜5000万といった日本語と数字が混ざって表示されているケースをOCRで読み取るのは非常に難しい。だがAutifyは特化したデータで学習させているため、精度高く認識できる。

前回のテスト実行時との要素認識のずれをAIが検知
前回のテスト実行時との要素認識のずれをAIが検知

 また問題が発生した場合も、顧客からの問い合わせや失敗したテストケースを分析することで、問題にあわせてモデルをチューニングしている。もちろんリグレッションがないようにテストも入念に行っているそうだ。

LLMの活用でより抽象度の高いテスト工程を効率化

 ソフトウェアテストは要件分析、テスト計画の作成、テストケースの開発、テスト環境の作成、テストの実行、テストサイクルの完結という6つの工程でライフサイクルを回していく。従来のAIがカバーしてきたのはテスト環境の作成やテストの実行、およびテストサイクルの完結の一部だった。しかし大規模言語モデル(LLM)の登場により、AIがカバーする領域が拡大する可能性があるという。LLMは言語の理解力が高いので、抽象度の高い作業ができる。要件分析やテスト計画の作成、テストケースの開発という上流工程は、抽象度が高い。つまり、ここにLLMが使える可能性があるのだ。

 「個人的に、GitHub CopilotやChatGPTでのユニットテストコードやE2Eコードの生成、テストのパターン出しなどに使っている人もいるのではないでしょうか」(松浦氏)

 このようにテスト自動化の枠外でLLMをサポート役として使う例は増えている。だがLLMにはハルシネーションや生成物への責任、品質管理の問題がある。「最終的に人間がレビューする必要があるので、人間にはより高いスキルが求められるようになるジレンマがあります」と松浦氏は言う。

 このジレンマを解決する方法の一つとして、ユーザーが直接LLMを使うのではなく、LLMを意識させないような仕組みを作り、LLMを製品に組み込んでしまう方法がある。そうすれば人間はLLMの出力をレビューすることなく、その恩恵にのみ預かることが可能だ。 その具体例として、Autifyが昨年提供した「Step Suggestions」という機能がある。これは画面の内容をもとに何をテストすべきかを教えてくれる機能だ。そのほか、「Scenario Summarizer」という非常にステップ数の長いテストの情報を要約して表示してくれる機能の提供も開始。Step Suggestions、Scenario Summarizerのいずれの機能もLLMを活用している。

Scenario Summarizerの画面例
Scenario Summarizerの画面例

 E2Eテストはまだまだ自動化・省力化の余地は大きい。オーティファイでは、従来型の独自AIモデルとLLMを積極的に活用し、人間ができるだけテストをしなくてもよい世界の実現を目指していく。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

提供:オーティファイ株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19277 2024/04/26 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング