Erstellungstests in AXE
TAEF unterstützt Erstellungstests, die mit der Assessment Execution Engine (AXE) ausgeführt werden.
Die AXE-Unterstützung in TAEF ermöglicht TAEF das Ausführen von AXE-Bewertungsmanifesten. Es ist in erster Linie dafür konzipiert, legacy-Tests, die als Befehlszeilen-EXEs geschrieben wurden, in XML-basierte AXE-Bewertungsmanifeste umzuschließen. Auf diese Weise werden diese Legacytests mit TAEF ausführbar, ohne die Tests in native, verwaltete TAEF- oder Skripttests umschreiben zu müssen.
AXE-Testlayout
Obwohl reguläre TAEF-Testdateien mehrere Testklassen und Tests enthalten können, können TAEF AXE-Tests (Tests, die von einem AXE-Bewertungsmanifest definiert werden) nur einen einzelnen Test enthalten, da das Manifest eine einzelne ausführbare Datei umschließt. Wenn Sie Tests in einer TAEF AXE-Testdatei anzeigen, sehen Sie daher immer, dass die Testdatei (das axe-Bewertungsmanifest, das Sie anzeigen) eine einzelne Testklasse und einen einzelnen Test enthält:
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-Tests unterstützen auch keine Setup- oder Bereinigungsmethoden.
Erstellen von AXE-Tests
Für AXE-Tests verwendet TAEF das AXE-Bewertungsmanifestdateiformat.
Minimale AXE-Testdatei
Das AXE-Bewertungsmanifestschema wurde entwickelt, um sehr umfassende Beschreibungen komplexer Bewertungen für komplexe Szenarien zu unterstützen. Die Manifeste können jedoch auch sehr einfach sein, da es nur sehr wenige obligatorische Knoten gibt. Das folgende Beispiel zeigt ein minimales Manifest, das alle obligatorischen Tags enthält.
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>
Die AXE-Testbewertungsdatei ist eine XML-Datei. Sie beginnt also mit einem normalen XML-Header (Zeile 1).
Zeile 2 identifiziert die XML-Datei als AXE-Manifest.
Die Zeilen 3 bis 10 geben dem Test eine Identität und Version, die verwendet werden kann, um den Test eindeutig zu identifizieren.
In Zeile 12 bis 19 wird die Mindestversion von AXE angegeben, die zum Interpretieren dieses Manifests und zum Ausführen des Tests erforderlich ist.
Die Zeilen 20 bis 24 geben dem Test einen lesbaren Namen und eine kurze QuickInfo-Beschreibung. Beachten Sie, dass beim Anzeigen von Testeigenschaften der Name der Testklasse und der Testname dem Wert des ProgrammaticName-Elements entsprechen:
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
Der lesbare Name wird der DisplayName-Eigenschaft zugewiesen. Diese Zuweisung ist auf die interne TAEF-Architektur und das interne Design zurückzuführen.
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
Diese Bewertung umschließt eine einfache und vorhandene Test-EXE mit dem NamenAssessmentSample.exe. AssessmentSample.exe verwendet die allgemeine Konvention, um einen Prozessausgangscode von null für Erfolg und einen Wert ungleich 0 für Fehler zurückzugeben.
Die Zeilen 25 bis 27 teilen AXE und TAEF mit, dass ein Exitwert von 0 bedeutet, dass der Test erfolgreich war und dass jeder andere Wert einen Fehler bedeutet.
Schließlich weisen die Zeilen 28 bis 32 AXE an, die Win32-API CreateProcess() zum Ausführen AssessmentSample.exezu verwenden.
Verwenden von Metadaten in der AXE-Testdatei
Wie bei jedem anderen TAEF-Test können Sie metadaten auch auf einen TAEF AXE-Test anwenden. Sehen Sie sich das unten gezeigte Beispiel an.
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>
Die Zeilen 25 bis 29 veranschaulichen, wie TAEF-Standard- und benutzerdefinierte Metadaten auf einen AXE-Test angewendet werden können. Unter dem XML-Knoten AxeAssessmentManifest befindet sich ein Eigenschaftenknoten . XML-Tags auf einer ebener Ebene unter dem Knoten Eigenschaften werden als Metadaten (Eigenschaften) erkannt. Alle XML-Tags auf einer Ebene unter Eigenschaften werden als Eigenschaftennamen interpretiert, und ihre Textwerte werden als Eigenschaftswerte interpretiert. Im obigen Beispiel wird Der Besitzer als Eigenschaftsname und jemand als Eigenschaftswert interpretiert. XML-Tags ohne Text in diesen Elementen werden als Elemente interpretiert, deren Wert der leeren Zeichenfolge entspricht (z. B. SimpleTagWithNoText/>).< XML-Tags mit mehreren Ebenen unter Eigenschaften werden ignoriert (z. B. ein Tag mit mehreren Ebenen wie
<VerifyOSVersion>
<Major>6</Major>
<Minor>0</Minor>
<Build>0</Build>
</VerifyOSVersion>
wird ignoriert. Ähnlich wie bei allen anderen TAEF-Tests verwenden Sie die Option /listProperties , um TAEF-Metadaten anzuzeigen:
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
Einschränkungen bei der Unterstützung von AXE-Tests für Metadaten
Hinweis
Nicht alle TAEF-Standardtestmetadaten können mit TAEF AXE-Tests verwendet werden.
- Alle Metadaten, die darauf abzielen, die Umgebung zu ändern, in der der Prozess ausgeführt wird, z. B. ActivationContext und ThreadingModel, funktionieren nicht mit AXE-Tests. AXE verwendet den TAEF-Prozess nicht zum Ausführen der Tests, sondern erstellt einen neuen Prozess, in dem das ausführbare Programm ausgeführt wird, das von der AXE-Testdatei (AXE-Bewertungsmanifest) angegeben wird. Aus dem gleichen Grund funktionieren datengesteuerte TAEF-Tests (DataSource-Eigenschaft ) auch nicht mit AXE TAEF-Tests.
- Da die TAEF AXE-Testdateien nur einen einzelnen Test kapseln können, funktionieren die TAEF-Metadaten, die das Verhalten eines Tests in Bezug auf andere Tests wie ExecutionGroup ändern, ebenfalls nicht.
- Aufgrund der AXE-Architektur kann AXE nur prozesse mit erhöhten Rechten ausführen. Wie Sie aus den obigen Eigenschaften von TAEF AXE-Tests gesehen haben, wird daher auf jeden TAEF AXE-Test Property[RunAs] = Elevated angewendet.
AXE-Testdatei mit Laufzeitparametern
TAEF AXE-Tests unterstützen auch Laufzeitparameter. Um die Laufzeitparameter von TAEF mit AXE-Tests zu verwenden, müssen die Parameternamen, die an das ausführbare Programm übergeben werden sollen, in der AXE-Testdatei definiert werden.
Es geht über den Rahmen dieses Dokuments hinaus, alle möglichen AXE-Manifestparameterfeatures in allen Details zu beschreiben. Weitere Informationen finden Sie in der AXE-Bewertungsdokumentation. In diesem Dokument werden nur die gängigsten und nützlichsten Parameteranwendungen behandelt.
Das folgende Beispiel zeigt ein komplexeres AXE-Bewertungsmanifest.
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>
Die Zeilen 25 bis 62 sind Parameterdefinitionen, die die Parameter beschreiben, die von TAEF und AXE zum Übergeben von Daten an die ausführbare Datei der Bewertung verwendet werden.
Die einfachste Parameterdefinition befindet sich in den Zeilen 26 bis 36. Es besteht aus einem obligatorischen Beschreibungsabschnitt , der genau dem Abschnitt Beschreibung für das Manifest entspricht, der oben erläutert wird. Anschließend wird ein Type-Tag angezeigt, das den Parameterdatentyp definiert. (Informationen zu allen unterstützten Datentypen finden Sie in der AXE-Bewertungsdokumentation.)
Im optionalen Abschnitt CommandLineFormat wird beschrieben, wie ein Bewertungsparameter für die Bewertungsbefehlszeile formatiert wird. Dieser XML-Knoten muss eine nicht leere Zeichenfolge enthalten, die eine gültige .NET-Formatierungszeichenfolge ist. Der Wert des Bewertungsparameters ist das einzige Objekt, das an den Formatierer übergeben wird. Dies bedeutet, dass die Formatierungszeichenfolge nur ein zusammengesetztes Formatierungselement mit Index 0 enthalten muss. Einige Beispiele sind: -input {0}, /affinity:0x{0,X} oder -InputFile="{0}".
Der nächste Parameter wird in den Zeilen 37 bis 48 definiert und ist ein erforderlicher Parameter. Der einzige Unterschied in der Definition vom vorherigen Parameter ist ein optionales Erforderlich-Tag . Dieses Tag gibt an, dass AXE erwartet, dass der Benutzer diesen Parameter während der AXE-Testausführung übergibt. Wenn dieser Parameter weggelassen wird, wird der Standardwert für den Datentyp des Parameters verwendet (z. B. Null für INT, leere Zeichenfolge für String usw.).
Schließlich gibt der letzte Parameter im Beispiel ein optionales DefaultValue-Tag an, das den Standardwert des Parameters beschreibt. Wenn dieser Knoten leer ist, wird der Standardwert für den Datentyp des Parameters als Standardwert verwendet. Im obigen Beispiel wird "%AssessmentResultsPath%" verwendet. Hierbei handelt es sich um eine Umgebungsvariable, die von AXE festgelegt wird, wenn die Bewertung mit der Ausführung beginnt. Lesen Sie auch hier die AXE-Bewertungsdokumentation für alle unterstützten AXE-Umgebungsvariablen.
Die Parameter werden in der umgekehrten Reihenfolge ihrer Definition an die ausführbare Datei übergeben. Der Parameter, der zuletzt in der Datei definiert ist, wird zuerst an die ausführbare Datei übergeben.
Sie führen die TAEF AXE-Laufzeitparametertests wie alle anderen TAEF-Tests aus, die Laufzeitparameter verwenden (mithilfe der Befehlszeilenoptionen /p ):
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]
COMPUTERÜBERGREIFENDE AXE-Testausführung
Bei einem szenario mit der computerübergreifenden Ausführung versucht TAEF, die Testabhängigkeiten zu ermitteln, die zusammen mit dem Test für eine erfolgreiche Testausführung bereitgestellt werden müssen. Im Fall einer AXE-Testdatei kopiert TAEF alle Dateien, die sich im selben Ordner befinden, mit einem TAEF AXE-Test auf einen Remotecomputer zur Ausführung.
Die computerübergreifende Ausführung von AXE-Tests auf einer Arm-Plattform wird derzeit nicht unterstützt.
TAEF AXE-Unterstützungsabhängigkeiten
AXE ist nicht im Lieferumfang von Windows. Um AXE-Tests ausführen zu können, müssen Sie axecore.dll und Microsoft.Assessment.dll entweder in TAEF oder Ihr TAEF AXE-Testverzeichnis kopieren.