Создание тестов в AXE
TAEF поддерживает создание тестов, выполняемых с помощью модуля выполнения оценки (AXE).
Поддержка AXE в TAEF позволяет TAEF выполнять манифесты оценки AXE. Он в первую очередь предназначен для упаковки устаревших тестов, написанных в виде EXE командной строки, в манифесты оценки AXE на основе XML. Таким образом, эти устаревшие тесты становятся исполняемыми с помощью TAEF без необходимости переписать тесты на собственные, управляемые или скриптовые тесты TAEF.
Макет тестов AXE
Хотя обычные файлы тестов TAEF могут содержать несколько тестовых классов и тестов, тесты AXE TAEF (тесты, определенные манифестом оценки AXE) могут содержать только один тест, так как манифест заключает в себя один исполняемый файл. Таким образом, при просмотре тестов в тестовом файле TAEF AXE вы всегда увидите, что тестовый файл (который является просматриваемой вами манифестом оценки AXE) содержит один класс теста и один тест:
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 предоставляют тесту удостоверение и версию, которые можно использовать для уникальной идентификации теста.
В строках 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
Эта оценка содержит в оболочке простой и существующий тестовый EXE-файл с именемAssessmentSample.exe. AssessmentSample.exe использует общее соглашение для возврата кода завершения процесса с нулевым значением для успешного выполнения и ненулевым значением для сбоя.
Строки 25–27 сообщают AXE и TAEF, что выходное значение, равное нулю, означает, что тест прошел успешно, а любое другое значение означает сбой.
Наконец, строки 28–32 указывают AXE использовать Win32 API CreateProcess() для выполнения AssessmentSample.exe.
Использование метаданных в тестовом файле 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. В узле XML AxeAssessmentManifest находится узел Свойства . Одноуровневые XML-теги в узле Свойства распознаются как метаданные (свойства). Все одноуровневые XML-теги в разделе Свойства интерпретируются как имена свойств, а их текстовые значения интерпретируются как значения свойств. В приведенном выше примере владелец интерпретируется как имя свойства, а Someone — как значение свойства. XML-теги без текста в этих элементах интерпретируются как элементы, значение которых равно пустой строке (например, <SimpleTagWithNoText/>). Многоуровневые XML-теги в разделе Свойства игнорируются (например, многоуровневый тег, например,
<VerifyOSVersion>
<Major>6</Major>
<Minor>0</Minor>
<Build>0</Build>
</VerifyOSVersion>
будет игнорироваться). Как и в случае с любыми другими тестами TAEF, для отображения метаданных TAEF используется параметр /listProperties :
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
Примечание
Не все метаданные стандартного теста TAEF можно использовать с тестами TAEF AXE.
- Все метаданные, направленные на изменение среды, в которой выполняется процесс, например ActivationContext и ThreadingModel, не будут работать с тестами AXE. AXE не использует процесс TAEF для выполнения тестов, но создает новый процесс, в котором запускает исполняемую программу, указанную в тестовом файле AXE (манифесте оценки AXE). По той же причине тестирование TAEF на основе данных (свойство DataSource ) также не работает с тестами AXE TAEF.
- Аналогичным образом, поскольку файлы тестов TAEF AXE могут инкапсулировать только один тест, метаданные TAEF, изменяющие поведение теста в отношении других тестов, таких как ExecutionGroup, также не будут работать.
- Благодаря архитектуре AXE AXE может выполнять только процессы с повышенными привилегиями. Таким образом, как вы видели из свойств тестов TAEF AXE выше, каждый тест TAEF AXE имеет свойство[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. Значение параметра оценки будет единственным объектом, передаваемым в форматировщик. Это означает, что строка форматирования должна содержать один и только один составной элемент форматирования с нулевым индексом. Примеры: -input {0}, /affinity:0x{0,X}или -InputFile="{0}".
Следующий параметр определяется в строках 37–48 и является обязательным параметром. Единственное отличие в его определении от предыдущего параметра — необязательный тег Required . Этот тег указывает, что AXE ожидает, что пользователь будет передавать этот параметр во время выполнения теста AXE. Если этот параметр опущен, будет использоваться значение по умолчанию для типа данных параметра (например, ноль для INT, пустая строка для String и т. д.).
Наконец, последний параметр в примере указывает необязательный тег DefaultValue , который описывает значение параметра по умолчанию. Если этот узел пуст, в качестве значения по умолчанию будет использоваться значение по умолчанию для типа данных параметра. В приведенном выше примере используется "%AssessmentResultsPath%", которая представляет собой переменную среды, которая задается AXE при запуске оценки. Опять же, ознакомьтесь с документацией по оценке AXE для всех поддерживаемых переменных среды AXE.
Параметры передаются исполняемому файлу в обратном порядке их определения. Параметр, определенный в последнем файле, сначала передается исполняемому файлу.
Тесты параметров среды выполнения TAEF AXE выполняются так же, как и любой другой тест TAEF, использующий параметры среды выполнения (с помощью параметров командной строки /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]
Тестирование AXE на нескольких компьютерах
Для сценария выполнения на нескольких компьютерах TAEF пытается определить зависимости теста, которые необходимо развернуть вместе с тестом для успешного выполнения теста. В случае тестового файла AXE TAEF скопирует все файлы, которые находятся в той же папке с тестом AXE TAEF, на удаленный компьютер для выполнения.
Выполнение тестов AXE на нескольких компьютерах на платформе Arm в настоящее время не поддерживается.
Зависимости поддержки TAEF AXE
AXE не поставляются вместе с Windows. Чтобы иметь возможность выполнять тесты AXE, необходимо скопировать axecore.dll и Microsoft.Assessment.dll в тестовый каталог TAEF или AXE TAEF.