eggPlant Functionalスクリプトをデバッグする
eggPlant Functionalスクリプトが、構文的かつ意味的に正しいことが重要です。スクリプトがテスト対象システム(SUT)での必須アクションをその通りに駆動し、ユーザストーリーを端から端まで自動化することも同等に、不可欠です。
eggPlant Functionalには、スクリプトをデバッグを支援する複数の機能が含まれています。これらの機能、および関連するデバッグ戦略をいくつか説明していきます。This article focuses on debugging your script code; information specific to image debugging can be found in Image Update Panel and Image Capture Best Practices.
デバッグモード
スクリプトをデバッグする優れたアプローチの1つとして、SUT上で各スクリプトステートメントにより生じる作用の分析が挙げられます。この作用は、スクリプトをデバッグモードで実行することで得られます。デバッグモード中、クリプトは単一ステートメントを実行し、その後次のステートメントの実行が選択されるまで一時停止します。この方法により、コードの各特定部分により、SUT上に所望の/予期される作用が生じるかを確認できます。
デバッグモードでスクリプトを実行するには、メインメニューのRun(実行)> Debug Script(スクリプトをデバッグ)(またはRun(実行)> Debug Selection(セレクションをデバッグ))に移行します。
注:Debug Selection(セレクションをデバッグ)は、Script Editor(スクリプトエディタ)内でコードのセクションが選択されている場合のみ利用可能です。
また、Altキー(Windows)またはコマンドキー(Mac OS X)を押しながら、Script Editor(スクリプトエディタ)ツールバーのRun Script(スクリプトを実行)またはRun Selection(セレクションを実行)のいずれかをクリックすることで、デバッグモードでスクリプトを実行することも可能です。実行ウィンドウオプションの詳細は、実行ウィンドウに記載されています。
デバッグモードで実行する場合、Animate All(すべてをアニメート)設定(Run(実行)> Animation(アニメーション)> Animate All(すべてをアニメート))を使用することをお薦めします。この設定では、現在のライン(またはスクリプトが一時停止されている場合は実行するコードの次のライン)が実行ウィンドウのスクリプト表示エリアに、ハイライト表示されます。さらにはTracing(トレース)(Run(実行)> Tracing(トレース)> Trace All(すべてをトレース))を使用して、スクリプトが実行ウィンドウのログエリアで実行しようとしている内容に関する情報を、eggPlant Functionalに「エコー」させることが可能です 。これらの機能の詳細については、実行ウィンドウをご覧ください。
デバッグモードでアニメーションを有効化してスクリプトを開始すると、スクリプトの最初のラインが実行ウィンドウでハイライトされ、実行はされていません。
実行ウィンドウのスクリプト表示で、アニメーションを使用している場合は、現在のラインがハイライトされます。
ステートメントごとにスクリプトの「ステップ」進めていくには、ハイライトされたラインの実行を希望するときに毎回、Step Into(ステップ情報)ボタンをクリックします。ハイライトされたラインが実行され、スクリプトが再び一時停止すると同時に次のラインがハイライトされます。
各ステップごとに、ビューアウィンドウでSUTでの作用を確認できます(またはテスト環境によっては実際のSUTで確認可能)。スクリプトのラインを実行して望ましくない/予期せぬ作用が生じた場合は、バグが発見されたということです。スイートウィンドウへと戻って、Edit Script(スクリプトを編集)ボタンをクリックしてスクリプトを編集できます。スクリプトを編集する準備ができていない場合は、エラーが見られたスクリプトのそのセクションで起こった事象に関するコメントテキストを追加することを検討してみてください。
コードのラインの実行が失敗(例えば、WaitForコマンドの時間パラメータが提供されなかったため)した場合は、そのスクリプトの実行は停止され、実行ウィンドウに失敗に理由が表示されます。この動作は、スクリプトを(デバッグモードではなく)普通に実行する場合とまったく同一です。
スクリプトの最後のラインを実行したら、Step Into(ステップ情報)をもう一回クリックして、スクリプトの実行を完了させます。
一時停止/続行、ステップオーバー、およびステップアプト、といったデバッグモードでスクリプトを実行しながら、実行ウィンドウのその他のボタンを使用する詳細については、実行ウィンドウツールバーをご覧ください。
Dynamic Breakpoints(動的ブレークポイント)
IneggPlant Functionalでは、スクリプト内にダイナミックブレークポイントを設定できます。ブレークポイントを設定すると、先に進めると選択を行うまでは、その特定ポイントでスクリプトの実行が一時停止されます。
ダイナミックブレークポイントの使用は、スクリプトのある部分は良好に動作するがより詳しく調べるべき問題含みなスポットが存在する場合に、特に有用です。そのような場合、適切に機能すると分かっているセクションをデバッグモードで実行するのは、冗長であると思われるかもしれません。したがって、作業要と同定したコードのセクションにダイナミックブレークポイントを設定すれば、スクリプト実行はこれらのポイントでのみ停止されます。
ダイナミックブレークポイントを設定することは、大規模スクリプトに作業中でモニタリングのためSUTをミッドスクリプト状態にする必要がある場合にも、役に立ちます。スクリプト内にブレークポイントを設定し、その後スクリプトをそのポイントで停止するまで実行します。この動作が予期される状態と一致するかどうかを確認して、SUTを分析可能です。
ダイナミックブレークポイントを設定するには、実行ウィンドウ内のScript Display(スクリプト表示)エリアの左側のカラムをクリックします。また、Script Editor(スクリプトエディタ)内でもダイナミックブレークポイントを設定できます。スクリプトの左側のカラムをクリックしてください。行の次に黒い三角形が現れ、ブレークポイントを表します。スクリプトを実行すると、ブレークポイントを設定したラインを実行する前に一時停止します。
ダイナミックブレークポイントが設定したスクリプトラインの左側に黒い三角形として現れます。
スクリプトに複数のブレークポイントを含めることが可能です。三角形をスクリプトの他の行にドラッグしてブレークポイントを動かす事もできます。また列の外にドラッグして削除する事も可能です。ダイナミックブレークポイントはスクリプトを一時停止させるため、デバッグモードでスクリプト実行を開始させた場合と同様に、デバッグボタン(ステップ情報、ステップオーバー、ステップアウト)を使用可能です。
Ad Hoc Do Boxと変数ウォッチャー
Ad Hoc Do Box(AHDB)と変数ウォッチャーはRun(実行)ウィンドウ上のツールで、実行中スクリプトのステータスやSUT環境を確認できるほか、各種アクションを行うこともできます。AHDBはRun(実行)ウィンドウ下部にあり、変数ウォッチャーは同ウィンドウの右側にあるパネルです。
eggPlant Functional実行ウィンドウにはスクリプトデバッグのためAd Hoc Do Box(AHDB)と変数ウォッチャーが含まれています。
(Run(実行)> Show Variables(変数を表示)> Always(常に)と選択して変数ウォッチャーを有効化する必要があるかもしれません。)
AHDBでは、実行中のスクリプトとのインタラクションと修正ができます。例えば、値を変数にを割り当て、コマンドを実行し、またはその他のスクリプトを呼び出しできます。この機能では、スクリプト環境またはSUT環境を必要に応じて変更できます。例えば、コードのあるセクションが予期した通りに実行されなかった場合は、スクリプトを一時停止しSUTの条件をリセットして、その後スクリプトの実行を続行する前に、AHDBを通してコードのラインを再実行します
スクリプトを実行中または一時停止中のいずれかの場合にAHDBを使用可能です。スクリプト実行中にコマンドを入力する場合は、現在のラインが完了してから実行され、その後スクリプトはその標準実行に戻ります。しかしスクリプトは複数ラインを迅速に実行することが多いため、スクリプト実行中にAHDBを使用するとかなり不正確になる場合があります。
精度を高めるには、一時停止中にAHDBを使用してください。デバッグモードで実行して、ダイナミックブレークポイントを設定して、またはスクリプト実行中にRun(実行)ウィンドウのPause(一時停止)をクリックして、実行スクリプトを一時停止可能であることを、思い出してください。
AHDBを使用するには、Put variableTestといったコマンドをAHDBに入力し、その後Doボタンをクリックします。このケースでは、PutコマンドがvariableTestのコンテンツをRun(実行)ウィンドウのログエリアへとアウトプットします。
AHDBに入力したコマンドが実行ウィンドウのログエリアに表示されます。
また、変数にリスト、番号、テキストの文字列、といった予測される値のタイプが含まれているかを確認可能です。例えば、Put variableTest is a listを入力してDoをクリックすると、がTrueまたはFalseのブーリアン値がRun(実行)ウィンドウにアウプトプットされます。実際に見える値は、変数の現在の値により決定されます。(さらなる可能な比較については、論理演算子ページをご覧ください。)
スクリプト内で変数値を追跡するには、変数ウォッチャーを使用するのが好ましいかもしれません。このペインを有効化すると、スクリプトおよびその現在の値のあらゆる変数を表示できます。さらには、変数値を直接このペイン内で変更することも可能です。変数ウォッチャーでは、ローカル、グローバル、ユニバーサルの各変数のうち、表示させたい変数タイプへとビューをフィルタできます。For complete information on using the Variable Watcher, see The Variable Watcher.
またAHDBは、スクリプト内の反復ループのデバッグにも有用です。スクリプト実行が反復ループを入力する場合、AHDBを使用してループの現在の反復を判定可能です。これを行うには、Put counter()またはPut the repeatIndexをAHDBに入力して、Doをクリックします。これらのオプションのいずれも、実行中のループの現在の反復をアウトプットします。(注:実行中のネスト化反復ループがある場合は、その後counter()およびrepeatIndex()が実行中の最内反復ループの反復をレポートします。反復ループおよびcounter()ファンクションとrepeatIndex()ファンクションの詳細については、反復ループをご覧ください。
AHDBおよび変数ウォッチャーにより、スクリプトのデバッグが容易になります。変数のコンテンツ/タイプを確認するため、または特定ステップで正しい画像が見つかったかどうか検証するためにテストスクリプトをコマンドでクラッタするのではなく、この情報を直接Run(実行)ウィンドウから得ることができます。
問題を検出し解決する
上述機能は、デバッグオプションの全リストのほんの一部に過ぎません。これらのeggPlant Functional方法により、スクリプトの問題を検出するための正しい指針が得られます。デバッグコントロールはあなたの代わりに問題を解決するわけではありませんが、少なくとも問題のあるスポットが指摘され、スクリプトのどこが予測通りに動作しないのかを認知しやすくなります。