Docker コンテナでの UFT One テストの実行
UFT One Docker イメージを使用すると,UFT One のメンテナンスとテストの実行が高速になります。
このトピックは,Docker の管理についてある程度の知識があることを前提としており,Docker の管理手順については詳しく説明しません。
利用可能な UFT One Docker イメージ
UFT One Docker イメージを使用して,Docker コンテナで UFT One テストを実行します。イメージは https://hub.docker.com/r/functionaltesting/ から入手できます。
UFT One イメージで,次の機能がサポートされています。
- Digital Lab および UFT One オートメーション・スクリプトを使用してモバイル・テストを実行する。
- Windows Docker 環境で API テストを実行する。
- UFT One オートメーション・スクリプトを使用して,Headless Chrome でテストを実行します。
- Linux Docker 環境で API テストを実行する。
次のイメージは,現在の UFT One バージョンで使用できます。
-
uft イメージ。UFT One がインストールされた Windows Docker のフル・イメージです。
-
uft_utils イメージは uft イメージに基づいていますが,追加のユーティリティ・ツールも含まれています。
-
uft_one_for_api_tests イメージは,UFT One ランタイム・エンジンがインストールされた Linux ベースのイメージです。
UFT One ユーティリティ Docker イメージを使用する利点
uft_utils イメージにより,次のように機能が拡張されます。
テストの実行が容易 | Windows Docker 環境で 1 つのコマンドを使用して UFT One テストを円滑かつ容易に実行できます。 |
複数の API テストの実行 | 1 つの Docker コマンドを使用して,指定したフォルダに格納されたすべての API テストを実行できるようになりました。 |
実行結果の JUnit レポートへの変換 | テストの実行後に,ReportConverter ユーティリティを使用して実行結果から JUnit レポートを作成できます。 |
CI-CD パイプラインでの Docker イメージの使用 | Docker イメージに組み込まれたユーティリティ・ツールを使用して,CI-CD パイプラインから Docker イメージでテストを実行できます。 |
UFT One ユーティリティ Docker イメージは,uft イメージよりも頻繁にリリースされます。このイメージの使用方法については,Docker Hub のイメージで利用可能なドキュメントを参照してください。
Windows Docker イメージのシステム要件
次のいずれかのオペレーティング・システムの Windows Docker コンテナで UFT One テストを実行できます。
-
Windows Server 2016
-
Windows 10
バージョン:2004,1903,1803
概要:UFT One の Docker イメージの使用
Docker コンテナで UFT One テストを実行するには,次の手順を実行する必要があります。この手順については,以下で詳しく説明します。
- Docker ハブから UFT One Docker イメージをプルする。
- Docker イメージに基づいてコンテナを作成する。
- コンテナに UFT One のコンカレント・ライセンスをインストールする。
- Docker コンテナで UFT One テストを実行する。
使用する各 UFT One Docker コンテナに UFT One ライセンスをインストールする必要があります。これは,次のいずれかの方法で行うことができます。
-
UFT One ライセンスをインストールした後,このコンテナを新しいイメージにコミットします。この新しいイメージに基づいて残りのすべてのコンテナを作成して,ライセンスの追加インストールを回避します。
-
UFT One ライセンスをインストールした後,後続の実行に同じコンテナを使用し,必要に応じてコンテナを停止および開始します。
-
新しいコンテナを作成し,コンカレント・ライセンスをインストールしてからテストを実行する Docker コマンドを使用します。
UFT One Docker コンテナを作成する前に
このセクションでは,UFT One Docker コンテナをセットアップするための準備方法について説明します。
前提条件
-
Docker をコンピュータにインストールしてセットアップし,Docker Hub から Docker イメージをプルできるようにします。これにより,コンピュータが Docker ホストとしてセットアップされます。
Microsoft のドキュメントの説明に従って,Docker エンジンとクライアントをインストールします。
Docker のセットアップ方法の詳細については,Docker のドキュメントを参照してください。
-
コンピュータでハードウェアとソフトウェアの仮想化を有効にします。
-
Docker が正しいタイプのコンテナを実行するように設定されていることを確認します。
Docker のトレイ・アイコンを右クリックします。メニュー・オプションに[Switch to Linux containers]が表示されていれば,Docker は Windows コンテナ用にセットアップされています。
UFT One Docker イメージのプル
UFT One Docker イメージをプルするには,ホスト・コンピュータのコマンド・ウィンドウで次のコマンドを実行します。
docker pull <UFT One Docker イメージ名>[:tag]
UFT One Docker イメージの名前は functionaltesting/uft,functionaltesting/uft_utils,または functionaltesting/uft_one_for_api_tests です。利用可能な UFT One Docker イメージのイメージの説明に基づいて,使用するイメージを選択します。
[:tag] は,特定の UFT One イメージバージョンに追加するオプションのフラグです。標準設定では,tag の値は latest
です。
Windows Docker コンテナのセットアップ
このセクションでは,UFT One Windows Docker コンテナをセットアップする方法について説明します。
-
プルした UFT Docker イメージから Docker Windows コンテナを作成するには,ホスト・コンピュータのコマンド・ウィンドウで次のコマンドを実行します。
docker run -it --name <コンテナ名> <UFT One Docker イメージ名>[:tag] "cmd.exe"
このコマンドによって,コンテナが作成され,コンテナに属するコマンド・ウィンドウが開きます。このウィンドウを次のステップで使用して,UFT One ライセンスをインストールします。
注: UFT One Docker イメージは Windows Server 2016 に基づいています。別の OS の Docker ホストを使用すると,OS に互換性がないというメッセージが表示される場合があります。この問題を回避するには,Docker のドキュメントを参照してください。たとえば,
コマンドに-isolation=hyperv
または-isolation=process
を追加すると,問題が解決する場合があります。
Windows Docker コンテナでの UFT One ライセンスのインストール
UFT One の Docker イメージは,コンカレント・ライセンスでのみサポートされます。Docker コンテナが UFT One を使用するたびに,サーバからライセンスが消費されます。
Docker コンテナのコマンド・ウィンドウで,コンテナに UFT One のコンカレント・ライセンスをインストールします。詳細については,コマンド・ラインを使用したライセンスの管理を参照してください。
Windows Docker コンテナでのモバイル・テストの実行
Windows Docker コンテナをインストールして設定した後,UFT One と Digital Lab の統合をセットアップし,UFT One オートメーション・スクリプトを作成して,Docker コンテナで実行します。
統合の設定
モバイル・デバイスで UFT One テストを実行するには,Digital Lab とアプリケーションを統合用にセットアップする必要があります。詳細については,Digital Lab と UFT One の統合のセットアップを参照してください。
次のステップで作成する UFT One オートメーション・スクリプトは,Digital Lab への接続をセットアップします。
UFT One モバイル・オートメーション・スクリプトの作成
Docker コンテナで UFT One テストを実行するには,Digital Lab でテストを実行するのに必要な特定のステップを含む UFT One オートメーション・スクリプトを使用します。
スクリプトには,次の部分を含める必要があります。
- UFT One を起動する。
- DLConnection オプション・オブジェクトを使用して,UFT One から Digital Lab への接続を設定する。
- Launch メソッドを使用してアプリケーションを起動する。
- UFT One テストを実行する。
- テストを閉じる。
- UFT One を閉じる。
以下は,UFT Digital Lab で特定のテストを実行するために使用されるサンプル・スクリプトです。
Dim qtApp 'As QuickTest.Application ' Declare the Application object variable Set qtApp = CreateObject("QuickTest.Application") qtApp.Launch qtApp.Visible = True qtApp.Options.DLConnection.Server = "<UFT Digital Lab サーバ・アドレス>" qtApp.Options.DLConnection.Port = "<UFT Digital Lab サーバ・ポート>" qtApp.Options.DLConnection.Username = "<UFT Digital Lab サーバ・ユーザ名>" qtApp.Options.DLConnection.Password = "<UFT Digital Lab サーバ・ユーザ・パスワード>" qtApp.Options.DLConnection.UseSSL = false qtApp.Options.DLConnection.SharedSpace = "<UFT Digital Lab サーバ・テナント ID>" qtApp.Options.DLConnection.WorkSpace = "<UFT Digital Lab サーバ・ワークスペース ID>" qtApp.Options.DLConnection.ShowRemoteWndOnRun = true qtApp.Open "<UFT スクリプト・パス>", True Set qtMobileLauncher = qtApp.Test.Settings.Launchers("Mobile") qtMobileLauncher.Lab = "DigitalLab" qtMobileLauncher.Device.OS = "<デバイスの OS タイプ>" qtMobileLauncher.Device.ID = "<デバイスの UDID>" Set launchApp = qtMobileLauncher.LaunchOnStart launchApp.IsPackaged = True launchApp.Counter = 1 qtMobileLauncher.InstallApps = true qtMobileLauncher.RestartApps = true qtMobileLauncher.UninstallApps = false qtMobileLauncher.TrackCPUMetric = true qtMobileLauncher.TrackMemoryMetric = true qtMobileLauncher.TrackFreeMemoryMetric = true qtMobileLauncher.TrackLogs = true Set qtpResultsOpt = CreateObject("QuickTest.RunResultsOptions") 'create the run Results Options object qtpResultsOpt.ResultsLocation = "<HTML レポート・パス>" qtApp.Test.Run qtpResultsOpt ' Run the test qtApp.Test.Close qtApp.Quit
注: オートメーション・スクリプトで使用するためにこのテキストをコピーする場合は,必ず UFT Digital Lab サーバ接続の詳細のプレースホルダを,使用する UFT Digital Lab サーバの値に置き換えてください。
詳細については,次を参照してください。
Docker コンテナでのオートメーション・スクリプトの実行
ホスト・コンピュータのコマンド・ウィンドウで,次のコマンドを実行します。
docker run -it --name <container-name> -v <host-directory>:<container-directory> <UFT One Docker イメージ名>[:tag] cmd //[:tag] を追加して UFT イメージのバージョンを指定します。標準設定は 'latest' です。
cd <container-directory>
<script-name>.vbs //オートメーション・スクリプトを実行します。
ここで,
パラメータ名 | 説明 |
---|---|
<container-name> |
Docker コンテナの名前。一意のコンテナ名を使用して,新しいコンテナを作成します。 |
<host-directory> |
オートメーション・スクリプトが保存されているマシン上のホスト・ディレクトリのフル・パス。 このディレクトリは,Docker コンテナの <container-directory> の場所にマウントされます。 |
<container-directory> | <host-directory> がマウントされている Docker コンテナ上のディレクトリのフル・パス。 |
<UFT One Docker イメージ名> |
UFT One Docker イメージ名。functionaltesting/uft です。 |
<script-name> | UFT One テストを実行するように設定した UFT One オートメーション・スクリプトの名前。 |
注: 特定の UFT One イメージバージョンのオプションの [:tag] を含めます。標準設定では,tag の値は latest
です。
Windows Docker コンテナでの API テストの実行
以下のいずれかの方法で UFT One API テストを実行します。
前提条件
- 前述の手順に従って,UFT One Docker コンテナをセットアップします。
- ホスト・コンピュータで,API テスト用のローカル・ディレクトリを作成し,テスト・フォルダを保存します。Docker は,このディレクトリを Docker コンテナ内のディレクトリにマウントします。
新しいコンテナでのテストの実行
UFT One ライセンスをインストールして作成したイメージに基づく新しいコンテナでテストを実行します。
ホスト・コンピュータのコマンド・ウィンドウで,次のコマンドを実行します。
docker run -v <host-test-directory >:<container-test-directory> --name <container-name> <image-with-licensed-uft> "<UFT One installation folder>\bin\HP.ST.Fwk.InternalExecuter.exe" -test <container-test-directory> -reportPath <report-directory-path>
ここで,
パラメータ名 | 説明 |
---|---|
<container-name> |
この実行のために作成する Docker コンテナの名前。 一意のコンテナ名を使用して,新しいコンテナを作成します。 |
<host-test-directory> |
ホスト・コンピュータでの API テストへの完全パス。 このディレクトリは,Docker コンテナの <container-test-directory> の場所にマウントされます。 例:C:\DockerProject\tests\apitest。C:\DockerProject\tests は,テスト用に作成したローカル・ディレクトリで,apitest は,このディレクトリに保存したテストの名前です。 注:このパスのテスト名の部分では,大文字と小文字が区別されます。 |
<image-with-licensed-uft> | UFT One ライセンスのインストール後にコミットしたイメージ。このイメージは,テストを実行する新しいコンテナを生成するために使用されます。 |
<container-test-directory> | <host-test-directory> がマウントされている Docker コンテナ上のディレクトリのフル・パス。 |
<report-directory-path> |
(オプション)テスト結果を保存するディレクトリのパス。<container-test-directory> からの相対パスを指定します。 標準設定では,結果はテスト・フォルダの下に保存され,以前の実行結果が上書きされます。 |
たとえば,ホスト・テスト・ディレクトリが C:\DockerProject\tests で,テスト名が apitest の場合,コマンドは次のようになります。
docker run -v C:\DockerProject\tests\apitest:C:\tests\apitest --name apirun functionaltesting/uft:latest "C:\Program Files (x86)\OpenText\UFT One\bin\HP.ST.Fwk.InternalExecuter.exe" -test C:\tests\apitest
既存のコンテナでのテストの実行
ホスト・コンピュータのコマンド・ウィンドウで,次のコマンドを実行します。
docker exec -it <container-name> "<UFT One installation folder>\bin\HP.ST.Fwk.InternalExecuter.exe" -test <container-test-directory> -reportPath <report-directory-path>
ここで,
パラメータ名 | 説明 |
---|---|
<container-name> |
この実行に使用する既存の Docker コンテナの名前。 ヒント: このコマンドを実行する前に,コンテナが実行されていることを確認してください。 |
<container-test-directory> | <host-test-directory> がマウントされている Docker コンテナ上のディレクトリのフル・パス。 |
<report-directory-path> |
(オプション)テスト結果を保存するディレクトリのパス。<container-test-directory> からの相対パスを指定します。 標準設定では,結果はテスト・フォルダの下に保存され,以前の実行結果が上書きされます。 |
たとえば,コンテナ名が apirun,ホスト・テスト・ディレクトリが C:\DockerProject\tests,テスト名が apitest の場合,コマンドは次のようになります。
docker exec -it apirun "C:\Program Files (x86)\OpenText\UFT One\bin\HP.ST.Fwk.InternalExecuter.exe" -test C:\tests\apitest -reportPath result1
Jenkins を使用した,Windows Docker コンテナでの API テスト実行のトリガ
Windows Docker コンテナをセットアップした後,Jenkins を使用して UFT One API テストの実行をトリガできます。
-
ホスト・コンピュータで,API テスト用のローカル・ディレクトリを作成し,テストを保存します。
-
Docker コンテナをスレーブとして Jenkins に追加します。
-
ビルド・ステップを追加し,[Execute Windows batch command]を選択します。
-
このステップにコマンドを挿入してテストをトリガします。次のいずれかを実行します。
-
ライセンスのインストール後にコミットされた UFT One Windows Docker イメージに基づいて新しいコンテナを作成し,API テストを実行します。
docker run -v <host-test-directory >:<container-test-directory> --name <container-name> <image-with-licensed-uft> "<UFT One installation folder>\bin\HP.ST.Fwk.InternalExecuter.exe" -test <container-test-directory> -reportPath <report-directory-path>
-
ダウンロードした UFT One イメージに基づいて新しいコンテナを作成し,このコンテナにコンカレント・ライセンスをインストールして,API テストを実行します。
docker run -dit --name <container-name> -v <host-test-directory >:<container-test-directory> <UFT One Docker image name>[:tag] cmd.exe /C " " <UFT One installation folder>/bin/HP.UFT.LicenseInstall.exe" concurrent <license ID> <license version> <primary server name/address>:<port> & "<UFT One installation folder>/bin\HP.ST.Fwk.InternalExecuter.exe" -test <container-test-directory> -reportPath <report-directory-path>
このコマンドの詳細については,Windows Docker コンテナでの API テストの実行を参照してください。
-
Windows Docker コンテナでの Web テストおよび AI ベースの Web テストの実行
Windows Docker コンテナでの Web テストおよび AI ベースの Web テストの実行は,テクノロジ・プレビューとしてサポートされています。
Docker での Web テストおよび AI ベースの Web テストは,Headless Chrome でのみ実行できます。このセクションでは,Docker の Headless Chrome でこのようなテストを実行するための UFT One オートメーション・スクリプトを作成する方法について説明します。
Docker コンテナ内の Headless Chrome で Web テストと AI ベースの Web テストを実行するには,次の手順を実行します。
-
前提条件:Windows Docker コンテナをセットアップし,Headless Chrome でのテストの実行の準備で説明されているすべての手順を実行していることを確認します。
-
次の動作を含む UFT One オートメーション・スクリプトを作成します。
-
UFT One を起動する。
-
WebLauncher オブジェクトを使用してブラウザの種類を設定します。
AI ベースの Web テストを実行するには,AI オブジェクト検出を有効にする必要があります。AI オブジェクト検出は標準設定で有効になっていますが,必要に応じて,有効にするステップを追加します。
-
UFT One テストを実行する。
-
テストを閉じる。
-
UFT One を閉じる。
以下はサンプル・スクリプトです。
Copy codeDim qtApp 'As QuickTest.Application ' Declare the Application object variable
Dim qtTest 'As QuickTest.Test ' Declare a Test object variable
Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable
Dim qtAutoExportResultsOpts 'As QuickTest.AutoExportReportConfigOptions ' Declare the Automatically Export Report Configuration Options object variable
Set qtApp = CreateObject("QuickTest.Application") ' Create the Application object
qtApp.Launch ' Start UFT
qtApp.Visible = False ' Make the UFT application invisible
qtApp.Open "c:\tests\Headless" '
'Set run settings for the test
Set qtTest = qtApp.Test
'Set RnR setting
qtApp.Test.Settings.Launchers("Web").Active = True
qtApp.Test.Settings.Launchers("Web").Browser = "CHROME_HEADLESS"
Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions")
qtResultsOpt.ResultsLocation = "c:\tests\reports"
qtTest.Run qtResultsOpt ' Run the test
qtApp.Test.Close
qtApp.Quit -
-
ホスト・コンピュータのコマンド・ウィンドウで,次のコマンドを実行します。
Copy codedocker run -it --name <container-name> -v <host-directory>:<container-directory> <UFT One Docker イメージ名>[:tag] cmd //[:tag] を追加して UFT イメージのバージョンを指定します。標準設定は 'latest' です。
cd <container-directory>
<script-name>.vbs //オートメーション・スクリプトを実行します。注:
-
コマンド内のパラメータを実際の値で置き換えます。これらのパラメータの情報については,Windows Docker コンテナでのモバイル・テストの実行を参照してください。
-
AI オブジェクト認識を使用するステップを含むテストを実行する場合は,ヘッドレス・ブラウザでのテストで説明されている制限事項に注意してください。
-
Linux Docker コンテナでの API テストの実行
Linux Docker コンテナでの API テストの実行は,テクニカル・プレビューとしてサポートされています。
UFT One Docker コンテナを作成する前にの説明に従って,前提条件を準備して uft_one_for_api_tests イメージをプルします。
UFT One API テストの実行には,コンカレント・ライセンスが必要です。
次のコマンドを実行して UFT One ライセンスをインストールし,API テストを実行します。
docker run -it -v <host-test-directory>:<container-test-directory> functionaltesting/uft_one_for_api_tests[:tag] -test <container-test-directory> -reportPath <report-directory-path> -licenseServer <License_server_ip>:<port>
ここで,
パラメータ名 | 説明 |
---|---|
<host-test-directory> |
ホスト・コンピュータでの API テストへの完全パス。このディレクトリはコンテナ・テスト・ディレクトリにマウントされます。 |
<container-test-directory> |
<host-test-directory> がマウントされている Docker コンテナ上のディレクトリのフル・パス。 例:C:\DockerProject\tests\apitest。C:\DockerProject\tests は,テスト用に作成したローカル・ディレクトリで,apitest は,このディレクトリに保存したテストの名前です。 |
<report-directory-path> |
(オプション)テスト結果を保存するディレクトリのパス。<container-test-directory> からの相対パスを指定します。 標準設定では,結果はテスト・フォルダの下に保存され,以前の実行結果が上書きされます。 |
<License_server_ip>:<port> | コンカレント・ライセンス・サーバの IP アドレスとポート番号。 |
テクニカル・プレビューの範囲
次の表に,Linux ベースのイメージ上の API テストで実行できるアクティビティを示します。
サポートされているアクティビティ | サポートされていないアクティビティ |
---|---|
日付/時刻 |
CoAP |
フロー |
データベース |
FTP(UFT One 24.2 以降) | 外部 GUI/API テストの呼び出し |
HTTP |
File |
JSON |
IBM Websphere MQ |
数値演算 |
JMS |
REST |
Java |
SOAP |
MQTT |
文字列 |
SAP |
システム変数 |
WebSocket |
XML(UFT One 24.2 以降) |
|
その他の操作 |
その他の参照項目: