テスト・プライオリタイゼーション・ツール

テスト・プライオリタイゼーション・ツールを使用すると、IA-32、インテル(R) EM64T および Itanium(R) ベースの Linux* および Windows* システムで、アプリケーションの以前の実行プロファイルを基に、アプリケーション・テストを選択して優先順位を設定し、プロファイルに基づく最適化を行うことができます。ツールは Mac OS* では IA-32 のみをサポートします

このツールは、テストがボトルネックとなる大規模なアプリケーションのテストと開発にかかる時間を大幅に節約します。

開発中に、アプリケーション・モジュールの変更が必要になることがあります。アプリケーションを変更する際、開発者は、アプリケーションが変更前と同じ機能やパフォーマンスを保っていることを確認するためにアプリケーション・テストを行いますが、これは手間のかかる作業です。テスト・プライオリタイゼーション・ツールは、アプリケーションのプロファイルが変更されたときに、ソフトウェア開発者がアプリケーション・テストを選択して優先順位を設定できるようにします。

特徴と利点

テスト・プライオリタイゼーション・ツールは、アプリケーションのコードカバレッジを基に、効率的なテスト階層を示します。このツールを使用する利点は次のとおりです。

このツールを実行するために必要なファイルの作成については、「プロファイルに基づく最適化の理解」および「プロファイルに基づく最適化の例」を参照してください。

テスト・プライオリタイゼーション・ツールの要件

アプリケーション・テストでテスト・プライオリタイゼーション・ツールを実行するには、以下のファイルが必要です。

警告

profmerge ユーティリティーは指定されたディレクトリーに存在するすべての .dyn ファイルをマージします。無関係な .dyn ファイルが存在していないことを確認してください。無関係な .dyn ファイルが存在していると、プロファイル情報に無効なプロファイル・データが含まれてしまいます。この結果、不適切なカバレッジ情報が生成され、最適化されたコードのパフォーマンスに悪影響を与えることがあります。

ツールの構文は次のとおりです。

テスト・プライオリタイゼーション・ツールの構文

tselect -dpi_list file

-dpi_list は、すべての .dpi ファイルのリストを含むリストファイルへのパスを設定する、必須のツールオプションです。他のすべてのコマンドはオプションです。

Windows のみ: フォワードスラッシュ ("/") から始まるコンパイラー・オプションとは異なり、ツールオプションはハイフン ("-") から始まります。

使用モデル

次の図は、テスト・プライオリタイゼーション・ツールの使用モデルを示したものです。

 

 

テスト・プライオリタイゼーション・ツールのオプション

次の表は、ツールが使用するオプションの一覧です。

オプション

デフォルト

説明

-help

 

ツールでサポートされているオプションを表示します。

-spi file

pgopti.spi

静的プロファイル情報 (.spi) ファイルのファイル名を指定します。

-dpi_list file

 

動的プロファイル情報 (.dpi) ファイル名が含まれるリストファイルの名前を指定します。

ファイルの各行には 1 つの .dpi ファイル名のみを記述し、オプションでファイル名の後にその実行時間を記述します。名前はテストを一意に識別しなければなりません。

-prof_dpi dir

 

出力レポートファイルのパス名を指定します。

-o file

 

出力レポートファイルのファイル名を指定します。

-comp file

 

処理するファイルのリストが含まれるファイル名を指定します。

-cutoff value

 

累積ブロックカバレッジがあらかじめ計算された合計カバレッジの value % に達した場合に終了します。value は 0.0 より大きく、100 以下でなければなりません (例えば、99.00)。value は 100 に設定できます。

-nototal

 

あらかじめ計算した合計カバレッジプロセスを無視します。

-mintime

 

テストの実行時間を最小限にします。各テストの実行時間は、dpi_list ファイルのテスト名が含まれる行に、テスト名に続いて dd:hh:mm:ss 形式で記述されていなければなりません。

-verbose

 

プログラム処理に関するより詳細な情報を生成します。

ツールの実行

次のステップは、IA-32 アーキテクチャー上でツールを実行する 1 つのシンプルな例を示しています。

  1. 次のようなコマンドを入力して、ディレクトリーを指定します。

set prof-dir=c:\myApp\prof-dir

  1. 次のようなコマンドを発行して、プログラムをコンパイルし、インストルメント済みバイナリーを生成します。

プラットフォーム

コマンド

Linux

icpc -prof-genx myApp.c

Windows

icl /Qprof-genx myApp.c

このコマンドは、プログラムをコンパイルして、インストルメント済みバイナリー myApp と対応する静的プロファイル情報ファイル pgopti.spi を生成します。

  1. 次のようなコマンドを発行して、無関係な .dyn ファイルが存在していないことを確認します。

rm prof-dir \*.dyn

  1. 次のようなコマンドを発行して、インストルメント済みファイルを実行します。

myApp < data1

コマンドは、インストルメント済みアプリケーションを実行し、上記の prof-dir で指定したディレクトリーに、拡張子 .dyn で 1 つ以上の新しい動的プロファイル情報ファイルを生成します。

  1. 次のようなコマンドを発行して、すべての .dyn ファイルを 1 つのファイルにマージします。

profmerge -prof_dpi Test1.dpi

profmerge ユーティリティーは、すべての .dyn ファイルを Test1 におけるアプリケーションの合計のプロファイル情報を表す 1 つのファイル (Test1.dpi) にマージします。

  1. 再度、次のようなコマンドを発行して、無関係な .dyn ファイルが存在していないことを確認します。

rm prof-dir \*.dyn

  1. 次のようなコマンドを発行して、インストルメント済みアプリケーションを実行し、上記の prof-dir で指定したディレクトリーに、拡張子 .dyn で 1 つ以上の新しい動的プロファイル情報ファイルを生成します。

myApp < data2

  1. 次のようなコマンドを発行して、すべての .dyn ファイルを 1 つのファイルにマージします。

profmerge -prof_dpi Test2.dpi

このステップで、profmerge ユーティリティーは、すべての .dyn ファイルを、Test2 におけるアプリケーションの合計のプロファイル情報を表す 1 つのファイル (Test2.dpi) にマージします。

  1. 再度、次のようなコマンドを発行して、無関係な .dyn ファイルが存在していないことを確認します。

rm prof-dir \*.dyn

  1. 次のようなコマンドを発行して、インストルメント済みアプリケーションを実行し、上記の prof-dir で指定したディレクトリーに、拡張子 .dyn で 1 つ以上の新しい動的プロファイル情報ファイルを生成します。

myApp < data3

  1. 次のようなコマンドを発行して、すべての .dyn ファイルを 1 つのファイルにマージします。

profmerge -prof_dpi Test3.dpi

このステップで、profmerge ユーティリティーは、すべての .dyn ファイルを、Test3 におけるアプリケーションの合計のプロファイル情報を表す 1 つのファイル (Test3.dpi) にマージします。

  1. tests_list という名前で 3 行のファイルを作成します。1 行目に Test1.dpi、2 行目に Test2.dpi、3 行目に Test3.dpi と記述します。

ツールの使用例

これらのファイルが作成されたら、次の例で示すように、prof-dir ディレクトリーでコマンドラインからテスト・プライオリタイゼーション・ツールを起動できます。

例 1: テストの数を最小限にする

次の例は、テスト実行の回数を最小限にする方法を示しています。

構文の例

tselect -dpi_list tests_list -spi pgopti.spi

-spi オプションは .spi ファイルへのパスを指定します。

次のサンプル出力は、テスト・プライオリタイゼーション・ツールの一般的な結果を示したものです。

サンプル出力

Total number of tests   =  3

Total block coverage    ~  52.17

Total function coverage ~  50.00

 

Num

%RatCvrg

%BlkCvrg

%FncCvrg

Test Name @ Options

1

87.50

45.65

37.50

Test3.dpi

2

100.00

52.17

50.00

Test2.dpi

この例の結果では、次の情報を提供します。

例 2: 実行時間を最小限にする

tests_list ファイルで、各テストの実行時間が次のように記述されていると仮定します。

サンプル出力

Test1.dpi 00:00:60:35

Test2.dpi 00:00:10:15

Test3.dpi 00:00:30:45

次のコマンドは、-mintime オプションを渡して実行時間を最小限にします。

構文例

tselect -dpi_list tests_list -spi pgopti.spi -mintime

次に、サンプル出力を示します。

サンプル出力

Total number of tests   =  3

Total block coverage    ~  52.17

Total function coverage ~  50.00

Total execution time    =  1:41:35

 

Num

elapsedTime

%RatCvrg

%BlkCvrg

%FncCvrg

Test Name @ Options

1

10:15

75.00

39.13

25.00

Test2.dpi

2

41:00

100.00

52.17

50.00

Test3.dpi

この例では、すべてのテストを続けて実行すると 1 時間 45 分 35 秒必要ですが、選択したテストを実行すると 41 分で同じ合計ブロックカバレッジを達成できることが示されています。

重要度付けが実行時間を最小限にすることを基に行われる場合のテストの順序 (最初に Test2、次に Test3) は、重要度付けがテストの数を最小限にすることを基に行われる場合と異なることがあります。上記の例 1 (最初に Test3、次に Test2) を参照してください。例 2 では、Test2 が実行時間あたりのカバレッジが最も高くなるテストなので、Test2 が実行する最初のテストとして選択されます。

他のオプションの使用

-cutoff オプションは、ツールが指定されたレベルの基本ブロックカバレッジに達した場合、ツールを終了します。次に、オプションの使用例を示します。

tselect -dpi_list tests_list -spi pgopti.spi -cutoff 85.00

ツールが上記の例で 85.00 の cutoff 値で実行された場合、45.65% のブロックカバレッジを達成する Test3 のみが選択されます。これは 3 つのテストすべてで達する合計ブロックカバレッジの 87.50% に相当します。

テスト・プライオリタイゼーション・ツールは、すべてのテストを実行して得られる合計カバレッジを決定するために、すべてのプロファイル情報を最初にマージします。-nototal オプションを使用すると、このステップはスキップされます。この場合、全体的なカバレッジは不明なまま、確実なカバレッジ情報のみがレポートされます。