seleniumを使う①
Webの自動テストをやろうと思う。要件としては以下のとおりだ。- ターゲットはWebのUI系のテストの自動化
- テスト内容は同一だが各種ブラウザでのテストがある。
- 開発者の個別環境で実施するのではなく、サーバー上でテストを自動実施したい
- jenkinsと連携させてリポジトリが更新されたらテスト実行を行う
途中はすっとばすがseleniumというWebのUI系の自動テストツールが使えるかもしれないということで調査することにした。
こいつはFireFoxのプラグインとして動作してSelenium IDEというツールでユーザー操作を記録し、それをテストコードとして自動実行させることができるらしい。
というわけでまずはダウンロードしてみた。
FireFoxで上記リンクを叩くと、自動的にselenium IDEがインストールされる。
←インストールされると、このようなアイコンがFireFoxのアドレスバーあたりに追加される。
テストスクリプトの作成
FireFoxのツールバー上にselenium ideのアイコンが表示されるのでそれをクリック。表示された画面の赤丸ボタン(記録ボタン?)をクリックした後、ブラウザを操作
→テストスクリプトが自動生成される。
必要に応じてファイルに保存する。
※ここで一旦テストが通るかどうかの確認を行う。
VisualStudio.Netのテストプロジェクトで実行する
作ったテストスクリプトを今度はVisualStudio.Netのテストプロジェクトから実行させるという話。
テストケースのエクスポート
作成したテストケースをselenium IDEでオープンした状態でselenium IDEの以下のメニューを選択ファイル > テストケースをエクスポート > C# / NUnit WebDriver
保存先を指定してテストケースを保存する。
VS.NETで単体テストプログラムの作成
VS.NETの新規プロジェクトを作成する。→ Visual C# > 単体テスト プロジェクト
Nugetのパッケージマネージャコンソールを起動
→VS.NETのツール > NuGetパッケージマネージャ > パッケージマネージャコンソール
※ VS.NETのバージョンによっては拡張パッケージマネージャというタイトルかも知れないです。
でコンソールウインドウが表示。そこに
Install-Package Selenium.WebDriverBackedSelenium -Version 2.43.1
を入力する。
VS.NETのテスト用に書き換えする。
selenium IDEで吐き出したテストコードはNUnit用なのでVS.NETで使うには幾つか書き換えが必要。基本的にはテストクラス/メソッドの属性を以下のように書き換えを行う。
TestFixture → TestClass
SetUp → TestInitialize
TearDown → TestCleanup
Test → TestMethod
参照設定を追加しておく。
https://code.google.com/p/selenium/downloads/detail?name=selenium-dotnet-2.39.0.zip&can=1&q=上記の「selenium-dotnet-2.39.0.zip」をダウンロードして展開しておく。
↑で作ったプロジェクトに展開して生成されたアセンブリを参照設定に加えておく
※ for_dotnet\selenium-dotnet-2.4.1 を使っても良いです。
jenkinsで実行させる
次はjenkinsで動かすための設定だ。jenkinsから直接ブラウザを起動するのは難しいので、NodeとなるクライアントPC(仮想でも可)を用意して、実際のテストはそっちでやらせるようにする。
WebDriver RCが必要になると思う。続きはまた今度
コメント