テスト自動化関連ツール・ライブラリまとめ

分類については独断です。また、こつこつ「ひとこと説明」を追加していく予定です。

Selenium関連については

[Awesome Selenium : 素晴しい Selenium ライブラリの数々 - Qiita](https://qiita.com/hatai/items/a4cbff763b9ee8a7879a)

が参考になります。

## FAQ

- なんで＊＊＊を除いているのか
    - 恣意的に除いていることはないので、編集リクエストかコメントをください

## GUIテスト自動化ツール

モバイル・デスクトップアプリ・ブラウザのうち複数の対象のGUIを操作できるテスト自動化ツール。

### 有料

#### インストール型

- [UFT One](https://www.microfocus.com/ja-jp/products/uft-one/overview)
    - QTP(Quick Test Professional)→UFT(Unified Functional Testing)→UFT One
- [Silk Test](https://www.microfocus.com/ja-jp/products/silk-test/overview)
    - UFT Oneと同じくMicroFocus製で、UFT Oneのほうがメジャーな印象（筆者主観）
- [Ranorex](https://www.ranorex.com/)
- [TestComplete](https://smartbear.com/product/testcomplete/overview/)
    - Webのテスト時にAutoHealing機能が付いた
- [Eggplant](https://eggplant.io/)
- [Telerik Test Studio](https://www.telerik.com/teststudio)
- [TestArchitect](https://www.testarchitect.com/)
- [The LEAPWORK Automation Platform](https://www.leapwork.com/product/test-automation)
- [ZAPTEST](https://www.zaptest.com/)
- [Marathon & MarathonITE](https://marathontesting.com/)
- [AscentialTest](https://ascentialtest.novalys.net/)
- [Sahi Pro](https://sahipro.com/)
- [Sencha Test](https://jp.sencha.com/products/test/#overview)
- [ATgo](https://atgo.rgsis.com/)
    - あっとごーでなくえーてぃーごー
    - ネットワーク通信なしで動作するので、セキュリティ要件が厳しい業界（金融）で効果を発揮するとのこと

#### Webサービス型

- [Experitest](https://experitest.com/)
- [Endtest: Codeless Automated Testing](https://endtest.io/)
    - WebとモバイルのテストができるWebサービス
- [Reflect](https://reflect.run/)
- [testigma](https://testsigma.com/)
- [T-DASH](https://www.t-dash.io/)
    - 制限期間なし無料もあり（広告つき）
    - 日本語のキーワード駆動で自動化が可能で、ロードマップにはモバイルとWindows対応も含まれている
- [BugBug.io](https://bugbug.io/)
    - キャプチャリプレイでサクサク自動化できるタイプのツール。自動修復など確認できなかったので一旦こちらへ。

### 無料（体験版ではなく）あり

- [Robot Framework](https://robotframework.org/)
    - "Python ベースの拡張可能なキーワード駆動型 (keyword-driven) テスト自動化フレームワーク" via [Robot Framework の紹介 — RobotFramework和訳・日本語ドキュメント集](https://robotframework-ja.readthedocs.io/ja/latest/userguide/GettingStarted/Introduction.html)
- [Katalon Studio](https://www.katalon.com/)
    - 無料のテスト自動化ツールには珍しくWindows, Mobile, Webの3種類を自動化できる
    - 内部的にはSelenium, Appium, WinAppDriverがベース
    - 筆者が使った範囲だと、Windowsの操作は日本語環境だとまだ難しい様子
- [OpenTest - Test automation tool for web, mobile and APIs](https://getopentest.org/)
- [RedwoodHQ | Open Source Test Automation Framework](http://redwoodhq.com/)
- [Airtest Project](http://airtest.netease.com/)
    - Sikuliのように画面の中から指定した画像にマッチする部分を探してきて操作もできる。
    - ゲームのテスト自動化に使えるよ！をアピールしている
- [Oxygen](http://oxygenhq.org/)
    - JS＋SeleniumとAppiumで自動テストを書くフレームワーク兼IDE
    - OSS
- [TestProject](https://testproject.io/)
    - WebとMobile向け

## AIを使ったテスト自動化ツール

- [mabl](https://www.mabl.com/)
    - Webの自動化, APIテストの自動化
    - 2022/7に満を持して日本語に対応した
- [Preflight](https://preflight.com)
- [testim](https://www.testim.io/)
- [test.ai](https://test.ai/)
- [applitools](https://applitools.com/)
- [Magic Pod](https://magic-pod.com/)
    - Webとモバイル（Android&iOS）の自動化が可能。
- [testsigma](https://testsigma.com/)
- [Autify](https://autify.com/ja/)
    - WebとiOSに対応。Androidの対応予定あり。
    - 日本国内での導入実績が多数
- [Qentinel](https://qentinel.com/)
- [MLET.Ⅱ](https://www.amifiable.co.jp/mlet/)
    - ツール指定様式の画面設計書を入力すると、SeleniumもしくはSilkTest用のスクリプトを出力
- [Sofy](https://sofy.ai/)
    - モバイル向けノーコードテスト自動化ツール兼デバイスファーム
    - 手動テストの実行や管理も可能とのこと

## デスクトップ向けテスト自動化ツール・ライブラリ

- [WinAppDriver](https://github.com/microsoft/WinAppDriver)
    - Microsoft社公式の、WindowsをSelenium感覚で動かせるライブラリ
    - 日本語環境での動作がいまひとつなイメージ
- [kfrajtak/WinAppDriver](https://github.com/kfrajtak/WinAppDriver)
    - Microsoft製のほうと全く同じ名前だけれども別の方が作っているライブラリ
    - むしろこちらのほうが最近でもメンテされている・・・？
- [RaiMan's SikuliX](http://sikulix.com/)
    - 画像によるオブジェクト認識が可能な自動化ツール
- [AutoIt](https://www.autoitscript.com/site/)
    - Pythonなどにラッパーライブラリがあったりして意外と使いやすい
- [AutoHotkey](https://www.autohotkey.com/)
    - AutoItが揉めて分離したプロジェクト
    - テスト自動化にも使えるけれども、プロセスを常駐させてCapsをCtrlにしたり、名前の通りキーに対してなんらかの置き換えをしたり、ショートカットやマクロ的なものを用意したりなど、業務効率化界隈でも名前を聞く
- [UWSC](https://www.vector.co.jp/soft/winnt/util/se115105.html)

## ブラウザ向けテスト自動化ツール・ライブラリ（wrapper含む）

- [ShouldBee](https://shouldbee.at/)
- [Selenium](https://www.seleniumhq.org/)
    - [healenium](https://github.com/healenium/healenium-web)
        - SeleniumにSelf-Healingを追加するライブラリ
- [Gauge](https://gauge.org/)
- [Karate Driver](https://intuit.github.io/karate/karate-core/)
    - APIテストとGUI操作のテストができる
- [bucky](https://github.com/lifull-dev/bucky-core)
    - [株式会社LIFULL（ライフル）](https://lifull.com/)が公開しているOSS
- [Fake](https://fakeapp.com/)
    - mac向けのWebテスト自動化ツール・・・だがだいぶ古い

### for Java

- [Selenide](https://selenide.org/)
    - JavaでSeleniumWebDriverをそのまま扱うよりもシンプルで短く書けるように工夫されたWebDriverのwrapper
- [selenified](https://github.com/Coveros/selenified)
- [playwright-java](https://github.com/microsoft/playwright-java)

### for Python

- [Golem](https://golem-framework.readthedocs.io/en/latest/)
- [splinter](https://github.com/cobrateam/splinter)
- [selene](https://github.com/yashaka/selene)
    - Python向けのSelenideくらいのイメージ
- [playwright-python](https://github.com/microsoft/playwright-python)
    - PythonでPlaywrightが使えるMicrosoft公式ライブラリ

### for Ruby

- [Watir Project](http://watir.com/)
- [Capybara](http://teamcapybara.github.io/capybara/)

### for JavaScript

- [Cypress.io](https://www.cypress.io/)
- [Protractor](http://www.protractortest.org/)
- [WebdriverIO](https://webdriver.io/)
- [TestCafe](https://devexpress.github.io/testcafe/)
- [Nemo](http://nemo.js.org/)
- [Puppeteer](https://developers.google.com/web/tools/puppeteer/)
    - Google製の、Chrome（Chromium）の自動操作用node.jsライブラリ。デフォルトがヘッドレス。
- [Nightwatch.js](http://nightwatchjs.org/)
- [Nightmare](http://www.nightmarejs.org/)
- [CodeceptJS](https://codecept.io/)
    - WebdriverIO、Protractor、Nightmare、Puppeteerのラッパー
- [playwright](https://github.com/microsoft/playwright)
    - Microsoft製。GoogleでPuppeteer開発していたチームがMicrosoftに移って作ったので、Puppeteerの上位互換と言う人も。
    - Chromium、Firefox、webkit対応なのでメジャーなブラウザはコレで動かせるところが利点

### for .NET
- [playwright-dotnet](https://github.com/microsoft/playwright-dotnet)

### キャプチャ・リプレイツール

- [Selenium IDE](https://www.seleniumhq.org/selenium-ide/)
- [Katalon Automation Recorder](https://www.katalon.com/resources-center/blog/katalon-automation-recorder/)
- [SideeX](http://www.sideex.org/)

## モバイル向けテスト自動化ツール・ライブラリ

### Android / iOS

- [Appium](http://appium.io/)
    - Seleniumのようにモバイルのテスト自動化ができるライブラリ
- [Appium Studio](https://experitest.com/mobile-test-automation/appium-studio/)
    - Appiumでの自動テスト作成がやりやすくなるIDE
- [coteafs-appium](https://github.com/WasiqB/coteafs-appium)
- [21](https://21labs.io/)
    - モバイルのテスト自動化ができるクラウドサービス
    - 無料枠あり
- [shirates](https://github.com/ldi-github/shirates-core)
    - 白玉団子から来ているらしい、株式会社ローソンデジタルイノベーション製OSS
- [Maestro](https://maestro.mobile.dev/)
    - ReactNativeやFlutterも自動化できるとのこと

### iOS

- [EarlGrey](https://github.com/google/EarlGrey)

### Android

- [Espresso](https://developer.android.com/training/testing/espresso)
    - Androidアプリの開発者向けUIテストフレームワーク
- [UI Automator](https://developer.android.com/training/testing/ui-automator)
    - システムアプリとインストール済みアプリにまたがるアプリ間の UI 機能テストに適した UI テスト フレームワーク

### フレームワークごと

- React Native
    - [Detox](https://wix.github.io/Detox/)
- Flutter
    - [flutter_driver library](https://api.flutter.dev/flutter/flutter_driver/flutter_driver-library.html)

## ユニットテストフレームワーク

### for Java

- [JUnit 5](https://junit.org/junit5/)
- [TestNG](https://testng.org/doc/)

### for Python

- [unittest](https://docs.python.org/ja/3/library/unittest.html)
    - 標準で使用できるのがこちら
- [pytest](https://docs.pytest.org/en/latest/)
    - 別途pipなどでインストールが必要だが、unittestよりリッチ

### for Ruby

- [test-unit](https://test-unit.github.io/)

### for JavaScript

- [Mocha](https://mochajs.org/)

## BDDフレームワーク

- [Cucumber](https://cucumber.io/)
- [Serenity BDD](http://www.thucydides.info/#/)

### for Python

- [behave](https://github.com/behave/behave)
- [radish](http://radish-bdd.io/)

### for Ruby

- [RSpec](https://rspec.info/)

## アサーションライブラリ

### for Java

- [Truth](https://truth.dev/)
- [AssertJ](http://joel-costigliola.github.io/assertj/)
- [Java Hamcrest](http://hamcrest.org/JavaHamcrest/index)

### for JavaScript

- [Chai](https://www.chaijs.com/)

## CI/CDツール

- [Jenkins](https://jenkins.io/)
    - OSSで、自分でサーバにインストールして使うのが主
- [CircleCI](https://circleci.com/)
    - クラウドサービス
- [Travis CI](https://travis-ci.org/)

## 構成管理ツール

- [Ansible](https://www.ansible.com/)

## サーバのテスト自動化ツール

- [Serverspec](https://serverspec.org/)
- [goss](https://github.com/aelsabbahy/goss)
- [Chef InSpec](https://www.inspec.io/)

## ネットワークのテスト自動化ツール

- [pyATS & Genie](https://developer.cisco.com/pyats/)
- [nornir](https://github.com/nornir-automation/nornir)
    - 「ノルニル」らしい

## 負荷テストの自動化ツール

- [Apache JMeter](https://jmeter.apache.org/)
- [Gatling](https://gatling.io/)
- [LoadRunner](https://www.microfocus.com/ja-jp/products/loadrunner-professional/overview)

## APIテスト自動化ツール

- [Karate](https://intuit.github.io/karate/)
- [jsdom](https://github.com/jsdom/jsdom)
- [supertest](https://www.npmjs.com/package/supertest)
- [frisby](https://github.com/vlucas/frisby)
- [SoapUI](https://www.soapui.org/)

## 受け入れテスト自動化ツール

- [FitNesse](http://docs.fitnesse.org/FrontPage)

## ビジュアルテスティングツール

- [BackstopJS](https://garris.github.io/BackstopJS/)
- [applitools](https://applitools.com/)
- [reg-suit](https://reg-viz.github.io/reg-suit/)
- [Happo.io](https://happo.io/)
- [Percy](https://percy.io/)
- [Trakr](https://www.trakr.tech/)
- [Gazo-san](https://github.com/lifull-dev/Gazo-san)
    - [株式会社LIFULL（ライフル）](https://lifull.com/)が公開しているOSS
- [VisWiz.io](https://www.viswiz.io/)
- [screenshot-tests-for-android](https://facebook.github.io/screenshot-tests-for-android/)

## レポート・ダッシュボード

- [ReportPortal](https://reportportal.io/)
- [Allure](http://allure.qatools.ru/)
- [Extent Reporting Framework](https://www.extentreports.com/)
- [Tesults](https://www.tesults.com/)
- [Testomat](https://testomat.io/)
- [Calliope Pro](https://www.calliope.pro/)
- [Perfecto](https://www.perfecto.io/platform/analytics-reporting)
- [Test Evolve](https://www.testevolve.com/real-time-reporting)
- [Testspace](https://www.testspace.com/)
- [Metabase](https://www.metabase.com/dashboards/qa-automation-dashboard)
    - オンプレミスのOSS版であれば無料で使用可能

## デバイスファーム

- [DeviceFarmer/stf](https://github.com/DeviceFarmer/stf#devicefarmer-vs-openstf-faq)
    - stfを入れたサーバにAndroidを複数繋いで、それを遠隔からブラウザ越しに操作できる
    - 以前OpenSTFという名前だったものの、開発が止まってforkしたこちらが主になっている様子
- [Firebase Test Lab](https://firebase.google.com/docs/test-lab/?hl=ja)
- [HeadSpin](https://www.headspin.io/)
- [Kobiton](https://kobiton.com/)
- [Remote TestKit](https://appkitbox.com/testkit/)

## クラウド上で実行環境を提供してくれるサービス

- [BrowserStack](https://www.browserstack.com/)
- [Aerokube | Efficient Selenium Testing Infrastructure](https://aerokube.com/)
- [TestingBot: Cross Browser Testing and Mobile App Testing](https://testingbot.com/)

## モニタリング

- [Checkly](https://www.checklyhq.com/)
    - APIとE2Eのモニタリングができるサービスとのこと。フリープランあり。

## ゲームのテストツール

- [Machine heads](https://mheads.net/)
- [Airtest Project](https://airtest.netease.com/)

## その他テスト対象特化型

- [TestZeus](http://testzeus.com/)
    - Salesforce向け


## 参考
- [E2Eテストの面倒くさいことはCodeceptJSにお願いしよう - Qiita](https://qiita.com/Kesin11/items/11da1b4cf9d58e4dd9af)
- [Puppeteerの上位互換？自動テストにPlaywrightを使ってみる - Qiita](https://qiita.com/riku-shiru/items/fb3677780802ea90bd5e)