負荷テストの実行時に、タイムアウト エラーやその他の実行失敗が発生することがあります。 ここでは、そのようなエラーを回避、検索、修正するヒントを提供します。
テスト実行が予期しないダイアログ ボックスが表示されることで失敗し、それが原因でスクリプトが作業中のウィンドウへのフォーカスを失うことがしばしばあります。 そのため、テストを実行する前に Silk Performer の TrueLog On Error 機能を有効にしておくことをお勧めします。 そうすると、エラーが発生した場合に、TrueLog Explorer で視覚的に割り出すことができます。
テスト実行が失敗し後は、テストを再開する前にすべてのターミナル サーバー セッションをリセットしてください。リセットしない場合はスクリプトが失敗します。
テスト中、生成された負荷が原因で、アプリケーションによってエラーが呼び出されることがあります。 エラーの処理および報告を行うイベント ハンドラーをスクリプトに追加しておくと便利です。
ここでは、Program Error Intercepted という名前のウィンドウを継続的に監視し、そのようなウィンドウが表示された場合に ALT-C を実行してウィンドウを閉じるイベント ハンドラーの例を示します。 またそのようなエラーが発生すると、イベント ハンドラーはエラー メッセージを生成します。
dclevent handler Handler1 <EVENT_CITRIXINTERRUPT> var nInterrupt, nWindow : number; nStyle : number; sWindowCaption : string; begin CitrixGetActInterrupt(nInterrupt, nWindow); ErrorAdd(FACILITY_CITRIXENGINE, 47, SEVERITY_INFORMATIONAL); print(string(nWindow)); CitrixGetWindowCaption(nWindow, sWindowCaption); if sWindowCaption = "Program Error Intercepted" then CitrixKey(67, MOD_Alt); // 'c' end; ErrorRemove(FACILITY_CITRIXENGINE, 47); end Handler1;
テスト対象のアプリケーションのスクリプトがオーバーランするのを回避するために Wait() 文または ThinkTime 文を使用しているかもしれませんが、以下の 2 つの理由からこの方法はお勧めできません。
これを解決するには、同期を使用します。
アプリケーションの動作を変更すると、記録したスクリプトの一部が使用できなくなることがあります。 ユース ケースの一部を記録し直すというのも 1 つの手段ですが、レコーダが既存のウィンドウのハンドルを追跡できず、結果としてウィンドウの処理番号が間違ってしまうということあるため注意が必要です。 こういった問題のせいで、新しく記録したスクリプトと元のスクリプトの統合が極めて煩雑になってしまうことも考えられます。 ユース ケースが小さい場合は、ユース ケース全体を記録し直すことをお勧めします。 記録し直さない場合は、以下に概説されている処理に従って、新しいスクリプトと古くなったスクリプトを統合してください。