Criando testes no AXE
O TAEF dá suporte à criação de testes executados com o AXE (Mecanismo de Execução de Avaliação).
O suporte a AXE no TAEF permite que o TAEF execute manifestos de avaliação axe. Ele foi projetado principalmente para encapsular testes herdados, escritos como EXEs de linha de comando, em manifestos de avaliação AXE baseados em XML. Dessa forma, esses testes herdados se tornam executáveis com TAEF sem precisar reescrever os testes para testes nativos, gerenciados ou de script do TAEF.
Layout de testes AXE
Embora arquivos de teste TAEF regulares possam conter várias classes de teste e testes, os testes TAEF AXE (testes definidos por um manifesto de avaliação AXE) podem conter apenas um único teste porque o manifesto encapsula um único executável. Assim, ao exibir testes em um arquivo de teste TAEF AXE, você sempre verá que o arquivo de teste (que é o manifesto de avaliação axe que você está exibindo), contém uma única classe de teste e um único teste:
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
Os testes AXE também não dão suporte a nenhum método de instalação ou limpeza.
Criação de testes AXE
Para testes AXE, o TAEF usa o formato de arquivo de manifesto de avaliação AXE.
Arquivo de teste axe mínimo
O esquema de manifesto de avaliação axe foi projetado para dar suporte a descrições muito avançadas de avaliação complexa para cenários sofisticados. No entanto, os manifestos também podem ser muito simples, pois há muito poucos nós obrigatórios. O exemplo a seguir mostra um manifesto mínimo que inclui todas as marcas obrigatórias.
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>
O arquivo de avaliação de teste AXE é um arquivo XML. Portanto, ele começa com um cabeçalho XML comum (linha 1).
A linha 2 identifica o arquivo XML como um manifesto AXE.
As linhas 3 a 10 fornecem ao teste uma identidade e uma versão que podem ser usadas para identificar exclusivamente o teste.
A linha 12 - 19 especifica a versão mínima do AXE necessária para interpretar esse manifesto e executar o teste.
As linhas 20 a 24 dão ao teste um nome legível humano e uma breve descrição da dica de ferramenta. Observe que, ao exibir as propriedades de teste, o nome da classe de teste e o nome do teste corresponderão ao valor do elemento 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
O nome legível humano é atribuído à propriedade DisplayName . Essa atribuição ocorre devido à arquitetura e ao design do TAEF interno.
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
Essa avaliação encapsula um EXE de teste simples e existente chamado AssessmentSample.exe. AssessmentSample.exe usa a convenção comum para retornar um código de saída de processo igual a zero para êxito e um valor diferente de zero para falha.
As linhas 25 a 27 dizem a AXE e TAEF que um valor de saída igual a zero significa que o teste foi bem-sucedido e que qualquer outro valor significa falha.
Por fim, as linhas 28 a 32 instruem o AXE a usar a API CreateProcess() do Win32 para executar AssessmentSample.exe.
Usando metadados no arquivo de teste AXE
Assim como acontece com qualquer outro teste taef, você também pode aplicar metadados a um teste TAEF AXE. Considere o exemplo mostrado abaixo.
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>
As linhas 25 a 29 demonstram como os metadados padrão e personalizados do TAEF podem ser aplicados a um teste AXE. No nó XML AxeAssessmentManifest há um nó Propriedades . As marcas XML de nível único no nó Propriedades são reconhecidas como metadados (propriedades). Todas as marcas XML de nível único em Propriedades são interpretadas como nomes de propriedade e seus valores de texto são interpretados como os valores de propriedade. No exemplo acima, Owner é interpretado como um nome de propriedade e Alguém como um valor de propriedade. Marcas XML sem texto nesses elementos são interpretadas como elementos cujo valor é igual à cadeia de caracteres vazia (por exemplo, <SimpleTagWithNoText/>). As marcas XML de vários níveis em Propriedades são ignoradas (por exemplo, uma marca de vários níveis como
<VerifyOSVersion>
<Major>6</Major>
<Minor>0</Minor>
<Build>0</Build>
</VerifyOSVersion>
será ignorado). Semelhante a qualquer outro teste taef, você usa a opção /listProperties para exibir metadados 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
Limitações de suporte a metadados de testes AXE
Observação
Nem todos os metadados de teste padrão TAEF podem ser usados com testes DE EIXO TAEF.
- Todos os metadados destinados a modificar o ambiente no qual o processo é executado, como ActivationContext e ThreadingModel, não funcionarão com testes AXE. O AXE não usa o processo do TAEF para executar os testes, mas cria um novo processo no qual executa o programa executável especificado pelo arquivo de teste AXE (manifesto de avaliação AXE). Pelo mesmo motivo, o teste TAEF controlado por dados (propriedade DataSource ) também não funciona com testes DE TAEF AXE.
- Da mesma forma, como os arquivos de teste TAEF AXE podem encapsular apenas um único teste, os metadados TAEF que modificam o comportamento de um teste em relação a outros testes, como ExecutionGroup, também não funcionarão.
- Devido à arquitetura AXE, o AXE só pode executar processos elevados. Portanto, como você viu nas propriedades dos testes TAEF AXE acima, cada teste TAEF AXE tem Property[RunAs] = Elevated aplicado.
Arquivo de teste AXE com parâmetros de runtime
Os testes TAEF AXE também dão suporte a parâmetros de runtime. Para usar os parâmetros de runtime do TAEF com testes AXE, os nomes de parâmetro que devem ser passados para o programa executável precisam ser definidos no arquivo de teste AXE.
Está além do escopo deste documento descrever todos os possíveis recursos de parâmetro de manifesto AXE em todos os detalhes. Para obter essas informações, consulte a documentação de avaliação do AXE. Este documento abrangerá apenas os aplicativos de parâmetro mais comuns e úteis.
O exemplo a seguir mostra um manifesto de avaliação AXE mais complexo.
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>
As linhas 25 a 62 são definições de parâmetro que descrevem os parâmetros usados por TAEF e AXE para passar dados para o executável de avaliação.
A definição de parâmetro mais simples está nas linhas 26 a 36. Ele consiste em uma seção de Descrição obrigatória exatamente igual à seção Descrição do manifesto, que é explicada acima. Em seguida, você verá uma marca Tipo que define o tipo de dados de parâmetro. (Consulte a documentação de avaliação do AXE para todos os tipos de dados com suporte.)
A seção opcional CommandLineFormat descreve como um parâmetro de avaliação é formatado para a linha de comando de avaliação. Esse nó XML deve conter uma cadeia de caracteres não vazia que seja uma cadeia de caracteres de formatação válida do .NET. O valor do parâmetro de avaliação será o único objeto passado para o formatador. Isso significa que a cadeia de caracteres de formatação deve conter um e apenas um item de formatação composta com índice zero. Alguns exemplos são: -input {0}, /affinity:0x{0,X}ou -InputFile="{0}".
O próximo parâmetro é definido nas linhas 37 a 48 e é um parâmetro obrigatório. A única diferença em sua definição do parâmetro anterior é uma marca Obrigatória opcional. Essa marca indica que o AXE espera que o usuário passe esse parâmetro durante a execução do teste AXE. Se esse parâmetro for omitido, o valor padrão do tipo de dados do parâmetro será usado (por exemplo, zero para INT, cadeia de caracteres vazia para String etc.).
Por fim, o último parâmetro no exemplo especifica uma marca DefaultValue opcional, que descreve o valor padrão do parâmetro. Se esse nó estiver em branco, o valor padrão do tipo de dados do parâmetro será usado como o valor padrão. O exemplo acima usa "%AssessmentResultsPath%", que é uma variável de ambiente definida pelo AXE quando a avaliação começa a ser executada. Novamente, consulte a documentação de avaliação do AXE para todas as variáveis de ambiente AXE com suporte.
Os parâmetros são passados para o executável na ordem inversa de sua definição – o parâmetro definido no arquivo por último é passado para o executável primeiro.
Você executa os testes de parâmetros de runtime DO TAEF AXE como qualquer outro teste TAEF que usa parâmetros de runtime (usando as opções de linha de comando /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]
Execução entre máquinas de teste axe
Para um cenário de execução entre máquinas, o TAEF tenta determinar as dependências de teste que precisam ser implantadas junto com o teste para execução bem-sucedida do teste. No caso de um arquivo de teste AXE, o TAEF copiará todos os arquivos que estão na mesma pasta com um teste TAEF AXE para um computador remoto para execução.
Atualmente, não há suporte para a execução entre computadores de testes AXE em uma plataforma Arm.
Dependências de suporte do TAEF AXE
O AXE não é fornecido com o Windows. Para poder executar testes AXE, você precisa copiar axecore.dll e Microsoft.Assessment.dll para o DIREtório de teste TAEF ou TAEF AXE.