とある角度から

お腹いっぱいたべられる幸せ

Seleniumまとめ

久しぶりにSeleniumを使ったら、色々進化していたので、
自分の中の情報アップデートのためにアウトプット

Seleniumとは

ブラウザ上での操作をスクリプトで記述し、実行できる
テストコードはHTML もしくは以下の開発言語で記述可能
Java」「C#」「Ruby」「PHP」「Perl」「Python」「JavaScript(Node.js)」等

Seleniumの歴史

Selenium Core

初期のSelenium
事前にwebサーバ上にSelenium Coreエンジンとテストスクリプト配備
ローカルPCからのアクセス時に、上記を埋め込んだページを返すことで、テストスクリプトを実行
Javascriptなので、セキュリティ的な制約に引っかかる
現在は非推奨

Selenium RC (selenium1)

webサーバ上にテストスクリプト配備しなくても良いように、Selenium Serverという中継サーバを介してブラウザを操作する
Core同様、Javascriptなので、セキュリティ的な制約に引っかかる
現在は非推奨

WebDriver

ブラウザの拡張機能やOSの機能を使用してブラウザを操作する仕組み
ブラウザ毎にDriverが用意されている(Chrome,IE,Edge,FF,PhantomJS,Opera,Safari…)
JavaScriptではないため、CoreやRCの様に、セキュリティ的な制約を受けない
W3Cで標準化が進められており、2017/4/20現在のステータスは勧告候補(CR)
https://w3c.github.io/webdriver/webdriver-spec.html

Selenium WebDriver(selenium2)

selenium1 + WebDriver
Selenium RCにおけるJavascriptによるテストケース実行をWebDriverに置き換えたもの
今はこれ

Selenium IDE

ブラウザの操作を記録して実行できるFirefoxのアドオン
記録したテストケースから修正を行い別のテストケースを作ることも可能
テストケースを他言語にエクスポートして実行することも可能(nodejsは未対応。。)
WebDriverPlaybackを使用しクロスブラウザで実行することが可能
この機能を拡張するプラグインもかなりの数出ている(有名なものではSelblock等)

Firefoxのアドオンで「Selenium IDE」を検索すると数多くのプラグインが表示されるが、本体は↓
f:id:n_1010real:20170425192131p:plain DLユーザ数を見れば一目瞭然

使いどころ

リグレッションテストに力を発揮する
※リグレッションテストとは:システムに修正を加えた時、今まで動いていたところに影響が出ないことを保証するためのテスト
なので、何かしらのプラットフォームなど、内部的な機能変更は頻繁に行われるが、大きなUIの変更はあまり無いサイトでは、テストさえ作ってしまえば大きくテスト工数を削減できる
Jenkinsと連携させて、毎日夜中にテストケースを自動実行させ、継続的改善につなげたりも

では、UIの変更が多いサイトでは使用しないほうが良いのか?

→機能が変わらなければ、PageObjectパターンを使用して記述すると、UI変更に対するテストコードの修正範囲を絞り込むことができるので、効率化できる(かもしれない)

課題

Seleniumによるテストは、継続的なメンテナンスが必須
メンテナンスをサボった挙句、テストがぶっ壊れて放置という問題も多い
ただし、うまく運用できれば、短時間で質の高い受入テストが可能なことは確か
短時間で質の高い受入テストが担保されることで、開発速度(サイクル)も結果的に早くなる
(影響範囲が大きくても、ガンガン修正できる)

関連リンク

公式ページ

http://www.seleniumhq.org/

Seleniumリポジトリ

https://github.com/SeleniumHQ/selenium
マニュアル、APIドキュメントはこちらを参考に

日本Seleniumユーザーコミュニティ

http://www.selenium.jp/
テスト用ページが用意されている

参考リンク

色々参考にさせてもらいました!あざす!

Selenium WebDriverとSelenium IDEなどについて

https://simple-it-life.com/2016/07/24/selenium-type/

[2016年時点] Selenium IDE のまとめ (インストールから応用まで)

http://qiita.com/gluelan2013/items/daa8680e8e86c0937743

5分でわかるSelenium IDEの使い方

http://qiita.com/naoqoo2/items/90d382cd9370d3526509

Selenium IDEのインストール

http://qiita.com/takara@github/items/0d00260c84592f786968

Seleniumでテスト失敗時のスクリーンショットを取得する方法

http://softwaretest.jp/labo/tech/labo-298/

SeleniumのPageObjectパターンを学ぶ

http://ninoseki.hatenablog.com/entry/2013/01/09/212424

失敗からはじめるSelenium

http://blog.cybozu.io/entry/5499