このセクションでは、継続的テスト実行プロセスの一部として Selenic を自動化できるように、コマンドラインから Selenic を実行する方法について説明します。このセクションの内容:

はじめに

Parasoft Selenic は2つの .jar ファイルとして実装されています。継続的テスト実行プロセスの一部として、最初に selenic_agent.jar ファイルを実行してテスト実行に関するデータを収集します。次に、selenic_analyzer.jar ファイルを実行して、エージェントで収集したデータを分析します。

アナライザーは、Selenic がテストとアプリケーションについて学習した内容に基づいて修正候補を生成します。レポートを確認して修正候補を手動で適用するか、セルフヒーリング機能を有効にして Selenic エージェントがテスト実行中に修正候補の適用および、または待ち条件の修復を自動的に行うようにすることができます。それは、下流のプロセスに影響を与えることなく、自動化された UI テストを継続する事を可能にします。

Selenic IDE プラグイン を使用している場合は、両方のプロセス(テスト実行に関するデータの収集と分析)は単一のアクションで実行されます。以下のビデオは、コマンドラインで Selenic を使用する方法の概要を説明しています。

テスト実行データの収集

テストを実行するときに -javaagent JVM引数を使用して selenic_agent.jar ファイルを指定および構成し、Selenic にテストロジックを教えます。テスト実行データを収集するには、captureDom オプションを有効にする必要があります。Selenic がレコメンドを提供するには、テスト実行が少なくとも1度は成功する必要があります。以下の例は、Java 実行可能ファイルを使用して Selenic エージェントを実行する方法を説明しています:

java -javaagent:/path/to/selenic_agent.jar=captureDom=true -cp /path/to/junit.jar;/path/to/folder/containing/test/classes junit.textui.TestRunner com.mypackage.MyTestClass

このドキュメントのコマンドラインの例では、Maven コマンドを使用しています:

mvn test -DargLine=-javaagent:/path/to/selenic_agent.jar=captureDom=true

次の形式を使用して Java エージェント引数を構成することにより、追加の Selenic 機能を使用できます。

mvn test -DargLine=-javaagent:/path/to/selenic_agent.jar=arg1=value1,arg2=value2

詳細については、Selenic エージェントオプション を参照してください。
Selenic はテスト実行データを <USER_HOME>/parasoft/recorded_data ディレクトリに保存します。Selenic アナライザーを実行するとデータを分析し、不適切なロケータを更新するための修正候補を生成します。
テストの実行結果は <PROJECT>/target/surefire-report ディレクトリに保存されます。

コマンド例

以下の例は、利用可能な Selenic エージェントオプション の使用方法を説明しています。

実行中に DOM を収集し、スクリーンショットを撮る

mvn test -DargLine=-javaagent:/Applications/parasoft_selenic/selenic_agent.jar=captureDom=true,screenshot=failures

APIテストの作成および不適切なロケータと待ち条件のセルフヒーリング

この例では、selfHealing オプションが有効になっています。これにより、Selenic は、ロケータと待ち条件にデフォルトのセルフヒーリング機能を適用できます。不適切なロケータを自動的に修復するには、Selenic Java エージェントを使用して、テストが少なくとも1度は正常に実行されている必要があります。待ち条件のヒーリングには前提条件はありません。

createApiTests オプションには次の前提条件があります。

mvn test -DargLine=-javaagent:/Applications/parasoft_selenic/selenic_agent.jar=createApiTests=true,proxyPort=40090,soatestHost=localhost,soatestPort=9080,username=admin,password=admin,selfHealing=true

APIテストは、SOAtest サーバのワークスペースに作成されます。

Applitools との連携

Applitools はテストの実行中にスクリーンショットまたは "チェックポイント" をキャプチャし、それらをWebアプリケーションに表示して、UI の変更を視覚的に検証できるサードパーティ製のツールです。ツールを Selenic エージェントで実行するときに Applitools API を自動的に呼び出すように Selenic を構成できます。チェックポイントは、各 Selenium ナビゲーションアクションの前、各 Selenium クリックアクションの前、および各テストの終了時にキャプチャされます。

前提条件

Applitools JAR ファイルは、Selenium テストを含むプロジェクトのクラスパスに既に存在している必要があります。JAR ファイルが存在しない場合、エラーメッセージがコンソールに出力されますが、テストは引き続き実行されます。

APPLITOOLS_API_KEY 環境変数は、CI システム内で構成するか、テストを実行するプロセスに Java システムプロパティとして渡す必要があります。環境変数を追加する方法については、Applitools のドキュメントを参照してください。

https://applitools.com/docs/topics/integrations/github-integration-ci-setup.html

API キーを取得する方法については、Applitools のドキュメントを参照してください:

https://applitools.com/docs/topics/overview/obtain-api-key.html

使用法

applitools および applitoolsApplicationName 引数を使用して Selenic エージェントを実行し、Applitools と連携したテストを実行します:

mvn test -DargLine=-javaagent:/Applications/parasoft_selenic/selenic_agent.jar=captureDom=true,applitools=true,applitoolsApplicationName=MyApplication

テスト実行後、Applitools Webアプリケーションにチェックポイントが表示されるため、Applitools 機能を使用できます。
Applitools との連携と Selenic の screenshots オプションを同時に使用できますが、Applitools は追加の視覚テスト機能を提供することを目的としています。

結果の表示

Selenic アナライザーを実行して、HTMLレポートを生成します(修正候補の生成 を参照)。追加の引数は必要ありません。Applitools によってキャプチャされた視覚的な変更に関する情報は、Selenic HTML レポートに表示されます。詳細については、結果の表示 の Applitools 連携の結果の表示 について参照してください。

変更の影響を受けるテストの実行

Selenic のテスト影響分析機能を活用して、テスト対象のアプリケーションの変更によってどのテストが影響を受けるかを判断できます。この機能の使用に関する詳細については、テスト影響分析 を参照してください。

修正候補の生成

Selenic でテストを実行した後、selenic_analyzer.jar ファイルを実行して修正候補を生成します。アナライザーは、<USER_HOME>/parasoft/recorded_data ディレクトリ内のデータを分析し、不適切なロケータの修正候補を生成します。待ち条件のセルフヒーリングが有効になっている場合は、Selenic が作成するレポートに待ち条件に関する修正候補も含まれます。-allLocators オプションを使用すると、すべての成功および失敗したロケータに対する修正候補が生成されます。

java -jar /path/to/selenic_analyzer.jar

追加の引数を指定して、Selenic が分析結果を出力する方法をカスタマイズできます。利用可能なすべての引数については、Selenic アナライザー引数 を参照してください。

java -jar /path/to/selenic_analyzer.jar -<arg> <arg_value>

Selenic エージェントオプション

Selenic でテストを実行する時に以下のオプションを指定できます:

applitools 

このオプションは、Selenic と Applitools との連携を可能にします。true に設定すると、applitoolsApplicationName オプションが必要になります。

デフォルト false

applitoolsApplicationName

このオプションは、テストするアプリケーションの名前を指定します。指定した名前は、Applitools Webアプリケーション UI の App フィールドで使用されるため、アプリケーションでフィルタリングできます。

applitools オプションが true の場合、このオプションは必須になります。

captureDom

このオプションは、Selenium が要素を見つける時に Selenic が DOM を取り込む事を可能にします。このオプションは、Selenic が不適切なロケータを自動的に修復したり、ロケータの修正候補を生成したりするために必要です。

デフォルト false

collectCoverage

このオプションは、テスト実行中に Selenic がテスト影響分析で用いるカバレッジデータを収集する事を可能にします。詳細については、テスト影響分析 を参照してください。

デフォルト false 

coverageAgentHost

このオプションは、AUT とカバレッジエージェントが稼働しているホストを指定します。そして、テスト実行中にカバレッジデータを収集し、テストの影響を分析する事を可能にします。詳細については、テスト影響分析 を参照してください。

デフォルト localhost 

coverageAgentPort

このオプションは、AUT とカバレッジエージェントが稼働しているポートを指定します。そして、テスト実行中にカバレッジデータを収集し、テストの影響を分析する事を可能にします。詳細については、テスト影響分析 を参照してください。

デフォルト 8050

coverageAgentUserID

このオプションは、マルチセッションモードでカバレッジを収集する時に異なるユーザーを区別できるようにユーザーIDを指定します。詳細については、テスト影響分析 を参照してください。

coverageDir

このオプションは、テスト実行中のテスト影響分析のために AUT サーバからのカバレッジデータをダウンロードする場所となるローカルディレクトリを指定します。詳細については、テスト影響分析 を参照してください。

createApiTests

このオプションは、Selenic は UI テスト実行中に Parasoft SOAtest を使用して API テストを作成する事を可能にします。

デフォルト false

data

このオプションは、テスト実行中に記録したデータの場所を指定します。Selenic アナライザーの -data オプションは、このオプションに設定した値と一致するように設定する必要があります。

デフォルト <USER>/parasoft/recorded_data 

proxyPort

UI テスト実行中に API テストを作成する場合は、SOAtest Web プロキシのポート番号を指定します。

詳細については、Parasoft Recorder のドキュメントをご覧ください。

デフォルト 40090

soatestHost

UI テスト実行中に API テストを作成する場合は、SOAtest サーバが稼働しているホストを指定します。

詳細については、Parasoft Recorder のドキュメントをご覧ください。

デフォルト localhost

soatestPort

UI テスト実行中に API テストを作成する場合は、SOAtest サーバのポート番号を指定します。

詳細については、Parasoft Recorder のドキュメントをご覧ください。

デフォルト 9080

secure

このオプションは、UI テスト実行中に API テストを作成する場合、Selenic が HTTPS 経由で SOAtest サーバと通信できるようにします。

デフォルト false

username

このオプションは、UI テスト実行中に API テストを作成する時に SOAtest サーバでユーザー認証が有効になっている場合、サーバにログインするためのユーザー名を指定します。

password

このオプションは、UI テスト実行中に API テストを作成する時に SOAtest サーバでユーザー認証が有効になっている場合、サーバにログインするためのパスワードを指定します。

maxSessionDaysToAnalyze 

このオプションは、実行中に selfHealLocators オプションを適用するときに何日分のテストセッションを含めるかを示します。デフォルトでは制限はないため、Selenic は利用可能なすべての記録データを分析します。

以下の例では、Selenic エージェントが12日分の記録データを使用して、失敗したロケータまたは待ち条件を自動的に修復するための最良のオプションを決定します。

maxSessionDaysToAnalyze=12 

日数は、経過した日数に関係なく、最後にデータが記録された日数を指します。

maxSessionDaysToKeep 

このオプションは、ディスクに保持するテストセッションデータの日数を示します。

デフォルト 90

以下の例では、Selenic エージェントは12日分の記録データをディスクに保持します:

maxSessionDaysToKeep=12 

指定された値は、データが記録された日数であり、カレンダーの日数ではありません。

screenshot 

このオプションは、テストマシンがテスト実行中にスクリーンショットを撮る事を可能にします。

以下のいずれかの値を設定できます:

  • all  - Selenium テストの各 find element 呼び出しに関するスクリーンショットをキャプチャします
  • failures  - 失敗した find element 呼び出しに関するスクリーンショットのみをキャプチャします
  • none  - スクリーンショットをキャプチャしません

デフォルト none

selfHealing

このオプションは、自己修復機能を有効にします。true に設定すると、selfHealLocators と selfHealWaitConditions オプションが有効になります。

デフォルト false.

selfHealLocators

このオプションは、テスト実行中に収集した履歴情報に基づいて、Selenic がテスト実行時にロケータの更新を自動的に試行する事を可能にします。

selfHealing が有効の場合、デフォルト true

selfHealWaitConditions

このオプションは、Selenium の待ち条件を拡張して、Selenic がテスト実行中の不十分な待ち条件によるタイムアウトやその他のタイプのエラーを防ぐ事を可能にします。

selfHealing が有効の場合、デフォルト true

additionalWaitTimePercent 

このオプションは、テスト実行中の不十分な待ち条件に関連するタイムアウトやその他のエラーを防ぐために、待ち条件を延長する時間を指定します。このオプションで指定される値は、元々設定されていた待ち条件に対する割合です。 Selenic は割合に基づいて追加時間を計算し、Selenium テストの待ち条件を延長します。以下の例では、元々4秒に設定されていた待ち条件が50%延長されて6秒になります。

additionalWaitTimePercent=50 

selfHealing と selfHealWaitConditions が有効の場合、デフォルト 50

minAdditionalWaitTime  

このオプションは、テスト実行中の不十分な待ち条件に関連するタイムアウトやその他のエラーを防ぐために、元々の待ち条件を延長する最小秒数を指定します。結果の割合が最小値よりも小さい場合、additionalWaitTimePercent オプションで動的に設定された値をこのオプションの値でオーバーライドします。

selfHealing と selfHealWaitConditions が有効の場合、デフォルト true

sessionId

このオプションは、テスト実行データの識別子を指定します。この設定はオプションであり、すべてのプロジェクトの Selenium データを1つのセッションにグループ化する事を可能にします。そのため、複数のプロジェクトにわたってテストを実行する場合にのみ使用する必要があります。それ以外の場合、各プロジェクトの Selenium データは個別のセッション ID で記録されます。そのため、別のプロジェクトでテストを実行する前に、プロジェクトでテストを実行するたびにアナライザーを実行する必要があります。

例:

mvn test -DargLine=-javaagent:/path/to/selenic_agent.jar=captureDom=true,sessionId=ID_1

データを分析する時は、selenic_analyzer.jar ファイルの呼び出し時に -sessionId オプションを使用してテスト実行中に設定されたIDを参照します。例:

java -jar /path/to/selenic_analyzer.jar -sessionId ID_1

デフォルトでは、日付とタイムスタンプが使用されます。

Selenic は、data プロパティで指定されたディレクトリに実行データを保存します。記録されたデータディレクトリ内の各サブディレクトリには、各セッションの実行データが含まれています。サブディレクトリは、sessionId 値で名前が付けられます。sessionId パラメータが設定されていない場合、Selenic はデフォルトでタイムスタンプでサブディレクトリを識別し、データを保存します。

セッション ID を指定しない場合、別のプロジェクトでテストを実行する前に、プロジェクトでテストを実行するたびにアナライザーを実行する必要があります。セッション ID はテスト実行ごとに異なる必要があります。これにより、以前のテスト実行の結果が、後のテスト実行と結合されます。したがって、ビルド識別子またはデフォルトのタイムスタンプを使用することをお勧めします。

Selenic アナライザー引数

以下のオプションをサポートしています:

-allLocators

このオプションは、Selenium テストのすべてのアクションに関するロケータの修正候補を取得します。デフォルトでは、Selenic は失敗したロケータに対する修正候補のみを提供します。成功したロケータの修正候補は、JSON レポートにのみ表示され、HTML レポートには表示されません。

-data <path_to_recorded_data>

このオプションは、記録したデータの場所を指定します。Selenic エージェントの実行時に、data オプションに設定した場所と一致するように設定する必要があります。

デフォルト <USER>/parasoft/recorded_data 

-encodepass <password>

このオプションは、selenic.properties ファイルで使用できる暗号化されたパスワードを出力します。ライセンス をご覧ください。

以下の例では、myPassword の代わりに使用できる暗号化された文字列をコンソールに出力します:

java -jar selenic_analyzer.jar -encodepass myPassword

-help

このオプションは、サポートされている引数のリストをコンソールに出力します。

-machineId 

このオプションは、マシン ID をコンソールに出力します。マシン ID は、Parasoft およびテクマトリックス社がローカルライセンスを発行するために必要です。ライセンス をご覧ください。

-maxSessionDaysToAnalyze <value>

このオプションは、修正候補を生成するために記録したデータを分析するときに何日分のテストセッションを含めるかを示します。デフォルトでは制限はないため、Selenic は利用可能なすべての記録データを分析します。

以下の例では、Selenic アナライザーは 12 日分の記録データを使用して、ロケータまたは待ち条件の修正候補を生成します:

java -jar selenic_analyzer.jar -maxSessionDaysToAnalyze 12

日数は、経過した暦日数に関係なく、データを記録した最新の日を指します。

-performanceBenchmarking 

このオプションは、パフォーマンスベンチマークを有効にします。Selenic はテストメソッドの実行時間を収集してレポートに含めます。パフォーマンスベンチマーク機能は、最小単位のテスト実行に基づいて、テストメソッドごとの平均実行時間を計算します。指定したパーセンテージよりも平均時間を超えるテストメソッドには、レポートでフラグが付けられます。成功したテストの実行のみが平均時間を決定するための計算に含まれます。

平均を決定するために必要なテスト実行の最小数と、平均実行時間の超過に関する閾値を設定できます。パフォーマンスベンチマークパラメータの設定については、-performanceBenchmarkingMinRuns と -performanceBenchmarkingPercent をご覧ください。

このオプションはデフォルトで無効になっています。

以下の例では、パフォーマンスベンチマークを有効にし、-performanceBenchmarkingMinRuns オプションに 5 を設定して、-performanceBenchmarkingPercent オプションに 20 を設定します。

java -jar selenic_analyzer.jar -performanceBenchmarking -performanceBenchmarkingMinRuns 5 -performanceBenchmarkingPercent 20

例えば、5 回のテスト実行後、Selenic はテストメソッドの平均完了時間が 20 秒であると判断した場合を仮定します。6 回目の実行では、テストが完了するまでに 24.2 秒かかる場合、平均を 21 %上回る事を意味します。その場合、このテストは HTML レポートでフラグが付けられます。パフォーマンスベンチマークのレポート方法については、結果の表示 をご覧ください。

-performanceBenchmarkingMinRuns <number_of_runs>

このオプションは、-performanceBenchmarkingPercent オプションで設定したパーセンテージを超過した時に、レポートでフラグを立てるテストメソッドの平均実行時間を算出するために必要なテスト実行の最小数を設定します。テストの平均実行時間は、パフォーマンスベンチマーク機能のベースラインとして機能します。パフォーマンスベンチマーク機能の詳細については、-performanceBenchmarking をご覧ください。

デフォルト 5 

-performanceBenchmarkingPercent <percent_threshold> 

このオプションは、平均実行時間に対する現在のテスト実行のテスト実行時間の閾値を設定します。現在実行中のテストが指定されたパーセンテージを超過してテストの平均実行時間を超えた場合、HTML レポートでテストにフラグが付けられます。パフォーマンスベンチマーク機能の詳細については、-performanceBenchmarking をご覧ください。

デフォルト 20 

-publish

このオプションは、DTP のプロジェクトでテスト結果を公開します。DTP との接続とプロジェクトの設定を行う必要があります(DTP で結果を公開 を参照)。

-report <path_to_filename>

このオプションは、生成されるレポートファイルの場所と名前を指定します。

ディレクトリ/ファイルへの絶対パスがサポートされています。

例:

java -jar selenic_analyzer.jar -report /home/reports
java -jar selenic_analyzer.jar -report "C:\reports\my-report.html"

デフォルトでは次の場所が使用されます:

"{WORKING_DIR}/report.html"

-sessionId <value>

このオプションは、処理する記録済みデータを含むテストセッションの ID を指定できます。指定しない場合、最後に記録したセッションのデータが使用されます。

-settings <location_of_properties_file>

このオプションは、selenic_analyzer.jar の実行オプションを含む .properties ファイルを指定します。.properties ファイルには、Selenic 分析中に適用するライセンスおよびレポート設定が含まれています。追加情報については、以下のセクションを参照してください:

-source  <directory_or_file>

このオプションは、DTP で公開するソースファイルまたはソースファイルを含むディレクトリの場所を指定できます。複数の -source フラグを使用して、一連のディレクトリまたはファイルを指定できます。Selenic の設定で DTP でソースを公開するように設定されていない場合、このオプションは効果がありません(DTP で結果を公開 の DTPへのソースファイルの公開 を参照)。

デフォルトは現在の作業ディレクトリです。

例:

java -jar selenic_analyzer.jar -source C:\my_project1 -source C:\my_project2

-surefire <path_to_file>

このオプションは、Surefire XML レポートの場所を指定できます。Surefire XML レポートは、Maven でテストを実行するときに作成され、HTML レポートの作成に使用されます。

ディレクトリ/ファイルへの絶対パスがサポートされています。

次のワイルドカードもサポートされています:

** - 2 つのアスタリスクを使用して、ディレクトリを照合します。

* - 1 つのアスタリスクを使用して、ファイル名を照合します。

例:

-surefire "/home/folder" 

-surefire "C:\folder\file.xml"

以下の例では、Selenicは /folder1/folder2/folder3、/folder2/folder3、および /folder3 で XML ファイルを検索します:

-surefire "**/folder3" 

以下の例では、Selenicは folder3 内の "ProjectA" で始まるすべての XML ファイルを検索します:

-surefire "**/folder3/ProjectA*.xml"

デフォルトでは以下の場所が使用されます。

"**/target/surefire-reports/"