AXE でテストを作成する
TAEF では、評価実行エンジン (AXE) で実行されるテストの作成がサポートされています。
TAEF での AXE サポートにより、TAEF は AXE 評価マニフェストを実行できます。 これは主に、コマンド ライン EXE として記述されたレガシ テストを XML ベースの AXE 評価マニフェストにラップするように設計されています。 このようにして、これらのレガシ テストは TAEF を使用して実行可能になり、テストを TAEF ネイティブ、マネージド、またはスクリプトのテストに書き換える必要はありません。
AXE テストのレイアウト
通常の TAEF テスト ファイルには複数のテスト クラスとテストを含めることができますが、マニフェストが 1 つの実行可能ファイルをラップするため、TAEF AXE テスト (AXE 評価マニフェストによって定義されるテスト) には 1 つのテストのみを含めることができます。 したがって、TAEF AXE テスト ファイルでテストを表示すると、常にテスト ファイル (表示している AXE 評価マニフェスト) に 1 つのテスト クラスと 1 つのテストが含まれていることがわかります。
te Examples\AXE.Basic.Examples.manifest /list
Test Authoring and Execution Framework v2.7 Build 6.2.7918.0 (1320) For x64
D:\enddev2.binaries.amd64chk\Test\CuE\TestExecution\Examples\AXE.Basic.Examples.manifest
Basic
Basic::Basic
AXE テストでは、セットアップまたはクリーンアップ メソッドもサポートされていません。
AXE テストを作成する
AXE テストの場合、TAEF は AXE 評価マニフェスト ファイル形式を使用します。
最小 AXE テスト ファイル
AXE 評価マニフェスト スキーマは、高度なシナリオに対する複雑な評価の非常に豊富な説明をサポートするように設計されています。 ただし、必須ノードが非常に少ないため、マニフェストは非常に単純な場合もあります。 次の例は、すべての必須タグを含む最小限のマニフェストを示しています。
1<?xml version="1.0" encoding="utf-8"?>
2<AxeAssessmentManifest xmlns="http://www.microsoft.com/axe/assessment/manifest">
3 <VersionedId>
4 <Guid>{ABCBFDE6-D731-4030-9049-E7CAAB6A6EEE}</Guid>
5 <Version>
6 <Major>1</Major>
7 <Minor>0</Minor>
8 <Build>0</Build>
9 <Revision>0</Revision>
10 </Version>
11 </VersionedId>
12 <MinimumAxeVersionRequired>
13 <Version>
14 <Major>1</Major>
15 <Minor>0</Minor>
16 <Build>1</Build>
17 <Revision>0</Revision>
18 </Version>
19 </MinimumAxeVersionRequired>
20 <Description>
21 <ProgrammaticName>Basic</ProgrammaticName>
22 <DisplayName>Basic Examples</DisplayName>
23 <ToolTip>Sample Basic Examples Assessment Tooltip</ToolTip>
24 </Description>
25 <Meta>
26 <ExitValueMeaning> <ZeroIsSuccess/> </ExitValueMeaning>
27 </Meta>
28 <Execution>
29 <CreateProcess>
30 <ApplicationName>AssessmentSample.exe</ApplicationName>
31 </CreateProcess>
32 </Execution>
33</AxeAssessmentManifest>
AXE テスト評価ファイルは XML ファイルです。 そのため、通常の XML ヘッダー (1 行目) で始まります。
2 行目では、XML ファイルが AXE マニフェストとして識別されます。
3 行目から 10 行目は、テストを一意に識別するために使用できる ID とバージョンをテストに提供します。
12 行目から 19 行目では、このマニフェストを解釈してテストを実行するために必要な AXE の最小バージョンを指定します。
20 行目から 24 行目では、人間が判読できる名前と簡単なヒントの説明をテストします。 テスト プロパティを表示すると、テスト クラス名とテスト名が ProgrammaticName 要素の値に対応します。
D:\enddev2.binaries.amd64chk\WexTest\CuE\TestExecution>te Examples\AXE.Basic.Examples.manifest /list
Test Authoring and Execution Framework v2.7 Build 6.2.7918.0 (1320) For x64
D:\enddev2.binaries.amd64chk\Test\CuE\TestExecution\Examples\AXE.Basic.Examples.manifest
Basic
Basic::Basic
人間が判読できる名前が DisplayName プロパティに割り当てられます。 この割り当ては、内部 TAEF アーキテクチャと設計によるものです。
Te Examples\AXE.Basic.Examples.manifest /listproperties
Test Authoring and Execution Framework v2.7 Build 6.2.7918.0 (1320) For x64
D:\enddev2.binaries.amd64chk\Test\CuE\TestExecution\Examples\AXE.Basic.Examples.manifest
Property[TaefTestType] = AxeAssessment
Basic
Basic::Basic
Property[DisplayName] = Basic Examples
Property[ProgrammaticName] = Basic
Property[RunAs] = Elevated
Property[ToolTip] = Sample Basic Examples Assessment Tooltip
この評価では、AssessmentSample.exeという名前の単純で既存のテスト EXE がラップされます。 AssessmentSample.exeは、一般的な規則を使用して、成功した場合は 0 のプロセス終了コードを返し、失敗の場合は 0 以外の値を返します。
25 行目から 27 行目は、0 の終了値がテストに成功したことを意味し、他の値が失敗したことを AXE と TAEF に伝えます。
最後に、28 行目から 32 行目は、 Win32 API CreateProcess() を使用してAssessmentSample.exeを実行 するように AXE に指示します。
AXE テスト ファイルでのメタデータの使用
他の TAEF テストと同様に、TAEF AXE テストにメタデータを適用することもできます。 次に示す例を考えてみましょう。
1<?xml version="1.0" encoding="utf-8"?>
2<AxeAssessmentManifest xmlns="http://www.microsoft.com/axe/assessment/manifest">
3 <VersionedId>
4 <Guid>{F310F3F6-F786-4118-8A18-BC020C7D2521}</Guid>
5 <Version>
6 <Major>1</Major>
7 <Minor>0</Minor>
8 <Build>0</Build>
9 <Revision>0</Revision>
10 </Version>
11 </VersionedId>
12 <MinimumAxeVersionRequired>
13 <Version>
14 <Major>1</Major>
15 <Minor>0</Minor>
16 <Build>1</Build>
17 <Revision>0</Revision>
18 </Version>
19 </MinimumAxeVersionRequired>
20 <Description>
21 <ProgrammaticName>CustomMetadataExamples</ProgrammaticName>
22 <DisplayName>Custom Metadata Examples</DisplayName>
23 <ToolTip>Sample Custom Metadata Examples Assessment Tooltip</ToolTip>
24 </Description>
25 <Properties>
26 <Owner>Someone</Owner>
27 <Priority>1</Priority>
28 <Parallel>false</Parallel>
29 </Properties>
30 <Meta>
31 <ExitValueMeaning> <ZeroIsSuccess/> </ExitValueMeaning>
32 </Meta>
33 <Execution>
34 <CreateProcess>
35 <ApplicationName>AssessmentSample.exe</ApplicationName>
36 </CreateProcess>
37 </Execution>
38</AxeAssessmentManifest>
25 行目から 29 行目は、TAEF 標準メタデータとカスタム メタデータを AXE テストに適用する方法を示しています。 AxeAssessmentManifest XML ノードの下にはプロパティノードがあります。 プロパティノードの下の単一レベルの XML タグは、メタデータ (プロパティ) として認識されます。 プロパティの単一レベルの XML タグはすべてプロパティ名として解釈され、そのテキスト値はプロパティ値として解釈されます。 上の例では、 Owner はプロパティ名として、Someone はプロパティ値として解釈されます。 これらの要素にテキストのない XML タグは、 値が空の文字列 (<SimpleTagWithNoText/>など) と等しい要素として解釈されます。 プロパティの下の複数レベルの XML タグは無視されます (たとえば、次のようなマルチレベル タグ
<VerifyOSVersion>
<Major>6</Major>
<Minor>0</Minor>
<Build>0</Build>
</VerifyOSVersion>
は無視されます)。 他の TAEF テストと同様に、/listProperties オプションを使用して TAEF メタデータを表示します。
te Examples\AXE.CustomMetadata.Examples.manifest /listProperties
Test Authoring and Execution Framework v2.7 Build 6.2.7918.0 (1320) For x64
D:\enddev2.binaries.amd64chk\Test\CuE\TestExecution\Examples\AXE.CustomMetadata.Examples.manifest
Property[TaefTestType] = AxeAssessment
CustomMetadataExamples
CustomMetadataExamples::CustomMetadataExamples
Property[DisplayName] = Custom Metadata Examples
Property[Owner] = Someone
Property[Parallel] = false
Property[Priority] = 1
Property[ProgrammaticName] = CustomMetadataExamples
Property[RunAs] = Elevated
Property[ToolTip] = Sample Custom Metadata Examples Assessment Tooltip
AXE テストメタデータサポートの制限事項
Note
すべての TAEF 標準テスト メタデータを TAEF AXE テストで使用できるわけではありません。
- ActivationContext や ThreadingModel など、プロセスが実行される環境の変更を目的としたメタデータはすべて、AXE テストでは機能しません。 AXE は TAEF のプロセスを使用してテストを実行しませんが、AXE テスト ファイル (AXE 評価マニフェスト) で指定された実行可能プログラムを実行する新しいプロセスを作成します。 同じ理由で、データ ドリブン TAEF テスト (DataSource プロパティ) も AXE TAEF テストでは機能しません。
- 同様に、TAEF AXE テスト ファイルは 1 つのテストのみをカプセル化できるため、ExecutionGroup などの他のテストに関してテストの動作を変更する TAEF メタデータも機能しません。
- AXE アーキテクチャにより、AXE は昇格されたプロセスのみを実行できます。 したがって、上記の TAEF AXE テストのプロパティからわかるように、すべての TAEF AXE テストには Property[RunAs] = Elevated が適用されています。
ランタイム パラメーターを含む AXE テスト ファイル
TAEF AXE テストでは、ランタイム パラメーターもサポートされます。 TAEF のランタイム パラメーターを AXE テストで使用するには、実行可能プログラムに渡すパラメーター名を AXE テスト ファイルで定義する必要があります。
このドキュメントでは、使用可能なすべての AXE マニフェスト パラメーター機能のすべての詳細について説明することはできません。 その情報については、AXE 評価のドキュメントを参照してください。 このドキュメントでは、最も一般的で便利なパラメーター アプリケーションのみを取り上げます。
次の例は、より複雑な AXE 評価マニフェストを示しています。
1<?xml version="1.0" encoding="utf-8"?>
2<AxeAssessmentManifest xmlns="http://www.microsoft.com/axe/assessment/manifest">
3 <VersionedId>
4 <Guid>{B63B2FFF-EDEB-41FB-92EA-529CE4A46D20}</Guid>
5 <Version>
6 <Major>1</Major>
7 <Minor>0</Minor>
8 <Build>0</Build>
9 <Revision>0</Revision>
10 </Version>
11 </VersionedId>
12 <MinimumAxeVersionRequired>
13 <Version>
14 <Major>1</Major>
15 <Minor>0</Minor>
16 <Build>1</Build>
17 <Revision>0</Revision>
18 </Version>
19 </MinimumAxeVersionRequired>
20 <Description>
21 <ProgrammaticName>ExplicitRuntimeParameters</ProgrammaticName>
22 <DisplayName>Explicit Runtime Parameters</DisplayName>
23 <ToolTip>Sample Explicit Runtime Parameters Assessment Tooltip</ToolTip>
24 </Description>
25 <ParameterDefinitions>
26 <ParameterDefinition>
27 <Description>
28 <ProgrammaticName>SimpleParameter</ProgrammaticName>
29 <DisplayName>Simple parameter</DisplayName>
30 <ToolTip>The is an example of a simple parameter.</ToolTip>
31 </Description>
32 <Type>
33 <String></String>
34 </Type>
35 <CommandLineFormat>{0}</CommandLineFormat>
36 </ParameterDefinition>
37 <ParameterDefinition>
38 <Description>
39 <ProgrammaticName>RequiredParameterWithoutDefaultValue</ProgrammaticName>
40 <DisplayName>Required parameter without a default value.</DisplayName>
41 <ToolTip>The is an example of a required parameter Without a default value.</ToolTip>
42 </Description>
43 <Required>True</Required>
44 <Type>
45 <Int></Int>
46 </Type>
47 <CommandLineFormat>{0}</CommandLineFormat>
48 </ParameterDefinition>
49 <ParameterDefinition>
50 <Description>
51 <ProgrammaticName>RequiredParameterWithDefaultValue</ProgrammaticName>
52 <DisplayName>Required parameter with a default value</DisplayName>
53 <ToolTip>The is an example of a required parameter With a default value.</ToolTip>
54 </Description>
55 <Required></Required>
56 <DefaultValue>"%AssessmentResultsPath%"</DefaultValue>
57 <Type>
58 <String></String>
59 </Type>
60 <CommandLineFormat>/RequiredParameterWithDefaultValue={0}</CommandLineFormat>
61 </ParameterDefinition>
62 </ParameterDefinitions>
63 <Meta>
64 <ExitValueMeaning> <ZeroIsSuccess/> </ExitValueMeaning>
65 </Meta>
66 <Execution>
67 <CreateProcess>
68 <ApplicationName>AssessmentSample.exe</ApplicationName>
69 </CreateProcess>
70 </Execution>
71</AxeAssessmentManifest>
25 行目から 62 行目は、TAEF と AXE が評価実行可能ファイルにデータを渡すために使用するパラメーターを記述するパラメーター定義です。
最も単純なパラメーター定義は 、26 から 36 行目にあります。 これは、上で説明したマニフェストの Description セクションとまったく同じ必須の Description セクションで構成されています。 その後、パラメーターのデータ型を定義する Type タグが表示されます。 (サポートされているすべてのデータ型については、AXE 評価のドキュメントを参照してください)。
オプションの CommandLineFormat セクションでは、評価コマンド ラインに対して評価パラメーターを書式設定する方法について説明します。 この XML ノードには、有効な .NET 書式設定文字列である空でない文字列が含まれている必要があります。 評価パラメーターの値は、フォーマッタに渡される唯一のオブジェクトになります。 つまり、書式設定文字列には、インデックスが 0 の複合書式指定項目を 1 つだけ含める必要があります。 たとえば、-input {0}、/affinity:0x{0,X}、または -InputFile="{0}" があります。
次のパラメーターは 37 行目から 48 行目で定義され、必須のパラメーターです。 前のパラメーターとの定義の唯一の違いは、オプションのRequired タグです。 このタグは、AXE テストの実行中にユーザーがこのパラメーターを渡すことが AXE で想定されていることを示します。 このパラメーターを省略すると、パラメーターのデータ型の既定値が使用されます (たとえば、INT の場合は 0、String の場合は空の文字列など)。
最後に、この例の最後のパラメーターは、パラメーターの既定値を記述するオプションの DefaultValue タグを指定します。 このノードが空白の場合、パラメーターのデータ型の既定値が既定値として使用されます。 上記の例では、"%AssessmentResultsPath%" が使用されています。これは、評価の実行が開始されたときに AXE によって設定される環境変数です。 ここでも、サポートされているすべての AXE 環境変数については、AXE 評価のドキュメントを参照してください。
パラメーターは、定義の逆の順序で実行可能ファイルに渡されます。ファイルで最後に定義されたパラメーターは、最初に実行可能ファイルに渡されます。
TAEF AXE ランタイム パラメーター テストは、(/p コマンド ライン オプションを使用して) ランタイム パラメーターを使用する他の TAEF テストとして実行します。
te AXE.ExplicitRuntimeParameters.Examples.manifest /p:SimpleParameter=Test1 /p:RequiredParameterWithoutDefaultValue=10
Test Authoring and Execution Framework v2.7 Build 6.2.7918.0 (1320) For x64
ExplicitRuntimeParameters::ExplicitRuntimeParameters
AssessmentSample.exe is simple application for AXE assessment demo.
It just echoes the arguments passed to it to the console.
Parameters passed from the command line:
Argument[0]=AssessmentSample.exe
Argument[1]=10
Argument[2]=/RequiredParameterWithDefaultValue=C:\Results\JobResults_DEVRH_2011-0129_0250-12.394\0
Argument[3]=Test1
FileName: C:\Results\JobResults_DEVRH_2011-0129_0250-12.394\JobResults_DEVRH_2011-0129_0250-12.394.xml
Saved output file to: D:\enddev2.binaries.amd64chk\Test\CuE\TestExecution\WexLogFileOutput\
000001_~ExplicitRuntimeParameters_JobResults_DEVRH_2011-0129_0250-12.394.xml
EndGroup: ExplicitRuntimeParameters::ExplicitRuntimeParameters [Passed]
AXE テストのマシン間の実行
コンピューター間の実行シナリオでは、TAEF はテストの実行を成功させるためにテストと共にデプロイする必要があるテストの依存関係を特定しようとします。 AXE テスト ファイルの場合、TAEF は TAEF AXE テストを実行するために、同じフォルダー内のすべてのファイルをリモート コンピューターにコピーします。
ARM プラットフォームに対する AXE テストのマシン間の実行は、現在サポートされていません。
TAEF AXE サポートの依存関係
AXE は Windows に付属していません。 AXE テストを実行できるようにするには、axecore.dll と Microsoft.Assessment.dll を TAEF または TAEF AXE テスト ディレクトリにコピーする必要があります。