GUIテストツール一覧

# GUI(グラフィックユーザーインターフェース)テストツールについての比較

現場での：**GUIテストツール導入**にあたり　**「メリット」** と　**「デメリット」** を纏めてみました。

（昨今、**GUIテストツールの数**が多く何がどのテストツールがマッチしているのかも含め。）

今まで色々と**GUIテストツール**の導入検討してきましたが、**業務**タスクに沿った選定ができればと思い、纏めております。


GUIテストツールには有償・無償ありますが、**「費用対効果も含め」**　選定ができれば尚良し。

**Seleniumファミリー**だけではなく、最近の**テストツールトレンド傾向**を調査し、どのツールがベストなのか。

## Selenium（WebDriver）
E2Eテストの王道、WebDriverに依存するため最新ブラウザには注意が必要であるが、プログラミングライブラリが豊富。

※**Selenium**は、テストツールではなく　**「ブラウザ操作ツール」** であるがここでは「テストツールグループ」に入れておく。

![ダウンロード.jpg](https://qiita-image-store.s3.amazonaws.com/0/55160/8c7fb6e5-06bf-cf28-8d52-6e9d98e946eb.jpeg)

https://www.seleniumhq.org/

**Eclipse**を使用しての実装パターン

![テスト.png](https://qiita-image-store.s3.amazonaws.com/0/55160/274ad638-714d-fe9c-93c9-8ad4c1c1188f.png)

メリット

1.現時点での　**「ブラウザテストフレームワーク」** の王道であるため誰でも知っている。
2.クロスブラウザに対応している
3.メソッド化や共通化ができる、**メンテナンス**向き
4.WebDriverスクリプトはコマンド主体でテストできる、またCIツールとの連携も可能
5.プログラミングライブラリが豊富である（Java、C#、Python、Ruby、PHP、Perl）など
6.ブラウザを自動操作するツールであってテスト以外の用途（スクレイピングや手元の操作の自動化など）でも使える

デメリット

1.処理が止まるたびに**Waitコマンド**で対応
2.**処理速度が遅い**
3.UI 変更に弱い。変更が多い画面には不向きで、修正コストがかかる
4.一定のプログラミングスキルが必要なため、誰でも実装できるわけではない。（※IDEもあるが、範囲が限られているためここでは除外）
5.ダウンロードやアップロードのテストが難しい（※他のフレームワークで可能かは不明）
6.frameの移動や、見えないボタンの操作、印刷ダイアログの操作ができない
7.設定項目が多い(※各ブラウザのWebDriverをインストール）

## Selenium（IDE）
https://qiita.com/jun2014/items/bf6b87699b7622c91326

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/2d8ed6c3-30ca-4fe5-9467-d4a4d8bde25f.png)

昔からのアドオンブラウザ操作ツールであり、Firefox 55では、旧アーキテクチャにより使用不可でした。
開発も止まってしまいました。

そのため、Selenium上では、**悲しいメッセージのみ**表示し、ファイルを読み込むことすらできません。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/8e6d1600-ce89-4e6c-8405-1d7711a0a76e.png)


しかし、**2018年4月に、v3.0.0にバージョンアップ**。**Chrome**と**FireFox**どちらの環境でも動くようになりました。

https://github.com/SeleniumHQ/selenium-ide/releases

Chromeにも対応することになり、FirefoxとChromeに対応している。
しかし、設定面で手間がかかる。以前使用していたFor文や、Goto文などが使えない。。
Firefox Quantumでは、レガシーアドオンが使用できない。
そのため　**「SelBlocks」** **「Flow Control」****「File Logging」****「Screenshot on fail」** **「Test Results」**
は互換性がありませんとのメッセージ。

**Chrome**
https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd

**Firefox**
https://addons.mozilla.org/ja/firefox/addon/selenium-ide/

**メリット**
1.片手間で、テストスクリプトを作成することが可能。記録機能がついているので、プログラミングスキルが無くともスクリプトを作成することができる
2.簡単な繰り返し確認やキャプチャ取得であればこれぐらいでも使えそう

**デメリット**
1.昔のアドオンが使えなく、クリックや表示確認ぐらいの処理しかできないのが難点
2.頻繫にバージョンアップが発生するため、急にアドオンが使えなくなる可能性もある

## Selenide
SeleniumがWebアプリケーションのテストに特化したツールではないため、Selenium機能をラップしたもの
Webアプリケーションのテスト自動化に特化したJava用のフレームワーク。
※Seleniumとは違い、Selenideは初めからUIテストのために設計されているのでテストツールである。

![FireShot Capture 109 - Selenide_ concise UI tests in Java - http___selenide.org_.png](https://qiita-image-store.s3.amazonaws.com/0/55160/78893792-d894-117d-725a-f820c358417f.png)


**メリット**
ブラウザの起動や破棄を自動で管理
非同期の待機処理に対応済みである。
テスト失敗時の自動スクリーンショット保存

**デメリット**
言語は、Java一択であるため、柔軟性が無い。Javaのみ。
設定準備にけっこう時間がかかる。
Apache Mavenを利用するためビルドツールを知っていないと。
実装はWebDriverの方が簡単のような気がする。

試しに何かを作ってみる。
![SD.png](https://qiita-image-store.s3.amazonaws.com/0/55160/fe6fb9c4-7797-46f5-31ad-ba07b41f89bc.png)


## Katalon Recorder（Selenium IDE の強化版）
**最新バージョン：7.1.0** 最終更新：2024年12月18日

**メリット**と**デメリット**は、SeleniumIDEと同じであり後継の役割を果たしております。

https://chrome.google.com/webstore/detail/katalon-recorder-selenium/ljdobmomdgdljniojadhoplhkpialdid

![kaitalon.png](https://qiita-image-store.s3.amazonaws.com/0/55160/b01b63dc-fabe-f972-cc63-1d11b1f20418.png)



## Cypress
**最新バージョン：14.2.1 ​ Released 3/26/2025**
https://docs.cypress.io/guides/references/changelog

**Cypress** はブラウザ上でランナーが動き、そのランナーの中の iframe でテスト対象のページが開く。

また、**「Test Runner」** と **「Dashboard Service」** の 2つがあり、Test Runner はテストをローカルで実行する部分で、無料です。

Dashboard Service（CI で実行したテストの記録にアクセスできるようにするサービス）

テスト結果を Public（誰でも見られる）にするなら無料、Private（招待したユーザーのみ見られる）だと有料（現在はベータ期間なので無料）となるらしい。

![FireShot Capture 104 - JavaScript End to End Testing Framework I Cypress._ - https___www.cypress.io_.png](https://qiita-image-store.s3.amazonaws.com/0/55160/9020e40d-1401-8f5d-6fa2-9f97c1eb8402.png)

https://www.cypress.io/

![ペイント.png](https://qiita-image-store.s3.amazonaws.com/0/55160/5e5795eb-8a1c-5db8-a4ba-df3d8c691fd2.png)


**メリット**

1.テスト対象のページで発生するJavascript イベントをテストコード側で listen したりできます。
2.ブラウザ操作の速度も速く、可能なかぎり速くテストを実行可能。
3.Cypress はブラウザの裏で Node.js のサーバープロセスが動いており、これがブラウザ上のテストランナーとやりとりすることによってブラウザ外の操作（スクリーンショットやビデオ、ファイルシステム、ネットワークのコントロールなど）が可能です。
4.SeleniumのようにWaitコマンドを使う必要は無い。

**デメリット**

1.ブラウザ上でテストコードが実行されるというアーキテクチャ上、Javascript/TypeScript 以外の言語は使えない
2.サーバーサイド側の機能を直接使うこともできない
3.複数のブラウザウィンドウを同時に操作ということもできないので、チャットのテストのように 2 つ以上で同時に操作するテストケースには対応できない。
4.Same-origin の制限もあります。1 つのテストの中で複数のドメインをまたぐようなテストはできないとのことです（同じドメイン下の複数サブドメインをまたぐことは可能）。
5.現在は、**Google Chrome**のみの提供である。
6.サーバーサイド側の機能を直接使用できない。

備考
https://github.com/cypress-io/cypress/issues/310

When do you think you'll support other browsers?
We really don't know, its not a priority for us right now.
Why isn't it a priority? This is super important!
We disagree, cross browser testing is not as important as you think it is.

他ブラウザにも今後対応する意思はあるのではないか。
しかし優先度はそれほど高くないとのこと。クロスブラウザは重要ではないと。

Cypressドキュメントは、英語で提供
https://docs.cypress.io/guides/core-concepts/introduction-to-cypress.html#Cypress-Is-Simple
issues
https://github.com/cypress-io/cypress/issues

## Testcafe
最初のリリースが、**2016年10月**であり比較的最近のツール。
なので、それほどコストやパフォーマンスについての資料が無い。
**node.jsライブラリ**を使用しており、ブラウザを呼び出し、操作をシミュレートすることで、自動テストを実施する。

https://qiita.com/jun2014/items/e95dbfa01eddabf3c8d7

![FireShot Capture 105 - A node.js tool to automate end-to-e_ - https___devexpress.github.io_testcafe_.png](https://qiita-image-store.s3.amazonaws.com/0/55160/303a9506-3d63-4e78-8c12-fe8800ac7f44.png)


http://devexpress.github.io/testcafe/documentation/getting-started/

![TestCafe.png](https://qiita-image-store.s3.amazonaws.com/0/55160/1b32e5e5-ed8c-63b7-2f18-a00fbd98bffc.png)


**メリット**

1.テスト実施速度が、「Cypress」同様速いです。
2.最新ブラウザの対応にも関係なく実行可能です。
3.特に動かすための設定が要らない。
4.Seleniumのようにwaitを入れる必要なし。自動で対象要素が出てくるまで待ってくれる。（※ページ読み込みとXHRの完了だけでなく、DOM要素の表示も待機するように作られている）
5.導入コストが少ない。
6.テスト環境の構築が容易である。
7.クロスブラウザ対応している。

・Google Chrome（Stable、Beta、Dev、Canary）
・Internet Explorer（11以上）
・Microsoft Edge（legacyとChromium-based）
・Mozilla Firefox
・Safari
・Google Chrome mobile
・Safari mobile


**デメリット**

1.async awaitが多く、Javascriptの経験者ではないと対応が難しい。
2.Javascriptの一択しかないので、他の言語は使えない。
3.クリックとダブルクリックの判断ができていないような(※chromeだけ）
4.まだよくわからないので調査を進めます。

## Chromeless
Google Chromeのバージョン59から標準搭載された、ヘッドレスモード（GUIがないモード）。コマンドラインからヘッドレスブラウザを立ち上げることができ、スクリーンショットの撮影を行ったりDOMを出力したりすることができる。なお、ChromelessはNode.jsで動作する。

![FireShot Capture 106 - ヘッドレスChromeの自動化_ - https___dev.classmethod.jp_client-side_browser_chromeless_.png](https://qiita-image-store.s3.amazonaws.com/0/55160/77b82ead-8c4f-ad63-723b-f0720086ca56.png)

github
https://github.com/prismagraphql/chromeless

詳細
https://developers.google.com/web/updates/2017/04/headless-chrome?hl=ja

**メリット**
ヘッドレスモードであるため、実行時間が短縮可能。

**デメリット**
Google Chromeのみの提供である。
バージョンアップによって、変更すべき箇所がありそう。
資料が少ないため、エラー対応等の調査に時間がかかる。

## Airtest
中国テクノロジー企業のNetEase（ネットイース）社が提供している。
モバイルゲーム系のテスト自動化フレームワークである。なかなか使う機会がなく、ちょっと触ってみようと。ちなみにPythonで記述している。

![スクリーンショット 2022-02-11 21.30.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/9ee65fbf-f5f4-2360-7247-6df7efe31d3d.png)

https://airtest.netease.com/

**メリット**
記述がわかりやすい。初めての自動化も対応しやすい点。
実行速度が他と比較すると速い。
解像度の変更にも柔軟に対応している。
ゲームの自動化にはもってこいではないか。
そのため、Windows/Android/iOSに対応しており、Unityで開発したアプリも対応可能です。


**デメリット**
そこまで浸透していない点。
ゲーム系の事業会社での実績はあるが。
ネット上に、あまり情報がない。




## Puppeteer

Chromeブラウザ操作可能**Node**のライブラリです。**パペティア**と読みます。

![FireShot Capture 005 - Puppeteer  -  Tools for Web Developers  -  Google Developers_ - developers.google.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/e03f76a6-fb28-d978-ca14-bcd02c456b62.png)

https://github.com/GoogleChrome/puppeteer

**メリット**
ヘッドレスブラウザを使うことができるので、高速に動作させることができます。
Seleniumより早いし、何といっても環境構築が簡単であること。
スクリーンショットも取れます。

**デメリット**
Chromeのブラウザしか操作できない。他のブラウザは使えないですね。
API関連のテストやドラッグ＆ドロップ操作

## mabl
https://www.mabl.com

![スクリーンショット 2022-10-09 14.22.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/30989110-4efb-4151-7236-819fc6e20b10.png)


AI自動化ツール
**シナリオテストの自動化**が可能で
定期実行可能もできます。まずはログインをしてみる。無料版もある。
リンク切れチェックも対応可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/b54ddbaa-f335-0651-29f8-0d6de0ae19f2.png)

## Autify

オーティファイ株式会社が開発。
2019年より自動テストプラットフォーム「Autify」を提供開始。AI自動化ツール

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/5a8bae92-538e-4978-9fa5-2c9461735997.png)


https://autify.com/ja/

**メリット**
環境構築が特に用意する必要が無い
Slack連携が可能
Recorderを使用してのテストシナリオの作成
サポートが厚い（シナリオ作成や、どのように自動化すべきか）
非エンジニアでも作業できるツールである
**デメリット**
実行可能処理、実行できない処理がSelenium同様出てくる。


# GUIモバイルテストツール
## Appium
スマホアプリ向けのテストフレームワーク
Appiumが用意するAPIを経由しテスト実行する

![FireShot Capture 107 - Appium_ モバイルアプリのテスト自動化はすごいことになった - http___appium.io_.png](https://qiita-image-store.s3.amazonaws.com/0/55160/c01dd947-539c-a6a8-77c0-08cf2d39ff08.png)

http://appium.io/

**メリット**
1.AndroidとiOSに対応している。メリットなのかどうか。。
2.Selenium WebDriverを利用者が、少ない学習コストで、AndroidやiOSのアプリの自動テストにも着手できる、という点。
3.テスト用に特別にビルドする必要がなく、リリース相当のものでテスト可能であること。
4.使用可能言語が、Python、JavaScript (Node.js)、Java、Ruby、Objective-C、PHP、C#と幅広いこと。

**デメリット**
1.Selenium同様、テスト速度。
2.設定項目が多い(※各ブラウザのWebDriverをインストール）

## Smartphone Test Farm
CyberAgent社がオープンソースで公開しているオンプレミスにリモートスマホ環境を構築できるサービス
現在、Android版のみ提供中です。

![FireShot Capture 108 - openstf_stf_ Control and manage Android dev_ - https___github.com_openstf_stf.png](https://qiita-image-store.s3.amazonaws.com/0/55160/160e1535-1548-22cd-672f-766d604e5f2e.png)


https://openstf.io/

**メリット**
1.リモートコントロール機能（ブラウザから操作可能）
2.端末管理機能（ブラウザから画面キャプチャや、端末リソースを確認可能）
3.Web 上で各端末のリアルタイムログを取得
4.ドラッグ&ドロップでアプリ（.APK ファイル）のインストール
5.Android Studio、Eclipse、Chrome Remote Debug Tools との連携が可能
6.Android 端末に送るコマンド全てがブラウザ上で操作可能

**デメリット**
1.社内に端末が無いと、、現状3台ほどしかないので、QA専用端末購入が必須。
2.Android版のみの提供。iOSは検討中。

備考
メルカリやナビタイムジャパン、グリー導入実績有

## MagicPod

株式会社MagicPodが開発。
2017年7月 AI自動テストサービス　**「MagicPod」** 提供開始。

https://magic-pod.com/

モバイルアプリテスト、ブラウザ（ウェブアプリ）テスト両方に対応したAIテスト自動化プラットフォームになります。


**非エンジニア**にも導入しやすいのがメリットになります。
簡単なモバイルのリグレッションテストはできそうですね。
しかし、無料版では限度がある。

**メリット**
1.モバイルアプリテスト（Android, iOS）が可能である。
2.ブラウザテスト（Chrome, Edge, Safari, Firefox, IE, Android, iOS）が可能である。
3.テスト回数に制限が無いこと。
4.Slackやメール、BrowserStackのようなツールと連携。
5.Salesforceアプリケーションのテストも可能。

**実装予定**
https://github.com/Magic-Pod/japanese-issue-and-doc/blob/master/UPCOMING_FEATURES.md

モバイルのテストをやってみる。

![スクリーンショット 2021-11-05 0.39.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/180ecdcf-6537-8736-d93c-33471b0359b2.png)

![スクリーンショット 2021-11-05 0.45.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/841a003a-157f-e148-9572-5bc077eb4d49.png)

![スクリーンショット 2021-11-05 0.47.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/d1b9a145-7138-8013-1b7c-9e070377f770.png)


![スクリーンショット 2021-11-05 0.42.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/55160/fef9a918-6b0f-d239-9301-948b50545163.png)



## Calabash
Android、iOSアプリケーションの機能に関して、自動テストが記述できるCucumberから派生ツール
使用したことが無いため、まだよくわかりません。

**メリット**
テストシナリオの可読性。Gherkinはプログラマでなくても読みやすい。日本語も？

**デメリット**

## sikulix

テキスト入力やクリック等のPC操作可能であるツールです。スクリーンショット機能もあります。

http://sikulix.com/

**メリット**

**デメリット**