おもしろそうな海外商用AIテストツール4選

最近目にした、おもしろそうな海外商用AIテストツールを4つ紹介します。
まだ調査段階で各ツールを実際に触れてはいないため、公式サイト等から得られる情報に基づいて記載しています。

1. TestSigma
2. Applitools
3. Testim
4. Apptim

## 参考文献

https://ieeexplore.ieee.org/document/9440153

2021年のICST Workshopで発表されたAIによるテスト自動化に関するサーベイ論文です。
本論文では以下の3点をまとめています。

1.テスト自動化における課題
2.AIによる解決アプローチ
3.よく言及されている６つのAIを利用したテストツール

本ページで紹介するTestSigma, Applitools, Testimに関する言及があり、記事作成の参考にさせていただきました。

## 1. TestSigma

https://testsigma.com/test-development

- 開発 : TestSigma社 @ バンガロール, インド
- 対応プラットフォーム : Web(UI/API), Mobile
- 特徴 : 自然言語処理に基づくテストケースの作成


<iframe width="560" height="315" src="https://www.youtube.com/embed/QpYmbiz4lWM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

「テストケースを英語で書くと動く」という、とてもおもしろいツールです。
AIを自然言語処理に適用し、キーワード駆動テストを簡単に書けるようにしたイメージでしょうか。CIに繋げばBDDやATDDのようなこともできそうです。

AIテスト自動化ツールの収録方式はキャプチャ&リプレイ型が主流ですが、キャプチャ&リプレイ型では記録した操作とその操作に対する説明・アノテーションが乖離しがちです。（自動生成されたアノテーションの変更を忘れることもしばしば…）
その意味でも「テストケースを自然言語で記載する」という視点は良さそうに思いました。

もしかすると、"Tests as Documentation"というBDDの精神の流れから生まれたツールなのかもしれませんね。（参考:[テスト駆動開発／振る舞い駆動開発を始めるための基礎知識](https://atmarkit.itmedia.co.jp/ait/articles/1403/05/news035_3.html)）
"Tests as Documentation"に関しては[Viktor Farcic氏の"Tests as documentation"](https://technologyconversations.com/2014/04/08/tests-as-documentation/)が詳しいので、こちらも合わせてお読みいただけるとよいかと思います。

## 2. Applitools

https://applitools.com/

- 開発 : Applitools社 @ カルフォルニア, US
- 対応プラットフォーム : Web, Mobile
- 特徴 : Visual AIによるビジュアルテスティング


<iframe width="560" height="315" src="https://www.youtube.com/embed/NzfYwZhbajU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Applitoolsはビジュアルテスティングに特化したAIテストツールです。
SDKから呼び出された際にスクリーンショットを取得し、ベースライン画像との差分を高精度で比較してくれます。

先程の自然言語処理と同じく、画像認識はAIが強い分野ですね。
Applitoolsはビジュアルテスティングに特化したSDKという点にスコープを限定し、データ収集の点で他社が追随の出来ない優位性を築いています。
Selenium, Appium, CyPress, Playwrightなど、有名所のテストツールはほとんどSDKが用意されている点も嬉しいところです。

## 3. Testim

https://www.testim.io/

- 開発 : Testim社 @ カルフォルニア, US
- 対応プラットフォーム : Web
- 特徴 : Smart Locatorを始めとした高機能性


<iframe width="560" height="315" src="https://www.youtube.com/embed/O05pX1ullPE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>


高機能性が魅力のキャプチャ&リプレイ型のWeb自動テストツールです。[mabl](https://www.mabl.com/japan)や[Autify](https://autify.com/ja)の競合に当たりますね。

一見しただけでは他ツールとあまり変わらないように見えますが、参考文献に挙げた論文「AI-based Test Automation: A Grey Literature Analysis」に同じUS発のmablとAIの活用で異なっている点があるとの指摘がありました。簡単にまとめたものが以下になります。

- mablが採用しているのは、**テスト実行が失敗した際に**該当するロケータを修正して再実行する対症療法的なアプローチである
- Testimが採用しているのは、過去のテスト実行時のデータを元に、**テストの実行前に**採用するロケータの重みを変更する予防療法なアプローチである

得失はあるのかと思いますが、内部アルゴリズムとしては後者の方が難しいことをしているかと想定されます。
Testimは後者のアプローチを"Smart locators"と呼んでおり、下記製品ページにもAIの活用法のトップに記載しています。かなりの自信を持っていることが推察できますね。
https://www.testim.io/test-stability/

このようなAIのアルゴリズムなど内部で実行されている処理の違いは、プロダクトの競争力の源泉でもあり、あまりユーザー側には開示されていないように思います。なんらか詳しく知れる機会があるといいですね。

## 4. Apptim

https://www.apptim.com/

- 開発 : Apptim社 @ カルフォルニア, US
- 対応プラットフォーム : Mobile
- 特徴 : モバイルアプリテスト実行時のパフォーマンスの測定


<iframe width="560" height="315" src="https://www.youtube.com/embed/WHNrVyWeXoM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

(Testimの紹介のあとにApptimの紹介ですと同じ会社の別プロダクトのように見えますが、関係はないようです)

モバイルアプリのパフォーマンステストに向けたプラットフォームを提供するサービスです。
テストを実行をしたとき、各ステップのパフォーマンスデータを自動で取得し可視化してくれます。
実行時にキャプチャしてくれるデータは以下の通りであると記載されています。
https://www.apptim.com/pricing#faqs

- Screenshots
- Video of the test session
- Device resource usage (CPU, Memory, Battery)
- Device-specific information like OS version, screen density, screen size and hardware details
- App Crashes and ANRs (Application Not Responding)
- App Render times, Threads, SQL times
- Device logs

このサービス自体にはテスト作成の機能はなく、SDK的な立ち位置になるようですね。
手動でテストを実行する場合はDesktopアプリを、Appiumなどで自動テスト実行をした場合にはCLIを用いるとの記載がありました。

筆者にはパフォーマンステストの経験はないのですが、モバイルゲームなど高負荷のかかるアプリにおいてはパフォーマンステストが重要であることは想像できます。
Applitoolsしかり、"ちょっとニッチだけど唯一無二のSDK"的立場を狙う方が、実は生存戦略として優秀なのかもしれないですね。小さな池の大きな魚、というやつでしょうか。(誤用)

## まとめ

本記事ではおもしろそうな海外商用AIテストツール4選として、
TestSigma, Applitools, Testim, Apptimを紹介しました。

日本での知名度が高い[Magic-Pod](https://magic-pod.com/)、[Autify](https://autify.com/ja/)、[mabl](https://www.mabl.com/japan)らと切磋琢磨しながら業界全体が発展していってくれれば嬉しいですね。

また、個人としてはその時々で最も優れたツールを使えるよう情報収集を怠らないことが大事であるように感じます。海外のカンファレンス動向等をチェックしてみるのもいいかもしれませんね。ではまた。