Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Selenium Serverを
サービス化した時の話
Dec/12/2016
Naoya Kojima
@jugemix
環境作りの前に
やりたいこと(背景・要求)と、ユースケースによる実現手法の整理
背景
 Selenium を使って実装した自動テストを自分の端末で実行していた
 画面を占有される為、他の作業をできなかった
 自動テスト実行イメージ
 時々遊んでいる(使われていない時間がある)端末が隣にあった
テストシステ
ム
Se...
ビジネス要求
 自分の端末で実行する場合は、自動テストが画面を占有しないようにしたい
 自動テストは従来通り自分の端末で実行するが、利用者不在の稼働中端末があ
れば、そこでも実行出来るようにしたい
 端末利用者が在席している場合は、自動テ...
機能要求
 自動テストは、バックグランドで実行されなければならない
 ブラウザを操作するSelenium をバックグランドで実行する必要がある
 バックグランドで実行
 サービス/デーモンとして実行すること
 課題
 バックグランド...
本資料の用語定義
 自動テスト
 テストにおけるブラウザの操作を、テストシステムへの入力として一定のアプローチに基づき定めたもの
 テストシステムへの入力
 今回はキーワード駆動アプローチを用いた為、テストステップファイルがそれに該当す...
ユースケース図
主なユースケース記述1
 テストシステムによる自動テストリクエストの送信
 テストシステムは、Hub役のSelenium Serverへ従来通りJSON Wire Protocolに従った
自動テストをHTTPリクエストとして送信する
 ...
主なユースケース記述2
 Selenium Grid Hub の起動・停止
 Selenium Server 搭載サーバは、起動時にGrid Hub をサービスとして起動する
 Selenium Server 搭載サーバは、停止時にGri...
主なユースケース記述3
 Selenium Grid Hub のリクエストの送・受信
 Hub役のSelenium Serverは、テストシステムからリクエストを受信する
 Hub役のSelenium Serverは、Node役のSele...
要求の実現イメージ
 自動テスト実行イメージ
テストシ
ステム
Selenium
Server
Hub
Selenium
Server
Node
chrome
driver
etc…
Google
Chrome
etc…
自動テスト
自分の端...
課題
 Selenium Serverの配布、設定が面倒
 テスト実行用端末へのNode役のSelenium Server
 開発用サーバ等へのHub役のSelenium Server
Selenium Gridをサービス化する
方法とポイント
Selenium Server Grid Hub & Node の
サービス化
 用意するもの
 Java Service Wrapper
https://wrapper.tanukisoftware.com/doc/japanese/in...
サービス化のポイント1
4種類のサービス化の方法のうち、今回は
selenium-server-standalone-x.x.x.jarファ
イルが既に提供されていることから、
WrapperJarAppヘルパークラスを使用する
方法を採用する...
サービス化のポイント2
wrapperクラスがselenium-server-standalone-x.x.x.jar実行する時
に必要なパラメータを指定する。
スペース区切りで1つずつパラメータを指定する。10個目のクォー
トで囲むパラメータ...
サービス化のポイント3
これは、Windows 7(64bit)「services.msc」で参照したインス
トール後のサービスの状態。
4行目「ログオン」列を見ると、1~3行目とユーザが異なってい
ることが分かる。次スライドで理由を説明する。
サービス化のポイント4
 自動テストで証跡としてスクリーンショットを撮る場合の注意点
 Internet Explorerは、ローカルシステムアカウントのサービスとして実行されない場
合、スクリーンショットが真っ黒になる為、下記の通り設定す...
サービス化のポイント5
selenium-server-standalone-x.x.x.jar
(Node役のSelenium)がJSON Wire Protcol
に基づくHTTPリクエストを送信するドライ
バは、binディレクトリに格納する
結果
 自分の端末で実行する場合も、自動テストが画面を占有しなくなった
 利用者不在の稼働中端末でも、自動テストを実行出来るようになった
 端末利用者が在席している場合も、自動テストがその仕事を邪魔しないようになっ
た
 Java Se...
Próxima SlideShare
Cargando en…5
×

20161212 selenium adventcalender

392 visualizaciones

Publicado el

for 20161212 selenium adventcalender

Publicado en: Ingeniería
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

20161212 selenium adventcalender

  1. 1. Selenium Serverを サービス化した時の話 Dec/12/2016 Naoya Kojima @jugemix
  2. 2. 環境作りの前に やりたいこと(背景・要求)と、ユースケースによる実現手法の整理
  3. 3. 背景  Selenium を使って実装した自動テストを自分の端末で実行していた  画面を占有される為、他の作業をできなかった  自動テスト実行イメージ  時々遊んでいる(使われていない時間がある)端末が隣にあった テストシステ ム Selenium Server chrome driver etc… Google Chrome etc… 自動テスト 自動テスト 自動テスト 自分の端末
  4. 4. ビジネス要求  自分の端末で実行する場合は、自動テストが画面を占有しないようにしたい  自動テストは従来通り自分の端末で実行するが、利用者不在の稼働中端末があ れば、そこでも実行出来るようにしたい  端末利用者が在席している場合は、自動テストがその仕事を邪魔しないようにした い
  5. 5. 機能要求  自動テストは、バックグランドで実行されなければならない  ブラウザを操作するSelenium をバックグランドで実行する必要がある  バックグランドで実行  サービス/デーモンとして実行すること  課題  バックグランドでSelenium を実行できるのか確認する  このとき、意図するブラウザで自動テストを実行できるのか確認する  複数端末で互いに独立したテストケースが並列実行されなければならない  Selenium Gridの環境下で自動テストを実行する必要がある  課題  同一(種類、バージョン)ブラウザを複数のSelenium Grid Nodeで並列実行できるか確認する
  6. 6. 本資料の用語定義  自動テスト  テストにおけるブラウザの操作を、テストシステムへの入力として一定のアプローチに基づき定めたもの  テストシステムへの入力  今回はキーワード駆動アプローチを用いた為、テストステップファイルがそれに該当する  構造化スクリプトを使用したアプローチの場合は、テストコード(Javaならメソッド)がそれに該当する(データ駆動アプローチであるかどうかは無 関係)  テストシステム  自動テストを一定のルールに基づき実行するプログラム  自動テストの識別や実行はJUnit、TestNG等のテストツールに委譲するよう設計するのが一般的である  自動テストをブラウザへのリクエストに変換する部分はSelenium に委譲する  自動テストが実行される仕組み(詳細は別スライドにて後日解説予定)  テストシステムは自動テストをselenium-java.jar等のライブラリを使用して実装する(一般的に、「Seleniumを使う」と 言った場合、これを指す)  テストシステムの実行時に自動テストはWebDriverの提供するJSON Wire Protocolに準拠するHTTPリクエストに変換される  JSON Wire Protocolに準拠したHTTPリクエストは、selenium-server-standalone-x.x.x.jarやchoromedriver.exe等の各種ド ライバが実装するRestful APIで受信できるようになる  この結果、各種ブラウザに対応したドライバによってブラウザの操作(自動テスト)が実行される
  7. 7. ユースケース図
  8. 8. 主なユースケース記述1  テストシステムによる自動テストリクエストの送信  テストシステムは、Hub役のSelenium Serverへ従来通りJSON Wire Protocolに従った 自動テストをHTTPリクエストとして送信する  参照  「本資料の用語定義」>「自動テストが実行される仕組み」
  9. 9. 主なユースケース記述2  Selenium Grid Hub の起動・停止  Selenium Server 搭載サーバは、起動時にGrid Hub をサービスとして起動する  Selenium Server 搭載サーバは、停止時にGrid Hubサービスを停止する  Selenium Grid Node の起動・停止  Selenium Server搭載クライアントは、起動時にGrid Nodeをサービスとして起動する  Node役のSelenium Serverは、サービス起動時に特定のブラウザの操作に特化したドライ バのセッションを生成する  課題と対策  テストが複数種類のブラウザに跨る場合、複数クライアントに同一ブラウザのインスタンスを生成しても、 Hub役はリクエストの転送しか行いません。つまり負荷分散をしないのでリクエストが偏る場合があります。 その偏りを防ぐ為に、ここではNode役にブラウザの種類を1:1で紐付けます。  Selenium Server搭載クライアントは、停止時にGrid Nodeサービスを停止する
  10. 10. 主なユースケース記述3  Selenium Grid Hub のリクエストの送・受信  Hub役のSelenium Serverは、テストシステムからリクエストを受信する  Hub役のSelenium Serverは、Node役のSelenium Serverにリクエストを送信する  Selenium Grid Node のリクエストの受信  Node役のSelenium Serverは、受信したリクエストを指定されたブラウザドライバに 送信する  ブラウザドライバは、受信したリクエストに基づきブラウザを操作する
  11. 11. 要求の実現イメージ  自動テスト実行イメージ テストシ ステム Selenium Server Hub Selenium Server Node chrome driver etc… Google Chrome etc… 自動テスト 自分の端末 開発用 サーバ等 テスト実行端末1 テスト実行端末2 テスト実行端末3 テスト実行端末… ドライバへのHTTPリクエストの送受信は バックグラウンドで実行される
  12. 12. 課題  Selenium Serverの配布、設定が面倒  テスト実行用端末へのNode役のSelenium Server  開発用サーバ等へのHub役のSelenium Server
  13. 13. Selenium Gridをサービス化する 方法とポイント
  14. 14. Selenium Server Grid Hub & Node の サービス化  用意するもの  Java Service Wrapper https://wrapper.tanukisoftware.com/doc/japanese/introduction.html  各種ドライバ  IEDriver , chrome driver , gecko driver  基本手順  実行環境に依存する為、次の躓きがちなポイントを抑える  ここでは下記公式の手順書を参照すれば分かることは割愛する  参考文献  https://wrapper.tanukisoftware.com/doc/japanese/integrate.html#method4  https://wrapper.tanukisoftware.com/doc/japanese/integrate-jar-win.html
  15. 15. サービス化のポイント1 4種類のサービス化の方法のうち、今回は selenium-server-standalone-x.x.x.jarファ イルが既に提供されていることから、 WrapperJarAppヘルパークラスを使用する 方法を採用する。 よってwrapper.confでは、wrapperクラス がselenium-serverは実行されるように指 定する
  16. 16. サービス化のポイント2 wrapperクラスがselenium-server-standalone-x.x.x.jar実行する時 に必要なパラメータを指定する。 スペース区切りで1つずつパラメータを指定する。10個目のクォー トで囲むパラメータは上記の通り指定する。
  17. 17. サービス化のポイント3 これは、Windows 7(64bit)「services.msc」で参照したインス トール後のサービスの状態。 4行目「ログオン」列を見ると、1~3行目とユーザが異なってい ることが分かる。次スライドで理由を説明する。
  18. 18. サービス化のポイント4  自動テストで証跡としてスクリーンショットを撮る場合の注意点  Internet Explorerは、ローカルシステムアカウントのサービスとして実行されない場 合、スクリーンショットが真っ黒になる為、下記の通り設定する。  一方、Chromeはローカルシステムアカウントの場合、自動テストが実行されないた め、以下の通り設定する。
  19. 19. サービス化のポイント5 selenium-server-standalone-x.x.x.jar (Node役のSelenium)がJSON Wire Protcol に基づくHTTPリクエストを送信するドライ バは、binディレクトリに格納する
  20. 20. 結果  自分の端末で実行する場合も、自動テストが画面を占有しなくなった  利用者不在の稼働中端末でも、自動テストを実行出来るようになった  端末利用者が在席している場合も、自動テストがその仕事を邪魔しないようになっ た  Java Service Wrapperのお陰でSelenium Serverをパッケージ化できた為、開発 用サーバ等やテスト実行端末へのSelenium Serverの配布、インストールが容易 になった Selenium Serverのサービス/デーモン化に挑戦してみよう!

×