Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。Grid2を使用する場合には、WebDriverの生成部分を修正する必要があります。ローカル環境のFirefoxに対してブラウザをテストする場合には、下記のように生成していたと思います。FirefoxDriver();この部分をDesiredCapabilitiesオブジェクトに実行する環境を指定して、それを引数にRemoteWebDriverを生成するように変更します。OSがWindowsでChromeのバージョン30を指定する場合のコードは下記のようになります。RemoteWebDriver(capabilities);このようにテスト対象の環境をしめすDesiredCapabilitiesオブジェクトを切り替えながらテストすれば複数環境のテストが可能になります。今回は、JUnitのパラメータ化テストを使って環境の切り替えを実現します。パラメータ化テストとは、異なるパラメータを与えて複数回テストを実行する機能です。この環境指定の部分をパラメータとして扱い、複数環境でテストを実施します。下記のコードをご覧ください。1でテストクラスに@RunWith(Parameterized.class)を宣言します。次に、2のパラメータを返す@Parameter宣言付きのメソッドを定義します。パラメータとして渡すのは、テスト実行環境の情報です。今回はMac、Windowsの2つのプラットフォームに4つのブラウザを用意していますので、その情報をList型で返却しています。情報は3のコンストラクタに渡されるので、4のインスタンス変数に保持します。あとはsetupメソッドで5のRemoteWebDriverの初期化を行うだけです。テストメソッドについては変更ありませんので割愛します。テストを実行するさっそく、Jenkinsからテストを実行してみましょう。異なるブラウジング環境でのテストが実行されることが確認できます。テストの並列実行テスト環境が増えたり、テストコードが増えてくるともう一つ悩ましい問題が発生します。それはテストの実行時間です。自動化を行っても、一晩中実行してもテストが終わらないといった事態も起こり得ます。迅速に問題点がフィードバックされなくなってしまっては、自動テストの価値も下がってしまいます。今回はmavenの機能を使い、テスト実行を並列化します。pom.xmlを編集するmavenを使ってJUnitテストを並列実行するには、下記のpluginの記述を追加するだけです。テストを実行するさっそく、Jenkinsからテストを実行してみましょう。異なるブラウジング環境でのテストが同時並行で実行されることが確認できます。今回用意したサンプルアプリケーションについては、更新処理のないものでしたので簡単に並列化ができました。実際のテストではほとんどの場合、更新処理があり、単純に並列実行することはできません。更新を含むテストを考慮する場合、参照系のみ並列化したり、それぞれデータベースの接続先をもった複数のwarファイルをデプロイし、パラメータでベースとなるURLを指定し、テスト環境ごとに参照するwarを変えるなどの考慮が必要です。Grid2による複数環境のテストを説明しましたが、いかがでしたでしょうか。これらの方法を用いて、Selenium2の自動テストをさらに活用していただければ幸いです。次回は、テストの実践的な書き方を紹介させていただきます。けシステム開発のアーキテクト担当しています。ウォーターフォール型の開発に、CIなどアジャイル開発のプラクティスを取り入れ、開発プロセスの改善を試みています。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。