このセクションでは、SOAtest の Web 機能テスト (クロス ブラウザー テスト) の概要を説明します。このセクションの内容:
Web テスト
自動テストに関連する誤検知やメンテナンスの問題のために、手動テストが優先され、自動 Web テストが放棄されることはよくあります。SOAtest は、スクリプトを使う必要なく、複数のブラウザーにわたって個々のアプリケーション コンポーネントを分離してテストし、その機能の正しさをテストすることで、自動化された Web テストの障壁を取り除きます。動的データをスタブ化して定数データを使用することで、テスト ケースのノイズを削減できます。検証は、ページ オブジェクト レベルだけでなく、 HTTP メッセージ レベルでも実行できます。また、非同期メッセージのスタブ化によって、想定される状況と想定外の状況の両方について、クライアント サイド JavaScript エンジンを検証することもできます。
ブラウザー操作の記録とクロス ブラウザー
Web テストの最初のステップは、「ブラウザー操作の記録と再生」で説明するブラウザー 操作の記録です。
一度テストを作成したら、「機能テストの実行」で説明するようにテストを実行できます。
Web シナリオの拡張と再利用
目標を達成するために、記録した Web シナリオを迅速に拡張することができます。以下の例は、Web シナリオを拡張して再利用するための一般的なプラクティスです。
- クロス ブラウザー テストの構成: ブラウザー再生オプションの設定
- ユーザー アクションの構成: Web シナリオでシミュレートされたユーザー アクションの変更
- 妥当性確認の構成: 値の検証 または 値の格納
- 待ち条件の設定: 待ち条件の設定
- テスト実行の前後に発生するアクションの構成: セットアップ テストとティア ダウン テストの追加
- テスト シーケンス、テスト リレーションシップ、テスト フロー ロジックなどの実行オプションの構成: テスト スイートのプロパティ設定 (テスト フロー ロジック、 変数など)
- Web インターフェイス、バックエンド サービス、ESB、データベース、およびその中間のすべてを介して拡張するシナリオのエンド ツー エンド テスト: エンド ツー エンド テスト シナリオ
- 負荷テスト: 負荷テスト (Load Test)
- 侵入テスト: 侵入テスト
- データ駆動テスト: テストのパラメータライズ (データ ソース、変数、または他のテストの値を使用)
- 予測可能でアクセス可能なテスト ベッドを構成するためのスタブと環境の使用: 異なる環境でのテスト構成
対応ブラウザー
- Firefox 47.0.2 以前
- Google Chrome
- Internet Explorer 11
- Microsoft Edge Windows Anniversary Edition (バージョン 38.14393)+ (詳細については Microsoft Edge Notes を参照)
- Chromium ベースの Edge ブラウザー バージョン 79 以降 (詳細については Microsoft Edge Notes を参照)
デスクトップ ブラウザーを介してモバイル インターフェイス テストを実行することもできます。詳細については、 「モバイル インターフェイスのテストモバイル インターフェイスのテスト」で説明します。
Firefox の注意事項
- Firefox 3 以降では、ファイル入力 (アップロードするファイルの参照を許可する入力) の記録と再生はサポートしていません。
- Firefox が自動更新の最中の場合 (つまり、更新がダウンロードされたがまだインストールされていない場合)、Web シナリオが正しく再生されない場合があります。Virtualize は Firefox を起動し、Firefox はアドオンの互換性を確認するダイアログを開きます。これにより再生が失敗します。この問題が起きた場合は、SOAtest/Virtualize の外で Firefox を起動して更新のインストールを完了します。更新が完了したら、Web シナリオを通常どおり再生できます。
Internet Explorer の注意事項
Internet Explorer を使用する前に、「Internet Explorer の設定」を参照してください。
Internet Explorer 9 または 10 では、イベント リスナーを登録するときに addEventListener() を使用することを推奨します。ただし、IE 固有のイベント モデルである attachEvent() を使用している場合、IE 固有のモデルを使って Virtualize に JavaScript イベントをエミュレートさせるには、以下のように <INSTALL>\plugins\com.parasoft.ptest.libs.web_<VERSION>\root\browsers\ie\ ディレクトリの HTMLUtil.js を手動で更新する必要があります。
SOAtest
"ext.HTMLUtil.preferLegacyEventModel = false;"
を以下に変更します。"ext.HTMLUtil.preferLegacyEventModel = true;"
Virtualize
"_wk_HTMLUtil.preferLegacyEventModel = false;"
を以下に変更します。"_wk_HTMLUtil.preferLegacyEventModel = true;"
Internet Explorer 9 を初めて起動すると、「The Recorder Registrar is now ready to use」という警告ダイアログが表示されます。Web シナリオを正しく記録および再生することを保証するために [有効にする] ボタンをクリックする必要があります。最良の結果のために、[有効にする] ボタンをクリックした後にブラウザーをいったん閉じてから再び開くことを推奨します。
- モーダル ダイアログでのファイル入力はサポートされません
- Internet Explorer 8 以降では、ファイル入力 (アップロードするファイルの参照を許可する入力) の記録と再生はサポートしていません。
Chrome の注意事項
- Linux で Chrome の実行ファイルへのパスを指定する場合、 chrome ではなく google-chrome (たとえば /opt/google/chrome/google-chrome) を選択してください。Windows ではこのパスは通常 C:\Users\usernane\AppData\Local\Google\Chrome\Application\chrome.exe です。Mac では通常 /Applications/Google Chrome.app です。
- 記録した Web シナリオの最後のステップに対するブラウザーの内容がキャプチャされなかった場合、Web シナリオを再生してこの内容をキャプチャできます。なお、この現象が発生するのは、ブラウザー ウィンドウを閉じて記録を停止した場合です。推奨するベスト プラクティスは、ブラウザー ウィンドウを閉じるのではなく、[記録の停止] ボタンをクリックして記録を停止することです。
- Chrome の場合、非同期リクエスト テストの生成は XMLHttpRequest オブジェクトからのリクエストだけをキャプチャします。非表示の IFrame 呼び出しからの非同期リクエストは検出しません。必要に応じて、そのような非同期リクエストのテストを手動で追加できます。
- 要素に対してユーザーが作業する場合、 Internet Explorer や Firefox と異なり、Chrome はロケーターがフレーム間で固有であることを保証するために他のフレームをチェックしません。結果として、記録されたアクションが、記録されたフレーム以外のフレームで再生される可能性があります。この予想外の動作があった場合は、固有のロケーターを決定し、Browser Playback Tool で使用されるロケーターを変更してください。
- 場合によっては、非同期リクエストを発生させるためにはログインが必要です。Firefox および IE はこれを検出し、テスト スイートはこのログインを実行するセットアップ テストを自動的に作成します。そしてログインによって作成された cookie を非同期テストが使用します。Chrome はこれをサポートしません。Chrome の場合、非同期リクエストのテストは SOAtest が生成できますが、ログイン ステップは「セットアップ テスト」または「非同期テストの前に実行されるテスト スイート ツール」として手動でセットアップする必要があります。
- Chrome では、ファイル入力 (アップロードするファイルの参照を許可する入力) の記録と再生はサポートしていません。
- Mac 上の Chrome で Parasoft ネイティブ エンジンを使用してシナリオの記録または再生を行う場合、Chrome を閉じるとダイアログが開き、次のメッセージが表示されます。「Google Chrome wants to use your confidential information stored in ’Chrome Safe Storage’ in your keychain.Do you want to allow access to this item?」[Always Allow]を選択しても、 Chrome を起動してから閉じると、毎回このダイアログが表示されます。このダイアログが毎回表示されるのを防ぐには、次の操作を行います。
- [Applications] > [Utilities] > [Keychain Access] をクリックします。
- コントロール キーを押しながら [Chrome Safe Storage] をクリックし、ショートカット メニューの [Get Info] をクリックします。
- [Access Control] に切り替えて [Allow all applications to access this item] を選択し、[Save Changes] をクリックします。続行するには、管理者パスワードを入力する必要があります。
Microsoft Edge の注意事項
使用している Edge のバージョンに合った MicrosoftWebDriver の実行モジュールが必要です。"Unable to launch Microsoft Edge" エラー メッセージが表示された場合、ドライバーのダウンロードが必要なことがあります。詳細については https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver を参照してください。
Chromium ベースの Microsoft Edge ブラウザーのサポートを有効にする
Chromium ベースの Edge ブラウザーでの再生に必要な msedgedriver.exeWebDriver は同梱されていません。
次の Web サイトからドライバーをダウンロードできます。https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
ドライバーを <INSTALL>\plugins\com.parasoft.ptest.libs.web_<VERSION>\root\browsers\webdriver\edge\x86\ ディレクトリに保存して、Chromium ベースの Edge ブラウザーのサポートを有効にします。
Microsoft Edge での再生のトラブルシューティング
特権アクセスで SOAtest/Virtualize プロセスが実行中の場合、SOAtest/Virtualize は Edge を起動できません。この問題を解決するには、以下の操作を行ってください。
- 「管理者ではないアカウント」または「ユーザー アカウント制御の通知が有効に設定された管理者アカウント」を使用して、非特権プロセスとして SOAtest/Virtualize を実行します。
- 管理者ユーザーに対してユーザー アカウント制御の通知を有効化します。
Windows Home 以外のエディション:
- ローカル セキュリティ ポリシー (secpol.msc) を開き、Local Policies/Security オプションの下の ビルトイン Administrator アカウントのための管理者承認モード を有効化します。
Windows Home エディション:
- regedit.exe を起動し、 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System を探します。
- 存在しない場合、DWORD 値 "FilterAdministratorToken" を作成します。
- "FilterAdministratorToken" の値を 1 に設定します。
- 起動時に [スケジュールされたタスク] から SOAtest/Virtualize を起動している場合、[ユーザーがログオンしているときのみ実行する] オプションを必ず有効化してください。