Webアプリの自動テストのcapybaraやSeleniumなど用語を整理した

Webアプリの自動テストのcapybaraやSeleniumなど用語を整理した

Table of Contents

SeleniumやWebDriverは、Webアプリのシステムテストの自動化に関する用語です。
これら用語は名前が似てたり関係性が曖昧で、ネット記事を見てもいまいちに腹落ちしません。
それゆえ、これらの用語の意味や関係性を整理しました。

整理した用語一覧

今回整理した用語はSeleniumを使う上で、混乱の中心となる用語に絞ります。
選定基準は、私が調べながら分かりにくいと感じた用語です。

  • capybara
  • WebKit
  • Selenium
  • WebDriver
  • ChromeDriver
  • Chrome用WebDriver
  • selenium_chrome
  • capybara-webkit

capybaraとはライブラリ名

capybaraはRubyのライブラリ(gem)の1つで、RackベースのWebアプリ用統合テストツールです。
Webサイト上のユーザー操作をシミュレートします。 capybara

WebKitとはレンダリングエンジン

WebKitはHTMLレンダリングエンジンの1つで、Safariのレンダリングエンジンとして使われてます。

WebKitは、元々アップルのmacOSに搭載されるSafariのレンダリングエンジンとして、LinuxやBSDといった、Unix系用のレンダリングエンジンであるKHTMLをフォークして開発された。現在はその他の多くのプラットフォームに移植されている。Wikipediaより抜粋

Seleniumとはテストプロジェクト

SeleniumはWebアプリを自動テストするためのフレームワークまたはプロジェクトです。 「フレームワークまたはプロジェクト」と曖昧なのは、Seleniumの歴史によって用語の意味が変わってるためです。

現在であれば、プロジェクトです。

Selenium is an umbrella project encapsulating a variety of tools and libraries enabling web browser automation.

SeleniumはWebブラウザの自動化に関する様々なツールやライブラリで構成されたプロジェクトです。
Selenium WebDriver, Selenium Grid, Selenium IDEなど複数ツールがある。

WebDriverとはコンポーネント

WebDriverはSeleniumコンポーネントの1つで、ブラウザ操作用のAPI群とプロトコルです。
このプロトコルをブラウザで準拠させたものをDriverと呼ばれ、Seleniumとブラウザ間の通信を仲介します。
つまり、実行ブラウザ(Driver)が変わっても操作は変えずに実行できます。

各ブラウザは特定のWebDriverの実装を持ってます。
例えば、ChromeならChrome用WebDriver(ChromeDriver)がそれにあたります。

ChromeDriverとはWebDriverの1つ

ChromeDirverはWebDriverをChrome用に実装したDriverであり、ツール名です。

ChromeDriverはPC向けChromeとAndroid向けChromeで利用できます。
OSもMac, Linux, Windows, ChromeOSに対応してます。

selenium_chromeとは識別用の文字列

Capybaraのドライバー指定で、Chrome用WebDriver(ChromeDriver)を指定する文字列です。 下記コードのように使います。

Capybara.configure do |capybara_config|
  capybara_config.default_driver = :selenium_chrome
  capybara_config.default_max_wait_time = 10
end

capybara-webkitとはライブラリ名

capybara-webkitはRubyのライブラリ(gem)の1つで、CapybaraのためのヘッドレスWebKit用WebDriverです。 capybara-webkit

現在はQtWebKitが非推奨となってことで、アーカイブ状態となってます。
公式では、代わりにSeleniumかApparitionという別のドライバーを推薦してます。

Safari用のWebDriverは?

あるようですが、ヘッドレスモードはないようです。GitHub/selenium

またiOS13からiOS版Safariでも、WebDriverを正式サポートされました。URL

最も重要な用語の関係性を表す

Seleniumを知る上で重要な用語が、SeleniumとWebDriverそして、ChromeDriverです。
これらの関係性を文章にすると、
「SeleniumプロジェクトのWebDriverコンポーネントのプロトコルを採用したChromeウェブブラウザ用WebDriverは、ChromeDriverです」

ツリー構造だと次の構造になります。

  • Selenium
    • WebDriver
      • ChromeDriver(=Chrome用WebDriver)
このエントリーをはてなブックマークに追加