テストエンジニアのヒント#1:SeleniumグリッドをDocker化する

またあったね。Java QAエンジニアコースの開始に先立ち、役立つメモを翻訳しました










毎年、世界中のテスト自動化エンジニアが最新のツールと手法を研究して、テスト自動化環境をより安定し、より速く、より使いやすく、保守しやすくしています。これは、フレームワークが社内で常に大規模に実装されていることを確認するために不可欠です。いずれにせよ、肥大化した時代遅れのフレームワークはすぐに時代遅れになります。



Selenium Gridは、セットアップが難しく、不安定で、CIパイプラインでの展開やバージョン制御が難しいことが知られています。より簡単で安定した便利な方法は、ビルド済みのSeleniumDockerイメージを使用することです。



:この方法の唯一の欠点は、現在Windowsオペレーティングシステムをコンテナーに入れることができないため、IE(Internet Explorer)でサポートされていないことです。


仕事の準備



開始するには、最初にDockerDockerComposeをマシンにインストールする必要があります。Windows 10またはMacを使用している場合、両方ともDockerDesktopを使用してインストールされます



グリッドの実行



公式のSeleniumDocker Hubリポジトリには、Selenium Hub、Firefox、およびChromeノード用事前に作成されたDockerイメージが含まれています。



ローカルのSeleniumGridでそれらを使用する最も簡単な方法は、プロジェクトのルートディレクトリにDockerComposeファイルを作成することです。ファイルに単純に名前を付けますdocker-compose.yml



次のグリッドを作成する例を以下に含めました。



  • 1つのセレニウムハブ
  • 1つのChromeノード
  • 1つのFirefoxノード


#docker-compose.yml
version: "3"
services:
  selenium-hub:
	image: selenium/hub:3.141.59-neon
	container_name: selenium-hub
	ports:
  	- "4444:4444"
  chrome:
	image: selenium/node-chrome:3.141.59-neon
	volumes:
  	- /dev/shm:/dev/shm
	depends_on:
  	- selenium-hub
	environment:
  	- HUB_HOST=selenium-hub
  	- HUB_PORT=4444
  firefox:
	image: selenium/node-firefox:3.141.59-neon
	volumes:
  	- /dev/shm:/dev/shm
	depends_on:
  	- selenium-hub
	environment:
  	- HUB_HOST=selenium-hub
  	- HUB_PORT=4444


Docker Composeファイルには、グリッドの設定方法が記述されています。Docker Composeファイルの作成の詳細については、公式ドキュメントを参照してください



グリッドを起動するには、任意のターミナル(PowerShellまたはcmdWindows)を使用して、プロジェクトのルートディレクトリから次のコマンドを実行します。



docker-compose up


グリッド接続



ハブはローカルマシンのポート4444でリッスンしているため、通常と同じ方法でSeleniumグリッドに接続できます。これは、Chromeノードを使用するようにドライバーを構成した例です。



// Driver.java
protected static RemoteWebDriver browser;
DesiredCapabilities cap = new DesiredCapabilities();
ChromeOptions chromeOptions = new ChromeOptions();
           	 
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptions);           	 
cap.setBrowserName("chrome");
           	 
driver = new RemoteWebDriver(cap);


次に、TestNGライブラリ使用して、通常どおり複数のノードでテストを並行して実行できます



各ノードで複数のブラウザを起動できることは注目に値します。ただし、これは推奨されません。ノードごとに1つのブラウザーを使用することは、最適なパフォーマンスを得るためのベストプラクティスと見なされます。



追加のヒントとコツ



テストをデバッグするためにブラウザで何が起こっているかを確認したい場合は、ブラウザノードをロードするdebugバージョンのdocker-compose.ymlファイルをdebug 用意する価値がありますこれらにはVNCサーバーが含まれているため、テストの実行中にブラウザーを見ることができます。



ヘッドレスブラウザを実行して速度を上げることも可能で(通常の方法)、Seleniumはbase画像のバージョンも提供するため、追加のソフトウェアをインストールする必要がある場合は、独自の画像を作成できます。



グリッドをKubernetesまたはSwarmにデプロイして、CIパイプライン用の安定したバージョンのグリッドを作成することもできますこれにより、障害が発生した場合にドッカーを迅速に回復または交換できます。







続きを読む:








All Articles