はじめに
Seleniumを使ってブラウザテストを行う環境について考えてみました。
(ここでいう環境とは使用するOS、シナリオ言語、ブラウザを指しています)
テスト環境を考えると、誰がテストするのか、どこで行うのか、どのレベルのテストをするのかといった、いろいろな状況があるので、「これが正解」というのはそれぞれであると思いますので、あくまで一考察と見てください。
前提条件
下記の条件で考えてみました。
- 実施者:テストエンジニア(開発者ではないということ)
- レベル:シナリオテスト以上
基本環境
### OS
テストエンジニアの場合、サービス利用者に近い環境でテストすることが望ましいことを考えると、やはりwindows環境になるのではないでしょうか。
- linx系はOSSが豊富にありCIなどの環境を作りやすいメリットがありますが、CUI環境ではブラウザのインストールに仮想ディスプレイが必要もしくはヘッドレスでのテストになります。もちろんIEのテストはできないですね。
- windows系はユーザーに近い環境でブラウザのインストールに手間がないですが、CI環境などを構築するには 自動アップデートによる再起動などの心配事があります
開発者がテストを行う環境を選ぶ場合、開発環境とテストのための環境が異なると管理も使い分けも面倒なため開発環境に近い組み合わせを選ぶと思います。
ブラウザ
もちろん、どのブラウザを使用するかを考えると、ユーザーシェアで考えるか、サービスの対応ブラウザで選ぶか、テストしやすいブラウザを選ぶか になると思います。
- IEのテストコストは高くつくので対象とするかは悩ましいところですが・・・
テストシナリオ言語について
Seleniumはいろいろな言語に対応しているので、選択に幅があります。もし、専用のライブラリが出ていなかったとしても、使用する言語に精通しているのであればシナリオを記述することは可能です。
(ここからは個人的な見解です)
-
Java言語はSeleniumそのものがJavaで記述されているので、親和性もたかく、実行させるためにJDK などが必ずインストールされているので、改めて準備する必要はないのですが、テストスクリプトにコンパイル言語を使用するのはコストが高くつくのではないかと思っています。(ビルドからバージョン管理までの操作が確立しており、手慣れているのであればもちろん別の話です)
-
Ruby,python,PHP,Perl windows環境にインストールする場合、意外に壁がある気がしています。何度も環境作成を繰り返しているうちにいろいろ「こつ」みたいなものを知ることになる気がしますが。
-
これらから Java言語の Seleniumとの親和性・インストールの容易さ + スクリプト言語であることを考慮すると 実は Jruby,JPython,Rhino(Nashorn),Groovyといった JavaVMベースのスクリプト言語がよい気がします。