⭐⭐ Junte-se a nós na SNIA SDC para o SMB3 IO Lab (28 de setembro a 1º de outubro de 2026), veja os próximos Eventos de Interoperabilidade
# Suítes de Teste de Protocolo do Windows
As **Suítes de Teste de Protocolo do Windows** fornecem testes de interoperabilidade contra a implementação das especificações abertas do Windows, incluindo Serviços de Arquivo, Gerenciamento de Identidade, Área de Trabalho Remota, etc.
Originalmente desenvolvidas para testes internos das Especificações Abertas da Microsoft, as Suítes de Teste de Protocolo da Microsoft foram amplamente utilizadas durante Plugfests e laboratórios de interoperabilidade para testar contra implementações de parceiros.
Uma Suíte de Teste avalia se uma implementação de protocolo ou família de protocolos atende a certos requisitos de interoperabilidade.
As Suítes de Teste não cobrem todos os requisitos de protocolo e de forma alguma certificam uma implementação, mesmo que todos os testes passem.
No entanto, cada suíte de teste fornece aos usuários uma indicação útil de interoperabilidade.
* **Suíte de Teste da Família File Server**. Ela foi projetada para testar implementações da família de protocolos de servidor de arquivos, incluindo [MS-SMB2], [MS-DFSC], [MS-SWN], [MS-FSRVP], [MS-FSA], [MS-FSCC], [MS-RSVD] e [MS-SQOS].
Para começar com a suíte de teste File Server, você pode consultar o [Guia do Usuário da Suíte de Teste File Server](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/FileServer/docs/FileServerUserGuide.md). Para criar um ambiente de teste descartável no Azure, use a [implantação automatizada do File Server no Azure](https://github.com/microsoft/windowsprotocoltestsuites/blob/main/TestSuites/FileServer/azure-automation/README.md).
* **Suíte de Teste da Família RDP Client**. Ela fornece testes de interoperabilidade para implementação de cliente dos protocolos da família RDP, incluindo [MS-RDPBCGR], [MS-RDPEDISP], [MS-RDPEDYC], [MS-RDPEGFX], [MS-RDPEGT], [MS-RDPEI], [MS-RDPEMT], [MS-RDPEUDP], [MS-RDPEUSB], [MS-RDPEVOR] e [MS-RDPRFX]. Para começar com a suíte de teste RDP Client, você pode consultar o [Guia do Usuário da Suíte de Teste RDP Client](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/RDP/Client/docs/RDP_ClientUserGuide.md)
* **Suíte de Teste da Família RDP Server**. Ela fornece testes de interoperabilidade para implementação de servidor dos protocolos da família RDP, incluindo [MS-RDPBCGR], [MS-RDPEDYC], [MS-RDPEMT] e [MS-RDPELE]. Para começar com a suíte de teste RDP Server, você pode consultar o [Guia do Usuário da Suíte de Teste RDP Server](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/RDP/Server/Docs/RDP_ServerUserGuide.md)
* **Suíte de Teste Kerberos Server**. Ela foi projetada para testar implementações de servidor dos protocolos Kerberos, incluindo [MS-KILE], [MS-KKDCP] e [MS-PAC]. Para começar com a suíte de teste Kerberos Server, você pode consultar o [Guia do Usuário da Suíte de Teste Kerberos Server](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/Kerberos/docs/Kerberos_ServerUserGuide.md)
* **Suíte de Teste SMBD Server**. Ela foi projetada para testar as implementações do protocolo SMB2&3 direct (RDMA), conforme especificado em [MS-SMBD] e [MS-SMB2]. Para começar com a suíte de teste SMBD Server, você pode consultar o [Guia do Usuário da Suíte de Teste SMBD Server](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-SMBD/docs/MS-SMBD_ServerUserGuide.md)
* **Suíte de Teste Branch Cache**. Ela foi projetada para testar as implementações dos protocolos [MS-PCCRTP], [MS-PCCRR], [MS-PCHC] e [MS-PCCRC]. Para começar com a suíte de teste Branch Cache, você pode consultar o [Guia do Usuário da Suíte de Teste Branch Cache](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/BranchCache/docs/BranchCache_UserGuide.md)
* **Suíte de Teste AZOD**. Ela foi projetada para testar as implementações do protocolo [MS-AZOD]. Para começar com a suíte de teste AZOD, você pode consultar o [Guia do Usuário da Suíte de Teste AZOD](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-AZOD/docs/MS-AZOD_ODUserGuide.md)
* **Suíte de Teste ADFamily**. Ela foi projetada para testar as implementações dos protocolos do Active Directory, incluindo [MS-ADA1], [MS-ADA2], [MS-ADA3], [MS-ADLS], [MS-ADSC], [MS-ADTS], [MS-APDS], [MS-DRSR], [MS-FRS2], [MS-LSAD], [MS-LSAT], [MS-SAMR] e [MS-NRPC]. Para começar com a suíte de teste ADFamily, você pode consultar o [Guia do Usuário da Suíte de Teste ADFamily](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/ADFamily/docs/ADFamily_ServerUserGuide.md)
* **Suíte de Teste ADFSPIP Client**. Ela foi projetada para testar as implementações da integração do ADFS Proxy e Web Application Proxy, conforme descrito em [MS-ADFSPIP]. Para começar com a suíte de teste ADFSPIP Client, você pode consultar o [Guia do Usuário da Suíte de Teste ADFSPIP Client](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-ADFSPIP/Docs/MS-ADFSPIP_ClientUserGuide.md)
* **Suíte de Teste ADOD**. Ela foi projetada para testar as implementações do protocolo [MS-ADOD]. Para começar com a suíte de teste ADOD, você pode consultar o [Guia do Usuário da Suíte de Teste ADOD](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-ADOD/Docs/MS-ADOD_ODUserGuide.md)
* **Suíte de Teste XCA**. Ela foi projetada para testar as implementações do protocolo [MS-XCA]. Para começar com a suíte de teste XCA, você pode consultar o [Guia do Usuário da Suíte de Teste XCA](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-XCA/docs/MS-XCA_TestSuiteUserGuide.md)
* **Suíte de Teste WSP**. Ela foi projetada para testar as implementações do protocolo [MS-WSP]. Para começar com a suíte de teste WSP, você pode consultar o [Guia do Usuário da Suíte de Teste WSP](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-WSP/docs/MS-WSP_TestSuiteUserGuide.md)
## Componentes
As Suítes de Teste de Protocolo do Windows contêm os seguintes componentes:
* **CommonScripts**. Scripts comuns usados por cada suíte de teste. Normalmente são usados para implantar o ambiente.
* **ProtoSDK**. A biblioteca de protocolo usada por cada suíte de teste. Ela fornece as estruturas de dados das mensagens de protocolo, os métodos para codificar e decodificar as mensagens, os métodos para enviar e receber mensagens, etc.
* **TestSuites**. Todo o código e documentos das Suítes de Teste são salvos aqui e categorizados por pasta representando cada suíte de teste.
* **ProtocolTestManager**. Uma ferramenta para ajudá-lo a configurar e executar suítes de teste.
## Pré-requisitos
As **Suítes de Teste de Protocolo do Windows** são baseadas em [.NET](https://dotnet.microsoft.com/), portanto podem ser desenvolvidas e executadas em diferentes plataformas.
Você deve instalar o software listado abaixo com base no seu propósito de teste, incluindo suas próprias dependências.
1. .NET e componentes relacionados
a. Para Windows, Linux e macOS, instale o [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet/8.0/) para compilar ou executar as suítes de teste.
b. Para aqueles que trabalham no Windows e preferem uma IDE, instale o [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/) ou superior ([Visual Studio 2022 Community](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=17) recomendado), juntamente com estes componentes individuais do instalador:
|Seção|Componente Individual no Visual Studio 2022|Executar as Suítes de Teste de Protocolo do Windows|Compilar as Suítes de Teste de Protocolo do Windows a partir do código-fonte|
|---|---|---|---|
|.NET|.NET SDK|Obrigatório|Obrigatório|
|Compiladores, ferramentas de build e runtime|Compiladores C# e Visual Basic Roslyn||Obrigatório|
|Compiladores, ferramentas de build e runtime|MSVC v143 - VS 2022 C++ x64/x86 build tools (Latest)||Obrigatório<sup>[1](#footnote1)</sup>|
|Compiladores, ferramentas de build e runtime|Suporte C++/CLI para v143 build tools (Latest)||Obrigatório<sup>[1](#footnote1)</sup>|
|Compiladores, ferramentas de build e runtime|C++ 2022 Redistributable Update|Obrigatório<sup>[1](#footnote1)</sup>|Obrigatório<sup>[1](#footnote1)</sup>|
|Atividades de Desenvolvimento|Recursos principais do C++||Obrigatório<sup>[1](#footnote1)</sup>|
|SDKs, bibliotecas e frameworks|Windows 10 SDK (10.0.19041.0)||Obrigatório<sup>[1](#footnote1)</sup>|
Nota:
<a name="footnote1">[1]</a>: Este componente individual é exigido pelo ADFamily e pelo MS-SMBD, que possuem código C++.
1. [Protocol Test Framework v2.6 (build 2.6.1)](https://github.com/microsoft/ProtocolTestFramework/releases/tag/PTF2.6.1)
O Protocol Test Framework é referenciado pelos projetos do ProtoSDK e das TestSuites como [pacotes NuGet](https://www.nuget.org/packages/Microsoft.Protocols.TestTools/2.6.1).
1. [Network Direct DDK](https://www.microsoft.com/en-us/download/details.aspx?id=36043)
Do `NetworkDirect_DDK.zip`, extraia `ndspi.h` e `ndstatus.h` para o caminho do projeto `ProtoSDK\RDMA\include`. Isso é para compilar a suíte de teste SMBD.
1. [PowerShell Core](https://github.com/PowerShell/PowerShell/releases)
Isso é necessário apenas quando o usuário deseja usar o [PowerShell Core Remoting over SSH](https://github.com/microsoft/WindowsProtocolTestSuites/wiki/Run-Test-Suites-With-Enabling-PowerShell-Core-Remoting-Over-SSH).
1. [Win32-OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/releases)
Isso é necessário apenas quando o usuário deseja usar o [PowerShell Core Remoting over SSH](https://github.com/microsoft/WindowsProtocolTestSuites/wiki/Run-Test-Suites-With-Enabling-PowerShell-Core-Remoting-Over-SSH) para a plataforma Windows.
1. [WMF 5.1](https://docs.microsoft.com/en-us/powershell/scripting/windows-powershell/wmf/setup/install-configure?view=powershell-7.1)
Isso é necessário apenas quando o usuário deseja usar a implementação PowerShell no Windows Server 2012R2 para ISutCommonControlAdapter em [CommonTestSuite.ptfconfig](https://github.com/microsoft/windowsprotocoltestsuites/blob/main/TestSuites/FileServer/src/Common/TestSuite/CommonTestSuite.ptfconfig).
a. Se você escolher a implementação PowerShell para ISutCommonControlAdapter em um ambiente de domínio onde o DC executa o Windows Server 2012R2, para obter o SID do DC, você precisa instalar o WMF 5.1 no DC; para outras versões do Windows Server mais recentes que o Windows Server 2012R2, você não precisa instalar o WMF 5.1 no DC.
b. Se você escolher a implementação PowerShell para ISutCommonControlAdapter em plataformas Windows (incluindo Windows Server 2012R2 e versões mais recentes) em ambiente de grupo de trabalho, você não precisa instalar o WMF 5.1 no SUT.
c. Se você escolher a implementação gerenciada para ISutCommonControlAdapter em plataformas Windows (incluindo Windows Server 2012R2 e versões mais recentes), ela usará consultas LDAP para obter o SID e suporta apenas ambiente de domínio.
Se você trabalha no Windows, pode usar o script na pasta `InstallPrerequisites` para baixar e instalar automaticamente esses softwares.
Dicas ao usar o script na pasta `InstallPrerequisites`:
* O script requer conectividade com a internet para baixar algumas dependências.
* O parâmetro **Category** é usado para especificar qual conjunto de ferramentas precisa ser baixado e instalado, com base nos diferentes nomes de suíte de teste, como `FileServer`, `Kerberos`, `SMBD`, `RDP`, `BranchCache`, `ADFamily`, `AZOD`, `ADFSPIP` e `ADOD`. As categorias são definidas em [PrerequisitesConfig.xml](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/InstallPrerequisites/PrerequisitesConfig.xml) e você pode atualizar este arquivo de configuração para atender ao seu requisito desejado.
* O parâmetro **ConfigPath** é usado para especificar o caminho do arquivo de configuração de pré-requisitos; o valor padrão é ".\PrerequisitesConfig.xml".
* Para executar o script para a suíte de teste FileServer, por exemplo, abra o **Windows PowerShell** e execute os comandos abaixo na **Janela do PowerShell**:
```
cd WindowsProtocolTestSuites\InstallPrerequisites
.\InstallPrerequisites.ps1 -Category FileServer -ConfigPath ".\PrerequisitesConfig.xml"
```
* Se você encontrar erros sobre **Execution Policy**, certifique-se de executar o **Windows PowerShell** como **Administrador** e digite o seguinte e pressione Enter:
```
Set-ExecutionPolicy RemoteSigned
```
Você pode executar o comando abaixo para verificar se a **Execution Policy** está definida corretamente:
```
Get-ExecutionPolicy
```
Em seguida, execute o script novamente.
## Compilação
Depois de [clonar uma cópia](https://help.github.com/articles/cloning-a-repository/) deste repositório, você pode executar `build.ps1` no PowerShell ou `build.sh` no shell para cada suíte de teste separadamente, após ter instalado todos os softwares necessários para a compilação listados em [Pré-requisitos](#prerequisites).
Por exemplo, se você quiser compilar a suíte de teste FileServer:
```
cd WindowsProtocolTestSuites\TestSuites\FileServer\src
build.ps1
```
Após a compilação ser bem-sucedida, a estrutura de pastas comum deve ser gerada na pasta `WindowsProtocolTestSuite\drop\TestSuites\[TestSuiteName]\`.
* `Bin`: todos os binários compilados, incluindo ProtoSDK, adaptadores e suítes de teste.
* `Batch`: arquivos em lote (.ps1, .sh) que podem ser usados para iniciar os testes.
* `Scripts`: scripts que podem ser usados para configurar o ambiente de teste.
* `Utils`: alguns utilitários que podem ser usados nos testes.
Alternativamente, você pode baixar o arquivo pré-compilado da suíte de teste em [Releases](https://github.com/microsoft/WindowsProtocolTestSuites/releases).
## Execução
Antes de executar uma suíte de teste, você precisa fazer uma das opções abaixo:
* Baixar o arquivo da suíte de teste que deseja executar em [Releases](https://github.com/microsoft/WindowsProtocolTestSuites/releases) e extraí-lo para algum caminho ao qual você tenha acesso.
* Compilar a suíte de teste de acordo com [Compilar uma suíte de teste](#build).
No macOS, a suíte de teste FileServer usa as [classes AesCcm e AesGcm](https://docs.microsoft.com/en-us/dotnet/standard/security/cross-platform-cryptography#aes-ccm-and-aes-gcm-on-macos), que requerem OpenSSL, portanto, se não houver OpenSSL 1.1 no seu macOS, instale o OpenSSL 1.1 e defina a variável de ambiente conforme abaixo antes de executar a suíte de teste FileServer no macOS,
```
brew install [email protected]
export DYLD_LIBRARY_PATH="/usr/local/opt/[email protected]/lib:$DYLD_LIBRARY_PATH"
```
**Nota:**
1. Se o `brew` não estiver instalado no seu macOS, você pode instalá-lo de acordo com [brew](https://brew.sh/).
2. Se você receber o erro "algorithm 'aesgcm' is not supported on this platform", isso significa que o dotnet não consegue carregar a classe AesGcm de libcrypto.1.1.dylib no seu macOS; então você precisa verificar se sua localização está na sua variável de ambiente `DYLD_LIBRARY_PATH` ou não. Depois de instalar o OpenSSL 1.1 no seu macOS, a localização da biblioteca crypto é `/usr/local/Cellar/[email protected]/1.1.1m/lib/libcrypto.1.1.dylib` e `/usr/local/opt/openssl` aponta para o diretório `/usr/local/Cellar/[email protected]/1.1.1m` por padrão.
### Executar suíte de teste por lote
Na pasta `Batch` sob o caminho raiz da suíte de teste, há vários scripts que você pode usar para iniciar os testes.
1. Executar todos os casos de teste
Execute `RunAllTestCases.ps1` no PowerShell, ou `RunAllTestCases.sh` no shell diretamente.
1. Executar casos de teste por filtros
Execute `RunTestCasesByFilter.ps1 -Filter [sua expressão de filtro]` no PowerShell, ou `RunTestCasesByFilter.sh [sua expressão de filtro]` no shell diretamente.
Por exemplo, você pode executar o comando abaixo se quiser executar casos de teste com a categoria de teste `BVT` e `SMB311`:
```
RunTestCasesByFilter.sh "TestCategory=BVT&TestCategory=SMB311"
```
Para mais informações sobre como construir a expressão de filtro, você pode consultar [Detalhes da opção de filtro](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test#filter-option-details).
1. Execução simulada
Se você quiser listar os casos de teste antes de executá-los de fato, você pode adicionar o switch `-DryRun` aos scripts `.ps1` ou passar uma string não vazia como último argumento para os scripts `.sh`.
Por exemplo, você pode executar o comando abaixo se quiser listar casos de teste com a categoria de teste `BVT` e `SMB311`:
```
RunTestCasesByFilter.sh "TestCategory=BVT&TestCategory=SMB311" "list"
```
### Configurar e executar suíte de teste pelo Protocol Test Manager Service
O **Protocol Test Manager Service (PTMService)** é uma ferramenta de aplicação web de página única que ajuda você a configurar e executar casos de teste nas Suítes de Teste. O PTMService suporta múltiplas plataformas, incluindo Windows, Linux e macOS. Para começar com o PTMService, você pode consultar a [Wiki do PTMService](https://github.com/microsoft/WindowsProtocolTestSuites/wiki/PTMService).
Para configurações do FileServer, a configuração da UI do PTM **Enable Parallel Test Execution** mapeia para a propriedade `.ptfconfig` totalmente qualificada **Common.PTF.LogProfileParserPatch.Enabled**. Defina-a como **true** para habilitar a execução paralela em estágios dentro de uma execução de teste do FileServer.
## Documentos
Você pode configurar o ambiente de teste e configurar a suíte de teste de acordo com seu **Guia do Usuário**.
Cada suíte de teste tem seu próprio **Guia do Usuário** na pasta `WindowsProtocolTestSuites\TestSuites\[TestSuiteName]\docs`.
Há mais dois tipos de documentos na mesma pasta:
* **Documentos Técnicos**. A documentação de Especificações Abertas para protocolos, publicada pela Microsoft. É a base para o desenvolvimento das Suítes de Teste.
* **Especificações de Design de Teste**. Fornece informações sobre o escopo do teste e o design da suíte de teste.
## Contribuir
Você pode encontrar o guia de contribuição [aqui](https://github.com/microsoft/windowsprotocoltestsuites/blob/main/CONTRIBUTING.md).
## Licença
As Suítes de Teste de Protocolo do Windows estão sob a [licença MIT](https://github.com/microsoft/windowsprotocoltestsuites/blob/main/LICENSE.txt).
## Contato
Os recursos a seguir são para notícias, discussões e suporte sobre as suítes de teste de protocolo do Windows:
* Veja anúncios de notícias no [Fórum de Protocolos Abertos do Windows](https://social.msdn.microsoft.com/Forums/en-US/home?forum=os_windowsprotocols).
* Discuta problemas das suítes de teste [aqui](https://github.com/Microsoft/WindowsProtocolTestSuites/issues) no github.
* Para suporte de [Protocolos de Especificações Abertas](https://msdn.microsoft.com/en-us/library/gg685446.aspx), entre em contato com [email protected].
## Código de Conduta de Código Aberto da Microsoft
Este projeto adotou o [Código de Conduta de Código Aberto da Microsoft](https://opensource.microsoft.com/codeofconduct/). Para mais informações, consulte o [FAQ do Código de Conduta](https://opensource.microsoft.com/codeofconduct/faq/) ou entre em contato com [[email protected]](mailto:[email protected]) com quaisquer perguntas ou comentários adicionais.