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」を検索すると数多くのプラグインが表示されるが、本体は↓
DLユーザ数を見れば一目瞭然
使いどころ
リグレッションテストに力を発揮する
※リグレッションテストとは:システムに修正を加えた時、今まで動いていたところに影響が出ないことを保証するためのテスト
なので、何かしらのプラットフォームなど、内部的な機能変更は頻繁に行われるが、大きなUIの変更はあまり無いサイトでは、テストさえ作ってしまえば大きくテスト工数を削減できる
Jenkinsと連携させて、毎日夜中にテストケースを自動実行させ、継続的改善につなげたりも
では、UIの変更が多いサイトでは使用しないほうが良いのか?
→機能が変わらなければ、PageObjectパターンを使用して記述すると、UI変更に対するテストコードの修正範囲を絞り込むことができるので、効率化できる(かもしれない)
課題
Seleniumによるテストは、継続的なメンテナンスが必須
メンテナンスをサボった挙句、テストがぶっ壊れて放置という問題も多い
ただし、うまく運用できれば、短時間で質の高い受入テストが可能なことは確か
短時間で質の高い受入テストが担保されることで、開発速度(サイクル)も結果的に早くなる
(影響範囲が大きくても、ガンガン修正できる)
関連リンク
公式ページ
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