このセクションでは、SOAtest の Web 機能テスト (クロス ブラウザー テスト) の概要を説明します。このセクションの内容:
Web テスト
Web インターフェイスのテストは自動化が難しい場合があります。往々にして開発チームが自動テストを捨てて手動テストに切り替えることがありますが、その理由は、自動テストが検出する偽陽性の数が多過ぎることや、テスト スイートの管理に時間と労力がかかり過ぎることです。
SOAtest は、これらの障害を削減するよう設計されています。SOAtest は、複数のブラウザー間でアプリケーション コンポーネントが正しく機能するように、個々のアプリケーション コンポーネントを分離してテストします。スクリプトは必要ありません。動的データをスタブ化して定数データを使用することで、テスト ケースのノイズを削減できます。検証は、ページ オブジェクト レベルだけでなく、 HTTP メッセージ レベルでも実行できます。また、非同期メッセージのスタブ化によって、想定される状況と想定外の状況の両方について、クライアント サイド JavaScript エンジンを検証することもできます。
WebDriver Engine
Web シナリオの再生に Selenium WebDriver または Parasoft ネイティブ ドライバー (レガシー) エンジンを使用できます。詳細については「Selenium WebDriver エンジン」を参照してください。
ブラウザー操作の記録とクロス ブラウザー
Web テストの最初のステップは、「ブラウザー操作の記録と再生」で説明するブラウザー 操作の記録です。
一度テストを作成したら、「機能テストの実行」で説明するようにテストを実行できます。
Web シナリオの拡張と再利用
目標を達成するために、記録した Web シナリオを迅速に拡張することができます。以下の例は、Web シナリオを拡張して再利用するための一般的なプラクティスです。
- クロス ブラウザー テストの構成: ブラウザー再生オプションの設定
- ユーザー アクションの構成: Web シナリオでシミュレートされたユーザー アクションの変更
- 妥当性確認の構成: 値の検証 または 値の格納
- 待ち条件の構成: 待ち条件の構成
- テスト実行の前後に発生するアクションの構成: セットアップ テストとティア ダウン テストの追加
- テスト シーケンス、テスト リレーションシップ、テスト フロー ロジックなどの実行オプションの構成: テスト スイートのプロパティ設定 (テスト フロー ロジック、 変数など)
- Web インターフェイス、バックエンド サービス、ESB、データベース、およびその中間のすべてを介して拡張するシナリオのエンド ツー エンド テスト: エンド ツー エンド テスト シナリオ
- 負荷テスト: 負荷テスト (Load Test)
- 侵入テスト: 侵入テスト
- 実行時エラー検出: 実行時エラー検出の実施
- データ駆動テスト: テストのパラメータライズ (データ ソース、変数、または他のテストの値を使用)
- 予測可能でアクセス可能なテスト ベッドを構成するためのスタブと環境の使用: 異なる環境でのテスト構成
対応ブラウザー
- Firefox 47.0.1 以前
- Google Chrome
- Internet Explorer 7+
- Mac OSX 上の Safari 5.1+
- Microsoft Edge Windows Anniversary Edition (バージョン 38.14393)+
Parasoft ネイティブ ドライバー (レガシー) エンジンでは、Web ブラウザー操作の記録とプレイバックのために以下のブラウザーがサポートされています。
- Internet Explorer 8+
- Google Chrome 9+
デスクトップ ブラウザーを介してモバイル インターフェイス テストを実行することもできます。詳細については、 「モバイル インターフェイスのテストモバイル インターフェイスのテスト」で説明します。
Firefox の注意事項
- Firefox 3 以降では、ファイル入力 (アップロードするファイルの参照を許可する入力) の記録と再生はサポートしていません。
- Firefox が自動更新中の場合 (更新がダウンロード済みだがまだインストールされていない場合)、Web シナリオが正しく再生されない (SOAtest/Virtualize は Firefox を起動するが、Firefox がアドオン互換性をチェックするダイアログを表示し、再生が失敗する) 可能性があります。この問題が起きた場合は、SOAtest/Virtualize の外で Firefox を起動して更新のインストールを完了します。更新が完了したら、Web シナリオを通常どおり再生できます。
Internet Explorer の注意事項
Internet Explorer を使用する前に、「Internet Explorer の設定」を参照してください。
Internet Explorer 9 または 10 では、イベント リスナーを登録するときに addEventListener() を使用することを推奨します。ただし、IE 固有のイベント モデルである attachEvent() を使用している場合、IE 固有のモデルを使って SOAtest に JavaScript イベントをエミュレートさせるには、以下のように <SOAtest/Virtualize Directory>\eclipse\plugins\com.parasoft.xtest.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] をクリックします。続行するには、管理者パスワードを入力する必要があります。
Safari の注意事項
Safari は Selenium WebDriver エンジンを使用した再生の場合にサポートされます。
Safari に関連するすべての制限事項については、「Safari 固有の問題点」を参照してください。
Microsoft Edge の注意事項
使用している Edge のバージョンに合った MicrosoftWebDriver の実行モジュールが必要です。"Unable to launch Microsoft Edge" エラー メッセージが表示された場合、ドライバーのダウンロードが必要なことがあります。詳細については https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver を参照してください。
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 を起動している場合、[ユーザーがログオンしているときのみ実行する] オプションを必ず有効化してください。