テスターや熟練したウェブ開発者である場合、すべての利用可能なブラウザやオペレーティングシステムでアプリケーションをバグやパフォーマンスのテストを行う必要があります。しかし、異なるブラウザだけでなく、異なるバージョンも含めた多くの依存関係がある中で、それは確かに手間のかかる作業となります。
最も重要なことは、これらのプロセスすべてを最大限に自動化する必要があるということです。大企業では、個別にテストケースやパイプラインを作成するのはコストがかかり、最も明らかに避けたい方法となるからです。ここで登場するのが、広く使用されているサーバーベースのテスト自動化ツールであるSelenium Gridです。
Selenium Gridとは?
Selenium Gridは、複数のブラウザや環境で並行して継続的にテストを行うためのツールです。異なるマシン上で、異なるブラウザやオペレーティングシステムに対して同時にテストを実行できるようにします。Selenium Gridの目的は、複数のマシンにテスト実行の負荷を分散させ、多数のテストをより速く実行することです。
Selenium Gridのアーキテクチャは、主にハブと複数のノードで構成されています。ハブはテストリクエストを送信する中心的なポイントとして機能し、ノードはテストが実行されるマシン(物理または仮想)です。ハブは、テストスクリプトで指定されたブラウザとプラットフォーム構成に基づいて、適切なノードにテスト実行リクエストをルーティングします。
Selenium Gridは様々な設定をサポートし、分散テストにおいて並行処理や選択的なブラウザ機能テストを含む。一般的には、自動テストにおいて、異なるブラウザやプラットフォーム間の互換性と機能性を保証するために使用されています。
Selenium Gridはなぜ必要か?
私たちがそれを全部必要としている理由について非常に興味を持っているかもしれません。特定に言えば、Selenium スイッチの一部として提供されており、Selenium WebDriverやSelenium IDEなどの他のソフトウェアと機能も含まれています。それらはChrome、Microsoft Edge、Opera、Safariなどのブラウザーとそれらの各バージョンをサポートしていることがわかりました。その以外にも、これらのブラウザを複数のオペレーティングシステムで実行することができ、端到端テスト環境を作成することができます。オープンソースなので、無料で利用でき、最速の更新と開発を受けられ、全ての情報に完全なアクセスが可能です。
Selenium Grid アーキテクチャ
Selenium Gridのアーキテクチャを理解しましょう。Selenium Gridはハブとノードのモデルで機能し、1つのハブが複数のノードに接続され、異なるマシン、ブラウザ、そしてそれらのブラウザの異なるバージョンで実行できます。
Selenium Gridのハブは、テストコマンドをノードにルーティングする中心プOINTとし、クライアントからのテストリクエストを受け取り、必要なノードに送信する。
Selenium Gridには、そのアーキテクチャ内に他のコンポーネントも定義されていて、その詳細は公式ウェブサイトにあり、Seleniumを完全にディストリビュートモードで実行するために、ルーター、セッション、ディストリビューターが明确に定義されていると便利です。今これまでにSeleniumGridについて十分な背景知識を学んだので、
Selenium Gridを4つの簡単な手順でインストールして使用することができます
手順1
手順1では、事前の準備を素早く行いましょう。
まず、最新のJavaを実行していることを確認する必要があります。これは公式ウェブサイトからダウンロードすることができます。
次に、テストしたいブラウザをすべてインストールする必要があります。ここでは、Chromeブラウザーを操作するためのChromeブラウザードライバーのバージョン123を使用します。ドライバーとブラウザのバージョンが同じであることを忘れずにおくことが重要です。最後に、このデモがJavaに基づいているために、Eclipse IDEを使用します。このIDEは公式Eclipseウェブサイトからダウンロードできます。
最終の前提条件として、私たちはSelenium Gridサーバの最新版を公式のSeleniumウェブサイトから下载する必要があります。
ステップ2
次に、ステップ2に入りましょう。今回のデモで使用するSeleniumサーバーとChromeドライバーを新しいフォルダに配置しました。
package Selenium_test1 ;
import java.net.MalformedURLException;
public class test1{
String hubUrl ="https://10.20.31.20";
String url ="https://www.world.co/search";
WebDriver driver;
public void setupGrid()
{
DesiredCapabilities ds= new DesiredCapabilities();
ds.setCapability("browserName", "Chrome");
try{
driver = new RemoteWebDriver( new URL(hubUrl),ds);
} catch (malformedURLException e){
e.printSTackTrace();
}
driver.get(url);
}
public void pageTitleValidation(){
String title = driver.getTitle();
System.out.println("page title :" +title);
}
public static void main(String[] args)
{
test1 obj = new test1();
obj.setupGrid();
obj.pageTitleValidation();
}
}
ステップ3
次に、ステップ3ではEclipse IDEを開き、WebDriverを使用してテストケースを記述しました。今回は他のMavenプロジェクトから新しいMavenプロジェクトを检出します。その他に、特定のフォルダにChromeドライバーを貼り付ける必要があります。使用しているSeleniumサーバーのバージョンは、次に行う手順でこのプロジェクトのパスに配置されます。プロジェクト名に移動し、右クリックし、ビルドパスに移動し、右側に外部JARを追加の選択肢を確認できます。ここから、使用しているSeleniumサーバーを追加します。
[適用]をクリックし、閉じる後、ステップ4に移行しましょう。
ステップ4
次に、ステップ2で作成したフォルダに移動し、コマンドプロンプトを使用します。
これによりフォルダの場所を簡単に找到了できます。ここは1台のマシンだけで、1つのブラウザだけを使用しているため、Selenium Edge Sandalandモードを使用します。
現在、サーバーが始動しています。必要な依存性を1つずつ追加していて、プロセスは完了しつつあります。特定のアドレスを私たちに与えています。今、このアドレスをコピーしてステップ3に戻ります。ここで、ハブURLにこのアドレスを貼り付け、コードが完了する後、ファイルにあるアプリケーションとして実行します。
では、アプリケーションが运行していることがわかったので、Chromeブラウザに移動し、コマンドプロンプトから与えられたアドレスを貼り付けます。これはSeleniumのアドレスであり、セッションが运行していることがわかります。概览で、Chrome用の完全なステレオタイプが作成されています。また、セッションで、デフォルトのテストケースが活性化されています。また、ウェブページも見られます。
グリッド役割
グリッドは6つの異なるコンポーネントを含んでおり、テスト自動化の実行をいくつかの方法でデプロイすることができます。独自のコンポーネントを開始するだけでなく、ハブとしてグループ化することもできます。また、1台のマシンで実行することもできます。
1. スタンドアローン
すべてのGridコンポーネントを密接に統合し、スタンドアローン
は统一された实体として動作します。スタンドアローン
モードを開始すると、単一のコマンドを介して完全に運用可能なGridを簡単にデプロイすることができます。重要なのは、スタンドアローン
は1台のマシンでのみ実行可能です。
java -jar selenium-server-<version>.jar standalone
2. ハブとノード
ハブとノードは最も人気のあるコンポーネントであり、最も多く使用されています。これらは異なるマシンを異なるオペレーティングシステムとブラウザバージョンで結合することができます。このため、複数の環境でWebDriverテストを実行する单一のエントリーを得ることができます。
hub
はRouter
、Distributor
、Event bus
、Session Queue
で構成されます。
java -jar selenium-server-<version>.jar hub
node
は、システムパスから複数の利用可能なドライバを検出します。
java -jar selenium-server-<version>.jar node
要約
最終的に、Selenium Gridは、hub-nodeアーキテクチャを使用して、複数のブラウザとプラットフォーム上で並行している多くのテストを簡単に行えます。hubはテストを保持する中央リポジトリとして機能し、ノードはSeleniumのインスタンスとして機能し、hubからの指示に基づいてこれらのテストを実行します。Selenium Gridのインストールには、Selenium Serverのjarファイルをダウンロードすることが必要で、このファイルはSelenium RCテストを実行するために使用されます。hubが機能しているかどうかを確認するには、コマンドプロンプトまたはウェブブラウザを使用することができます。Grid上でテストスクリプトの実行を行うには、DesiredCapabilities
とRemoteWebDriver
オブジェクトを使用する必要があります。DesiredCapabilities
は、自動化用のブラウザタイプとオペレーティングシステムを設定しますが、RemoteWebDriver
は、テストの実行を行うノードまたはマシンを指定します。