2009年11月6日金曜日

Selenium RC/Eclipse 3.5/JUnit 4

Selenium Documentation 」を読みつついじってみると、単に get started 的なニーズに限っても、割りと読むところが多くて面倒くさい。あと、Selinium IDE から入る説明より、プログラマなら 多分 Selenium RC の方が始めやすい気がした。(ちなみに、ほんの数年前まで Selenium Core ベースでの説明が主流だったけど、この先 deprecated になって行くらしい。)

という事で、以下に最小限の要素だけ抜き出してみた。

■ やる事

  • 以下の事をJUnitのテストメソッド内で自動実行する
    • "http://www.google.co.jp/" を開く
    • テキストボックスに"selenium rc"を入力
    • 検索ボタンを押す
    • 結果のページに"selenium rc の検索結果 約*件中*件目"というパターンが含まれる事を確認する。
  • 以下の知識を前提としている。
    • テキストボックスの name属性は q
    • 検索ボタンのname属性は btnG
■ 環境と準備

環境

  • Windows XP SP3
  • Eclipse 3.5(Galileo)

準備

  • Selenium1.0.1 をここで ダウンロードする。
  • 適当なところ(以下{selenium}とする)に展開する。

■ 実行

  • コマンドプロンプトを開く
  • {selenium}/selenium-server-1.0.1に移動
  • java -jar selenium-server.jar で サーバーを立ち上げる
  • 適当に Java Project を作る
  • [Add External JARs...]で次の jar を追加 {selenium}/selenium-java-client-driver-1.0.1/selenium-java-client-driver-sources.jar
  • [Add Library...] で JUnit4 を追加
  • テストクラスを記述
    package com.example.tests;
    
    import com.thoughtworks.selenium.*;
    
    public class NewTest extends SeleneseTestCase {
        public void setUp() throws Exception {
            setUp("http://www.google.co.jp/", "*firefox");
        }
          public void testNew() throws Exception {
              selenium.open("/");
              selenium.type("q", "selenium rc");
              selenium.click("btnG");
              selenium.waitForPageToLoad("30000");
              assertTrue(selenium.isTextPresent("selenium rc の検索結果 約*件中*件目"));
        }
    }
  • [Run As]->[JUnit Test]で実行
結構すんなりと動く。

■ 次にやる事

上の動作確認ができたら、現場の技術者が次にやる事は、大体以下のような仕事になるはず。

  • もっと詳しく調べて Selenium に精通する。
  • 他の開発者のためにガイドラインや Tips 集的なものをまとめておく。
  • 後でノウハウが集まる事を期待してwiki 的なものにエントリを用意しておく。
  • 開発チームと業務/テストチームが別の場合、協働と役割分担を調整する。
  • 手動+目視じゃないと確認できない事象を識別する
  • Continuous Integration に組み込む
始めるまでは、何かと面倒臭そうな予感がしたりして億劫だけど、いったん現物が動き始めてしまえば、後は技術者なら結構何とかできてしまうと思う(何ともならなそうな見切りも含めて)。

ただし他の xUnit コードでも同じだけど、開発初期のイテレーションから導入しておかないと後で難しくなりがち。大部分できてから後付けテストを書くと、得てして余計に難易度が高まる。やはりテスト関連作業を前の方に持ってくるのは、何プロセスだろうと現代の開発の基本なんだろう思う。

====

つうか、blogger の仕様が変わったのか、昔の投稿のほとんどが挙動不審で、レイアウトがおかしくなっている。なんなんだこれ…(2011/11/03)

0 件のコメント:

コメントを投稿