SeleniumによるWebベースの自動化テスト

8416 ワード

Seleniumの動作原理
Seleniumの主な機能は次のとおりです.
1)ブラウザとの互換性のテスト:アプリケーションが異なるブラウザとオペレーティングシステム上で互換性があるかどうかをテストします.
2)システム機能のテスト:記録用例は自動的にテストスクリプトを生成して、機能テスト或いはシステム用例説明に回帰する.
簡単に言えば、Seleniumはユーザー操作を録画し、Webテスト担当者の重複作業を簡素化するツールです.
これまでSeleniumには2つのバージョンがありました.
  • Selenium 1(Selenium RC,Remote Control):従来のSeleniumフレームワークで、複数のプログラミング言語スクリプトの生成をサポートしています.ただし、プロキシサーバを起動して、ユーザーとテストサーバ間の通信を処理する必要があります.
  • Selenium 2(Selenium Webdriver):新しい自動化インタフェースは、Selenium 1のいくつかの制限を突破し、中間サーバを除去したが、この文章を書くまで自動的にスクリプトを生成するツールはSelenium 2のサポートにまだよくないため、Selenium APIに詳しい手書きcaseテスト者に適している.

  • この文書を読むと、以下のスキルを学ぶことができます.
  • Selenium自動化テストフレームワークの基本概念を理解します.
  • 学会はSelenium自動化テストフレームワークを応用する環境を構築する.
  • は、Selenium試験の使用例を継続的に試験するために、自己集積試験容器を構築する.

  • 本稿では,従来のSelenium 1の原理と使用方法を重点的に紹介する.次に、Seleniumが録画スクリプトを呼び出して自動テストを実現する方法を見てみましょう.
    Selenium 1実装原理
    SeleniumはRemote Controlサーバというエージェントサーバを導入し,JavaScriptスクリプトの注入とサーバとの通信はこのエージェントサーバによって行われる.次の図に示します.
    図1.Remote Controlモード運転フロー
    このエージェントRemote Controlサーバを導入したのは、「同源ポリシー」の制約により、このエージェントサーバを介してリモートサーバを「欺瞞」し、要求データを同じ場所からloadコードとして正しく返す効果が得られるからである.
    プロセスの説明:
  • クライアントはselenium-CCサーバへの接続を確立する.
  • Selenium RC Serverは、ブラウザを起動し(またはすでに使用されている)、JSコード
  • に注入します.
  • は、SeleneseコードをクライアントのSelenium-Coreに送信する.
  • Selenium-Coreは、ユーザ記録を実行する操作を翻訳し、解析する.
  • エージェントサーバによる通信
  • Remote Control Serverは、リモートWebアプリケーションサーバとの通信を担当します.
  • 操作が完了し、結果が表示され、次のコマンドが実行される.

  • 以上がSelenium Remote Controlの実行原理です.次の章では、Seleniumを使用してスクリプトを録画し、Javaエンジニアリングをインポートし、定期的にエンジニアリングを維持する方法を図例で説明します.
    Seleniumによる自動化テスト
    Selenium IDEを使用したユーザー操作の記録
    Selenium IDEはFirefoxベースのプラグインで、ユーザーはこのプラグインを通じてクライアント操作をスクリプトに記録し、Java、c#、Rubyなど多くの実行言語にエクスポートしてテスト例を統一的に管理することができます.
    Firefoxのダウンロード:Firefox 5.0以上をお勧めします.現在、Selenium IDEではFirefoxのプラグインしか提供されていません.
    Selenium IDEのダウンロード:http://seleniumhq.org/download/
    プラグインのインストール:
    Tools-->Add-ons-->ダウンロードするselenium-ide-1.x.xpiファイルはダイアログボックスにドラッグするとインストールできます.
    インストール後、IDEプラグインを起動してインストールに成功したかどうかを確認できます.
    図2.Selenium IDEプラグインの起動
    インストール後、IBM Systems Director製品を例に、「ユーザーログイン」というテスト例の実装方法を説明します.
  • 録画ボタンをクリック下図3の1
  • のように
  • 録画中、ユーザーインタフェースにログインし、ユーザー名パスワードを入力します.下図4
  • のように
  • は、その後、いくつかの文字列が含まれているかどうかによって、ログインが成功したかどうかを検証することができる.下図5
  • の場合
  • ログインIDEインタフェースに戻り、録画されたステップを図3の2
  • のように表示する.
  • は、IDEインタフェースにおいて録画スクリプトを検証することができ、必要に応じて、図3の3
  • のような第4のステップに戻る.
    IDEで録画したスクリプトを再実行することで、スクリプトに問題がないことを説明し、テストケースコードのエクスポートに使用できます.
    図3.Selenium IDEはウィンドウ図4を記録する.録画中、ユーザ名のパスワード図5を入力.特定のテキストが含まれているかどうかを確認して、ログインに成功したかどうかを確認します.
    Selenium IDEを使用したJUnitテストケースのエクスポート
    Selenium IDEで実行に成功すると、図6に示すように、テストスクリプトをJUnitテストの例にエクスポートできます.
    図6.JUnitコードのエクスポート
    エクスポートの例は次のとおりです.
    リスト1.VerifyLogin.java
    import com.thoughtworks.selenium.*;  
    import org.junit.After;  
    import org.junit.Before;  
    import org.junit.Test;  
       
    public class VerifyLogin extends SeleneseTestCase {  
    @Before
    public void setUp() throws Exception {  
        selenium = new DefaultSelenium("localhost", 4444, "*chrome", "localhost:8422/");  
        selenium.start();  
    }  
       
    @Test
    public void testVerifyDirectorLogin() throws Exception {  
        selenium.setTimeout("300000");  
        selenium.open("/ibm/console/logon.jsp");  
        selenium.type("id=j_username", "test");  
        selenium.type("id=j_password", "test");  
        selenium.click("id=other");  
        selenium.waitForPageToLoad("300000");  
        verifyTrue(selenium.isTextPresent("IBM Systems Director"));  
    }  
       
    @After
    public void tearDown() throws Exception {  
       selenium.stop();  
      }  
    }

    説明:まず、RCサーバIP、ポート、ブラウザタイプ、およびテスト対象のサーバの情報を入力するDefaultSeleniumオブジェクトをインスタンス化します.その後、テスト方法でSelenium 1のAPIを呼び出し、ここのコードは完全にIDEによって生成され、コードの重複作業を多く省くことができます.
    テストの実行例:
    JUnitベースの実行テストの例があれば、Java IDEにインポートしてテストを実行できます.実行には、クライアントドライバサポート(Eclipseコンパイル用)とRCサーバの両方が必要です.
     
    Selenium RCサーバーのダウンロード:http://seleniumhq.org/download/
    Selenium Client Driver:http://seleniumhq.org/download/
    コマンドjava-jar selenium-server-standalone-2.5.0を実行します.JAr:Selenium RCサーバーを起動する:
    図7.Selenium RCサーバーの起動
    起動後、直接Eclipseでテストケースを実行することができ、RC Serverは新しいウィンドウを起動し、録画スクリプトに従って自動的にテストを行います.Eclipseで実行結果を表示できます.
    次に、Eclipseから離れて、継続的にテストできる容器を構築する方法を見てみましょう.
    JUnit試験容器を構築してSeleniumの試験用例を継続的に試験する
    私たちが作ったこのコンテナは、あるフォルダ内のすべてのテスト例を検出してJUnitコードを自動的に実行してテストすることができます.必要に応じて、このコンテナを継続的な統合環境に統合して、継続的な機能テストのニーズを達成することもできます.
    ここではAntツールを使います.ここでダウンロードできます.
    Antダウンロード:http://ant.apache.org/
    インフラストラクチャ
    図8.SeleniumベースのJUnitのテストコンテナアーキテクチャ図
    テスト担当者の作業は紫色の矢印で示し,自動化作業は青の矢印で示した.
    このフレームワークの意味は、テスト・インスタンスを自動的に識別し、プロファイルを読み出して、テスト・スイートが異なるテスト・インスタンスを実行することをテストすることです.また、プロジェクト継続統合ソフトウェアに統合され、定期的にWebベースの機能テストを継続し、レポートを管理者にメールで通知することもできます.
    説明:
  • スクリプトをテスト担当者が記録し、JUnitをエクスポートします.
  • テスト担当者はプロファイルを変更し、テスト・スイートにテスト・インスタンスを含めます.
  • 統合ソフトウェアが継続的に統合されると、フレームワークは構成されたテストキット
  • を定期的に検出する.
  • は、試験例を1つずつロードする.
  • は、テストキット単位ですべてのテスト例を実行する.
  • 実行完了後、テストキットの結果レポートを管理者
  • にメールで通知する.
    このフレームワークを実現する上で最も重要なのはAnt実行スクリプトであり、プログラム実行の入り口でもある.ここでは、読者の参考にするAntの実行スクリプトを示します.
    リスト2.Build.xml
     , 。  build.xml  。 
       
       
     …… 
      
       
       
       
       
       
       
       
       
       
       
       
       
       
    …… 
      
       
       
       
       
       
       
       
       
    …… 
       
      
       
       
       
       
       
       
       
       
       
       
     

    説明:プログラムの入り口はRun taskで、Run taskの中でまず工事全体をコンパイルして、それからTestSuitesを読みます.xmlプロファイルで、各テストスイートをループします.を使用して、次の操作を行います.
  • は、構成を読み取り、TestCaseを実装するJavaクラスである.
  • Antのjunit task実行テスト例を呼び出す.
  • Antのjunitreport task生成レポートを呼び出す.
  • Antのmail taskを呼び出して指定されたメールボックスにレポートを送信します.

  • リスト3.TestSuites.xmlプロファイルサンプル
      
      
    VerifyLogin  
    DiscoverDevice  
      
      
    VerifyLogin  
    DeleteDevice  
      
    

    説明:プロファイルには2つのテストスイートが定義されています.1つ目は2つのテスト例を含み、まずLoginしてからデバイスを発見します.2つ目には2つのテストケースも含まれており,デバイスをロギンしてから削除する.最初のテストキットenable=falseは実行されません.
    ここまで、簡単な持続可能なテストフレームワークが構築されましたので、実行して結果を見てみましょう.
    テスト作成の実行
    antコマンドでBuildを実行します.xmlでテストフレームワークを実行できます.
    図9.ツール実行時
    実行が完了すると、すべてのテスト・インスタンスの結果がレポート形式で指定されたメールボックスに送信されます.
    図10.レポート仕様
    終わりの言葉
    本稿ではまず,SeleniumおよびSelenium 1の実現原理を紹介した.次に、Loginの簡単な例で、Selenium実行環境を構築し、JUnitコードとしてエクスポートする方法について説明します.最後にAntベースの自動化テストSeleniumフレームワークを構築し,生成したJUnitテスト用例の管理と機能性テストを継続した.読者もこのスクリプトを参考にして、自分の軽量レベルのユニットテストフレームワークを構築することができます.
    現在主流のweb自動化テストフレームワークにはQTPがあり、RubyのWATIRに基づいている.これらのフレームワークと比較して、SeleniumはIE、Mozilla Firefoxなど多くのブラウザをサポートし、同時に自動録画スクリプトやJava、C#、Rubyなど多くの実行言語の自動生成をサポートし、テスト用例の作成が速く、実行も比較的速い.比較的軽量級に比べてSeleniumはより柔軟で実用的である.Seleniumは、機能性テストおよび回帰テストだけでなく、Web可視化検収テストにも使用できます.さらに、SeleniumはCruiseのような継続的な統合ソフトウェアに統合され、プロジェクト全体により大きな統合テスト範囲を提供することができます.
    ダウンロード
    説明
    名前
    サイズ
    ダウンロード方法
    build.xmlの例
    build.zip
    2KB
    HTTP
    出典:ibm作者:楊暉、蔡敏
     
    http://tech.ddvip.com/2012-09/1348154915182319_2.html