Ranorex:パフォーマンス測定
Ranorexでは、テストの実行時間を計測し、最適化するためのパフォーマンス測定の機能を提供しています。テスト実行時における、アプリケーション画面のオブジェクト情報の検索やマウス操作などの実行時間の情報を収集できます。これらの情報はログファイルとして生成され、Excelなどで閲覧、集計することができます。
今回は、パフォーマンス測定の使用方法や、有効活用するためのTipsについて紹介します。
1.使用方法
パフォーマンス測定の機能は、デフォルト設定で無効になっているため、以下の設定をおこない利用できるようにします。設定完了後にテストを実行すると、指定した出力先にパフォーマンス測定のログファイルがCSV形式で生成されるようになります。
- Ranorex Studioにて、ソリューションを開きます。
- メニューアイコンから「設定」をクリックします。
- 表示された「設定」画面にて、「プラグイン」タブを開きます。
- 「Performance tracing」にある「Active tracer」 から、トレーサー (※1) を選択します。
- 「Output directory」にて、ログの出力先を指定します。(デフォルト設定:%MyDocuments%\Ranorex\TraceLogs)
※1.トレーサーには以下の種類があります。
- None:パフォーマンス測定をおこないません。
- Repository:アプリケーション画面のオブジェクトの検索に関する情報。
- MouseInput:マウス(Mouse)アクションのClick、Move操作に関する情報。
- KeyboardInput:キーボード(Key sequence, Key shortcut press)アクションに関する情報。
- AllInput:MouseInputおよび、KeyboardInputのトレーサーに関する情報。
- Misc:Delay、Screenshot、Run/Close application アクションといった、その他のアクションやプロセスに関する情報。
- All:すべてのトレーサーの情報。
2.トレーサー ログの内容
テスト実行時に生成されるログファイル(.csv)は、以下の4つになります。どのトレーサーを選択しても、以下の4つのファイルが生成されます。また、選択されたトレーサーによってファイルに出力されるログの内容が異なります。たとえば、Repositoryのトレーサーを選択した場合、RepositoryとAllトレーサーのログが出力され、他のトレーサーのログは出力されません。
※各ログファイルの1行目にデータのカラム名が表示されます。
PerfTracing_Input_{yyyyMMdd-HHmmss}.csv
すべてのInputトレーサーのログ。以下のデータが収集されます。
- TimeStamp:イベント (例:オブジェクトの検索、アクション実行など) が開始されたタイムスタンプ
- Module:イベントが発生したモジュール
- RepoItem:アクションの対象オブジェクト(リポジトリ アイテム名)
- RepoItemId:アクションの対象オブジェクトのID
- Device:アクションの対象のデバイス
- InputType:アクションのタイプ(※2)
- RepeatCount:アクションが実行された回数
- NominalDuration:アクションのDurationプロパティ
- TotalTime:イベントにかかった合計時間 (単位:ms)
※2.Mouseアクションの場合はclick, moveの操作が対象。Keyboardアクションの場合はsequence, pressの操作が対象。その他のマウス/キーボードアクションのログは収集されません。
PerfTracing_Misc_{yyyyMMdd-HHmmss}.csv
Miscトレーサーのログ。以下のデータが収集されます。
- TimeStamp:イベント (例:オブジェクトの検索、アクション実行など) が開始されたタイムスタンプ
- Module:イベントが発生したモジュール
- EventType:発生したイベントのタイプ(※3)
- Details:EventTypeの詳細情報
- TotalTime:イベントにかかった合計時間 (単位:ms)
※3.発生するイベントのタイプは以下の通りです。
- fixed-delay:Delayアクション
- datasource-load:データソースのロード
- proc-start:Run applicationアクション
- wait-proc-close:Close applicationアクション
- screenshot-trace:テスト スイートの「レポート」タブにあるスクリーンショットのキャプチャモードで設定されているスクリーンショットキャプチャ
- report-slow:10ms以上かかっているレポート関連のイベント
- report-test-text-slow、report-test-data-slow:Ranorex Studio がレポート生成処理でbusyになっており、パフォーマンス測定が一時中断
- other:Ranoerx Studio 以外のイベント (例: User codeアクションなど)
PerfTracing_Overall_{yyyyMMdd-HHmmss}.csv
Allトレーサーのログ。以下のデータが収集されます。
- TimeStamp:イベント (例:オブジェクトの検索、アクション実行など) が開始されたタイムスタンプ
- Module:イベントが発生したモジュール
- TestContainer:イベントが発生したテストコンテナー(例:テストケースなど)
- EventType:発生したイベントのタイプ(※3)
- Details:EventTypeの詳細情報
- TotalTime:イベントにかかった合計時間 (単位:ms)
PerfTracing_Repo_{yyyyMMdd-HHmmss}.csv
Repositoryトレーサーのログ。以下のデータが収集されます。
- TimeStamp:イベント (例:オブジェクトの検索、アクション実行など) が開始されたタイムスタンプ
- Module:イベントが発生したモジュール
- RepoItem:アクションの対象オブジェクト(リポジトリアイテム名)
- RepoItemId:アクションの対象オブジェクトのID
- RepoItemPath:検索したオブジェクトのRanoreXPath
- EffectiveTimeout:オブジェクトのEffective timeoutプロパティ (単位:ms)
- TimesSearched:Effective timeout内にRanorexが対象オブジェクトの検索を試みた回数
- LastSearchTime:オブジェクトの検索の成功までにかかった時間 (単位:ms)
- TotalTime:イベントにかかった合計時間 (単位:ms)
- Found:対象オブジェクトの検索に成功したかどうか (TRUE/FALSE)
3.Tips
生成されたログファイルの情報を分析することで、改善すべきテスト個所の解析がおこなえます。ここでは、テストの実行時間が長くなる理由にフォーカスした分析結果の例を紹介します。説明にあるグラフは、ログファイルのデータを基にExcelでグラフ化したものになります。(※パフォーマンス測定には、自動でグラフ化する機能はありません)
イベント処理の割合
イベントにかかった時間の評価によって、どのイベントタイプの処理にもっとも時間がかかっているかを確認できます。
下図のグラフの例では、オブジェクトの検出(repo)がテスト実行時間の約80%を占め、マウスクリック(input-click)とキーボードシーケンス(input-sequence)のアクションが全体の約20%を占めていることが分かります。この場合、どのオブジェクトとアクションに一番時間がかかっているかを確認するために、RepositoryトレーサーとAllInputトレーサーのログを使用して、さらにテストを実行することをおすすめします。
オブジェクトの検索時間
Repositoryトレーサーのログを使用することで、どのオブジェクトの検索に時間がかかっているのかを分析することができます。このログにより、どのオブジェクトを確認すべきか (例えば、RanoreXPathを調整すべきか) が分かります。
テスト コンテナー/モジュールの実行時間
特定のテストコンテナー(テストケースなど)やモジュールの実行にかかっている時間も、有用な測定基準です。テストで実行に時間がかかっている場所を確認し、該当モジュールやアクショなどの改善をおこなえます。
パフォーマンス測定によって得られる、テスト実行時の情報(オブジェクトの検索時間や、アプリケーションの操作時間など)を基にテストのメンテナンスや、アプリケーションのボトルネックの解析などに役立てることができます。