Selenium

2012/04/26 竹内 孝志

                   1
本日の内容
• Seleniumについて
 – Seleniumとは?
 – SeleniumProjectの紹介
• プロジェクトでの使用例
 – システム構成
 – 今後の改善案




                        2
Seleniumとは?
• Webアプリケーション自動テストツー
  ル
• オープンソースソフトウェア
• マルチブラウザに対応




                       3
Webアプリケーション自動テストツール


青:selenium 赤:sahi




                     4
歴史
アジャイルソフトウェア開発に特化した世界的なITコンサルタン
ト業者
ThoughtWorks(そうとわーくす)が開発
年代     リリース

2004年 Selenium開発スタート

2006年 SeleniumIDEリリース

2007年 SeleniumRCリリース

2011年 Selenium2(SeleniumWebDriver)リリース


                                         5
Selenium Project
•   Selenium Core
•   Selenium IDE
•   Selenium RC
•   Selenium Grid
•   Selenium on Rails
•   CubicTest
•   Bromine
•   Selenium2(WebDriver)
                           6
Selenium Core
Seleniumの中心的な機能




                   7
Selenium IDE
Firefoxのプラグイン
ブラウザ操作を記録
テストコード自動生成




                   8
Selenium RC
リモートでブラウ
 ザ
操作を実行




                 9
構成




SeleniumIDEで
テストコードを生
成
SeleniumRCで
テストコードを実
行
               10

※公式より
対応ブラウザ
ブラウザ             Selenium-IDE         Selenium-RC      オペレーティングシステム
                 1.0 Beta-1 および 1.0
                                      ブラウザの起動、テストの
Firefox 3        Beta-2: テストの記録と再                  Windows, Linux, Mac
                                      実行
                 生
                 1.0 Beta-1: テストの記録   ブラウザの起動、テストの
Firefox 2                                          Windows, Linux, Mac
                 と再生                  実行
IE 8                                  開発中              Windows
                 Selenium-RC を介したテ    ブラウザの起動、テストの
IE 7                                                   Windows
                 ストの実行のみ*             実行
                 Selenium-RC を介したテ    ブラウザの起動、テストの
Safari 3                                               Mac
                 ストの実行のみ              実行
                 Selenium-RC を介したテ    ブラウザの起動、テストの
Safari 2                                               Mac
                 ストの実行のみ              実行
                 Selenium-RC を介したテ    ブラウザの起動、テストの
Opera 9                                                Windows, Linux, Mac
                 ストの実行のみ              実行
                 Selenium-RC を介したテ    ブラウザの起動、テストの
Opera 8                                                Windows, Linux, Mac
                 ストの実行のみ              実行
                 Selenium-RC を介したテ
                                      ブラウザの起動、テストの
Google Chrome    ストの実行のみ                           Windows
                                      実行
                 (Windows)
                 Selenium-RC を介したテ
上記以外                                  部分的サポートが可能**     該当OS
                 ストの実行のみ                                                 11
メリット・デメリット
• メリット
 – 再テストの際に手間が少ない
 – 別ブラウザのテストが簡単にできる
• デメリット
 – マニュアルが不十分なため複雑な操作ができない
 – 画面に少しでも修正が入ると改修が必要になる




                        12
プロジェクトでの使用例
実例 )
大規模データベース・マッチングサイト
  毎月機能追加に伴うリリースを行ってお
り、
  その際に発生する回帰テストに
  Seleniumを用いている。




                       13
開発サイクル
1ヶ月         1ヶ月         1ヶ月


分析           分析         分析
 設計           設計         設計
     開発           開発          開発
     テスト          テスト         テスト



           毎月回帰テストを行う
                                   14
テストの構成(1)

                 1          2            ④作業者が結果を確認
①コマンドプロンプトか
ら
回帰テストを実行開始


                     ruby
                        Selenium-
                        WebDriver
                Rspec
 ②テストユニットを呼び出                       ③Seleniumがブラウザを操
 す                                  作

                                                   15
テストの構成(2)
              ruby


テスト          テストケー         ブラウザ操
データ生成        ス実行       作
             (Rspec)      (Selenium
                       - WebDriver)



        テス
        ト
        デー
        タ
 DB
                                      16
テストの構成(3)
                                                      テストユニット
                                                      describe "テストケース1" do
                                                        it_should_behave_like "ログイン"
                                                        it_should_behave_like "閲覧"
                                                        it_should_behave_like "ログアウト"
                                                      end
                                                      describe "テストケース2" do
                                                        it_should_behave_like "ログイン"
Seleniumによるブラウザ操作                                       it_should_behave_like "問い合わせ"
shared_examples_for "ログイン" do |mail_address|            it_should_behave_like "ログアウト"
 it "ログインができること" do                                   end
   sleep 3                                            describe "テストケース3" do
   @browser.text_field(:name, "loginId").set "matatabi@nekomail.com"
                                                        it_should_behave_like "ログイン"
   @browser.text_field(:name, "password").set "hogehoge"it_should_behave_like "購入"
   @browser.element(:xpath => "//div[2]/div[2]/div[4]/div/div[3]/input").click "ログアウト"
                                                        it_should_behave_like
   sleep 3                                            end
 end
end                                                                                    17
現在の運用
• 良い点
 – テストコードがRubyで簡潔に記述され理解しやす
   い。
 – テストデータを自動生成できる。
• 悪い点
 – ローカルから実行するため特別な環境が必要。
 – 僅かな画面変更でテストコードの修正が発生。
 – テスト結果の確認が手作業で手間がかかる。


                           18
今後の改善
• 環境に依存せず誰でも実行可能にす
  る。
• 修正に少しでも強いコードに書き換え
  る。
• テスト結果を簡単に確認できるように
  する。


                      19
環境に依存しないようにす
    る
Jenkinsが設置してあるサーバーに環境を構築し、
ボタン一つで実行可能にする。


  びるど
  でぷろい
  回帰テスト


                  ワンクリックテ
                  スト


                            20
修正に強いコード
 XPathで指定しているところをidで指定する。

修正前)
@browser.element(:xpath => "/html/body/div[5]/div/input").click
修正後)
@browser.element(:xpath => "//input[@id=‘nekoButton']").click

※アプリケーションの作り上不可能な箇所は諦める。



                                                           21
確認作業の単純化
確認作業もSeleniumで実施し、
作業者はSeleniumが取得した
画面キャプチャーを確認するだけにする。



          testcord

     Seleniumのテストコードがブラウ
     ザ画面のキャプチャーを保存
                           22
まとめ
• Seleniumはアジャイル開発業者ThoughtWorks
  が開発した
• 最も旬なWebアプリケーション開発ツールで
  ある。
• 我々のプロジェクトでは主要機能の回帰テス
  トのみに使用している。
• 今後は誰でも簡単に実施できるよう改善する。


                             23
参考文献
SeleniumHQ
http://seleniumhq.org/
Selenium日本語ドキュメント
http://oss.infoscience.co.jp/seleniumhq/docs/04_selenese_commands.html
Powerpointテンプレート
http://sagittarius.dip.jp/toshi/template.php




                                                                   24
ご清聴ありがとうございました




             25

Selenium