Windows Docker コンテナでの UFT One テストの実行
UFT One Docker イメージを使用すると,UFT One のメンテナンスとテストの実行が高速になります。
このトピックは,Docker の管理についてある程度の知識があることを前提としており,Docker の管理手順については詳しく説明しません。
利用可能な UFT One Docker イメージ
UFT One Docker イメージを使用して,Windows Docker 環境でモバイル・テストまたは API テストを実行します。イメージは https://hub.docker.com/r/functionaltesting/ から入手できます。
すべてのイメージで,次の機能がサポートされています。
- Digital Lab(UFT Mobile) および UFT One 自動化スクリプトを使用してモバイル・テストを実行する。
- Windows Docker 環境で単一の API テストを実行する。
次のイメージを入手できます。
-
uft イメージ。UFT One がインストールされた Windows Docker のフル・イメージです。
-
uft_lite イメージ。機能はフル・イメージと同じですが,容量がはるかに小さく,短時間でダウンロードできます。
-
2 つの UFT One ユーティリティ Docker イメージ。uft または uft-lite イメージに基づいていますが,追加のユーティリティ・ツールも含まれています。
UFT One ユーティリティ Docker イメージを使用する利点
このイメージにより,次のように機能が拡張されます。
テストの実行が容易 | Windows Docker 環境で 1 つのコマンドを使用して UFT One テストを円滑かつ容易に実行できます。 |
複数の API テストの実行 | 1 つの Docker コマンドを使用して,指定したフォルダに格納されたすべての API テストを実行できるようになりました。 |
実行結果の JUnit レポートへの変換 | テストの実行後に,ReportConverter ユーティリティを使用して実行結果から JUnit レポートを作成できます。 |
CI-CD パイプラインでの Docker イメージの使用 | Docker イメージに組み込まれたユーティリティ・ツールを使用して,CI-CD パイプラインから Docker イメージでテストを実行できます。 |
UFT One ユーティリティ Docker イメージは,uft および uft-lite イメージよりも頻繁にリリースされます。API テストの実行には,このイメージを使用することをお勧めします。このイメージの使用方法については,Docker Hub のイメージで利用可能なドキュメントを参照してください。
システム要件
次のいずれかのオペレーティング・システムの Windows Docker コンテナで UFT One テストを実行できます。
uft イメージを使用 | uft_lite イメージを使用 |
---|---|
Windows Server 2016 |
Windows Server 2019(10.0.17763.1637 以降) |
Windows 10 バージョン:2004,1903,1803 |
Windows 10 バージョン:2004,1909,1903,1809 |
概要: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 Windows Docker コンテナのセットアップ
このセクションでは,UFT One Windows Docker コンテナをセットアップする方法について説明します。
前提条件
-
Docker をコンピュータにインストールしてセットアップし,Docker Hub から Docker イメージをプルできるようにします。これにより,コンピュータが Docker ホストとしてセットアップされます。
Microsoft のドキュメントの説明に従って,Docker エンジンとクライアントをインストールします。
Docker のセットアップ方法の詳細については,Docker のドキュメントを参照してください。
-
コンピュータでハードウェアとソフトウェアの仮想化を有効にします。
-
Docker が Windows コンテナを実行するように設定されていることを確認します(Docker トレイ・アイコンを右クリックして,メニュー・オプションに[Switch to Linux containers]が表示されていることを確認します)。
イメージのプルとコンテナの作成
UFT Docker イメージをプルして,Docker Windows コンテナを作成します。
-
UFT Docker イメージをプルするには,ホスト・コンピュータのコマンド・ウィンドウで次のコマンドを実行します。
docker pull <UFT One Docker イメージ名>[:tag]
UFT One Docker イメージの名前は functionaltesting/uft または functionaltesting/uft_lite です。
[:tag] は,特定の UFT One イメージバージョンに追加するオプションのフラグです。標準設定では,tag の値は
latest
です。 -
UFT Docker イメージから Docker Windows コンテナを作成するには,ホスト・コンピュータのコマンド・ウィンドウで次のコマンドを実行します。
docker run -it --name <コンテナ名> <UFT One Docker イメージ名>[:tag] "cmd.exe"
このコマンドによって,コンテナが作成され,コンテナに属するコマンド・ウィンドウが開きます。このウィンドウを次のステップで使用して,UFT One ライセンスをインストールします。
注: UFT One Docker イメージは,Windows Server 2016(uft イメージ)および Windows Server 2019(uft_lite イメージ)に基づいています。別の OS の Docker ホストを使用すると,OS に互換性がないというメッセージが表示される場合があります。この問題を回避するには,Docker のドキュメントを参照してください。たとえば,
コマンドに-isolation=hyperv
または-isolation=process
を追加すると,問題が解決する場合があります。
Docker コンテナへの UFT One ライセンスのインストール
UFT One の Docker イメージは,コンカレント・ライセンスでのみサポートされます。Docker コンテナが UFT One を使用するたびに,サーバからライセンスが消費されます。
Docker コンテナのコマンド・ウィンドウで,コンテナに UFT One のコンカレント・ライセンスをインストールします。詳細については,コマンド・ラインを使用したライセンスの管理を参照してください。
Docker コンテナでのモバイル・テストの実行
Docker コンテナをインストールして設定した後,UFT One と Digital Lab(UFT Mobile) の統合をセットアップし,UFT One オートメーション・スクリプトを作成して,Docker コンテナで実行します。
統合の設定
モバイル・デバイスで UFT One テストを実行するには,Digital Lab(UFT Mobile) とアプリケーションを統合用にセットアップする必要があります。詳細については,Digital Lab(UFT Mobile) と UFT One の統合のセットアップを参照してください。
次のステップで作成する UFT One オートメーション・スクリプトは,Digital Lab(UFT Mobile) への接続をセットアップします。
UFT One モバイル・オートメーション・スクリプトの作成
Docker コンテナで UFT One テストを実行するには,Digital Lab(UFT Mobile) でテストを実行するのに必要な特定のステップを含む UFT One オートメーション・スクリプトを使用します。
スクリプトには,次の部分を含める必要があります。
- UFT One を起動する。
- MCConnection オプション・オブジェクトを使用して,UFT One から Digital Lab(UFT Mobile) への接続を設定する。
- Launch メソッドを使用してアプリケーションを起動する。
- UFT One テストを実行する。
- テストを閉じる。
- UFT One を閉じる。
以下は,Digital Lab(UFT Mobile) で特定のテストを実行するために使用されるサンプル・スクリプトです。
Dim qtApp 'As QuickTest.Application ' Declare the Application object variable Set qtApp = CreateObject("QuickTest.Application") qtApp.Launch qtApp.Visible = True qtApp.Options.MCConnection.Server = "<Digital Lab(UFT Mobile) サーバ>" qtApp.Options.MCConnection.Port = "<Digital Lab(UFT Mobile) サーバ・ポート>" qtApp.Options.MCConnection.Username = "<Digital Lab(UFT Mobile) サーバ・ユーザ名>" qtApp.Options.MCConnection.Password = "<Digital Lab(UFT Mobile) サーバ・ユーザ・パスワード>" qtApp.Options.MCConnection.UseSSL = false qtApp.Options.MCConnection.SharedSpace = "<Digital Lab(UFT Mobile) サーバ・テナント ID>" qtApp.Options.MCConnection.WorkSpace = "<Digital Lab(UFT Mobile) サーバ・ワークスペース ID>" qtApp.Options.MCConnection.ShowRemoteWndOnRun = true qtApp.Open "<UFT スクリプト・パス>", True Set qtMobileLauncher = qtApp.Test.Settings.Launchers("Mobile") qtMobileLauncher.Lab = "MobileCenter" 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
注: オートメーション・スクリプトで使用するためにこのテキストをコピーする場合は,必ず Digital Lab(UFT Mobile) サーバ接続の詳細のプレースホルダを,使用する Digital Lab(UFT Mobile) サーバの値に置き換えてください。
詳細については,次を参照してください。
Docker コンテナでのオートメーション・スクリプトの実行
ホスト・コンピュータのコマンド・ウィンドウで,次のコマンドを実行します。
docker run -it --name <container-name> -v <host-directory>:<container-directory> <UFT One Docker イメージ名>[:tag] cmd //[:tag] を追加して UTF イメージのバージョンを指定します。標準設定は 'latest' です。
コンテナに UFT One のコンカレント・ライセンスをインストールします。コマンド・ラインを使用したライセンスの管理を参照してください。
cd <container-directory>
<script-name>.vbs //Run the AOM script
ここで,
パラメータ名 | 説明 |
---|---|
<container-name> |
Docker コンテナの名前。一意のコンテナ名を使用して,新しいコンテナを作成します。 |
<host-directory> |
オートメーション・スクリプトが保存されているマシン上のホスト・ディレクトリのフル・パス。 このディレクトリは,Docker コンテナの <container-directory> の場所にマウントされます。 |
<container-directory> | <host-directory> がマウントされている Docker コンテナ上のディレクトリのフル・パス。 |
<UFT One Docker イメージ名> |
UFT One の Docker イメージの名前。値は Functionaltesting/uft または functionaltesting/uft_lite です。 |
<script-name> | UFT One テストを実行するように設定した UFT One オートメーション・スクリプトの名前。 |
注: 特定の UFT One イメージバージョンのオプションの [:tag] を含めます。標準設定では,tag の値は latest
です。
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)\Micro Focus\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)\Micro Focus\UFT One\bin\HP.ST.Fwk.InternalExecuter.exe" -test C:\tests\apitest -reportPath result1
Jenkins を使用した,Docker での API テスト実行のトリガ
Docker コンテナをセットアップした後,Jenkins を使用して UFT One API テストの実行をトリガできます。
-
ホスト・コンピュータで,API テスト用のローカル・ディレクトリを作成し,テストを保存します。
-
Docker コンテナをスレーブとして Jenkins に追加します。
-
ビルド・ステップを追加し,[Execute Windows batch command]を選択します。
-
このステップにコマンドを挿入してテストをトリガします。次のいずれかを実行します。
-
ライセンスのインストール後にコミットされた UFT One 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>
このコマンドの詳細については,Docker コンテナでの API テストの実行を参照してください。
-
その他の参照項目: