
WindowsProtocolTestSuites v4.26.9.0
⭐⭐ 加入我们,在 SNIA SDC 参加 SMB3 IO Lab(2026年9月28日至10月1日),查看即将举行的互操作性活动
Windows 协议测试套件
Windows 协议测试套件 提供针对 Windows 开放规范实现(包括文件服务、身份管理、远程桌面等)的互操作性测试。
Microsoft 协议测试套件最初是为内部测试 Microsoft 开放规范而开发的,已在 Plugfest 和互操作性实验室中广泛用于针对合作伙伴实现进行测试。 测试套件评估协议或协议族实现是否满足特定的互操作性要求。 测试套件并不覆盖所有协议要求,即使所有测试都通过,也绝不构成对实现的认证。 但是,每个测试套件都为用户提供了关于互操作性的有用指示。
- 文件服务器族测试套件。它旨在测试文件服务器协议族的实现,包括 [MS-SMB2]、[MS-DFSC]、[MS-SWN]、[MS-FSRVP]、[MS-FSA]、[MS-FSCC]、[MS-RSVD] 和 [MS-SQOS]。 要开始使用文件服务器测试套件,您可以参考文件服务器测试套件用户指南。要创建一次性 Azure 测试环境,请使用文件服务器 Azure 自动部署。
- RDP 客户端族测试套件。它提供针对 RDP 族协议客户端实现的互操作性测试,包括 [MS-RDPBCGR]、[MS-RDPEDISP]、[MS-RDPEDYC]、[MS-RDPEGFX]、[MS-RDPEGT]、[MS-RDPEI]、[MS-RDPEMT]、[MS-RDPEUDP]、[MS-RDPEUSB]、[MS-RDPEVOR] 和 [MS-RDPRFX]。要开始使用 RDP 客户端测试套件,您可以参考 RDP 客户端测试套件用户指南
- RDP 服务器族测试套件。它提供针对 RDP 族协议服务器实现的互操作性测试,包括 [MS-RDPBCGR]、[MS-RDPEDYC]、[MS-RDPEMT] 和 [MS-RDPELE]。要开始使用 RDP 服务器测试套件,您可以参考 RDP 服务器测试套件用户指南
- Kerberos 服务器测试套件。它旨在测试 Kerberos 协议的服务器实现,包括 [MS-KILE]、[MS-KKDCP] 和 [MS-PAC]。要开始使用 Kerberos 服务器测试套件,您可以参考 Kerberos 服务器测试套件用户指南
- SMBD 服务器测试套件。它旨在测试 SMB2&3 直接 (RDMA) 协议的实现,如 [MS-SMBD] 和 [MS-SMB2] 中所规定。要开始使用 SMBD 服务器测试套件,您可以参考 SMBD 服务器测试套件用户指南
- 分支缓存测试套件。它旨在测试 [MS-PCCRTP]、[MS-PCCRR]、[MS-PCHC] 和 [MS-PCCRC] 协议的实现。要开始使用分支缓存测试套件,您可以参考分支缓存测试套件用户指南
- AZOD 测试套件。它旨在测试 [MS-AZOD] 协议的实现。要开始使用 AZOD 测试套件,您可以参考 AZOD 测试套件用户指南
- ADFamily 测试套件。它旨在测试 Active Directory 协议的实现,包括 [MS-ADA1]、[MS-ADA2]、[MS-ADA3]、[MS-ADLS]、[MS-ADSC]、[MS-ADTS]、[MS-APDS]、[MS-DRSR]、[MS-FRS2]、[MS-LSAD]、[MS-LSAT]、[MS-SAMR] 和 [MS-NRPC]。要开始使用 ADFamily 测试套件,您可以参考 ADFamily 测试套件用户指南
- ADFSPIP 客户端测试套件。它旨在测试 ADFS 代理和 Web 应用程序代理集成的实现,如 [MS-ADFSPIP] 中所述。要开始使用 ADFSPIP 客户端测试套件,您可以参考 ADFSPIP 客户端测试套件用户指南
- ADOD 测试套件。它旨在测试 [MS-ADOD] 协议的实现。要开始使用 ADOD 测试套件,您可以参考 ADOD 测试套件用户指南
- XCA 测试套件。它旨在测试 [MS-XCA] 协议的实现。要开始使用 XCA 测试套件,您可以参考 XCA 测试套件用户指南
- WSP 测试套件。它旨在测试 [MS-WSP] 协议的实现。要开始使用 WSP 测试套件,您可以参考 WSP 测试套件用户指南
组件
Windows 协议测试套件包含以下组件:
- CommonScripts。每个测试套件使用的通用脚本。通常用于部署环境。
- ProtoSDK。每个测试套件使用的协议库。它提供协议消息的数据结构、消息的编码和解码方法、消息的发送和接收方法等。
- TestSuites。所有测试套件代码和文档都保存在此处,并按代表每个测试套件的文件夹分类。
- ProtocolTestManager。一个帮助您配置和运行测试套件的工具。
先决条件
Windows 协议测试套件 基于 .NET,因此可以跨不同平台开发和运行。 您应根据测试目的安装下面列出的软件,包括它们各自的依赖项。
-
.NET 及相关组件
a. 对于 Windows、Linux 和 macOS,安装 .NET 8.0 SDK 以构建或运行测试套件。
b. 对于在 Windows 上工作并偏好 IDE 的用户,安装 Visual Studio 2022 或更高版本(推荐 Visual Studio 2022 Community),以及安装程序中的以下单个组件:
部分 Visual Studio 2022 中的单个组件 运行 Windows 协议测试套件 从源代码构建 Windows 协议测试套件 .NET .NET SDK 必需 必需 编译器、生成工具和运行时 C# 和 Visual Basic Roslyn 编译器 必需 编译器、生成工具和运行时 MSVC v143 - VS 2022 C++ x64/x86 生成工具(最新) 必需1 编译器、生成工具和运行时 适用于 v143 生成工具(最新)的 C++/CLI 支持 必需1 编译器、生成工具和运行时 C++ 2022 可再发行组件更新 必需1 必需1 开发活动 C++ 核心功能 必需1 SDK、库和框架 Windows 10 SDK (10.0.19041.0) 必需1 注意:
[1]:此单个组件是 ADFamily 和 MS-SMBD 所需的,它们包含 C++ 代码。
-
Protocol Test Framework v2.6 (build 2.6.1)
Protocol Test Framework 由 ProtoSDK 和 TestSuites 的项目作为 NuGet 包引用。
-
从
NetworkDirect_DDK.zip中提取ndspi.h和ndstatus.h到项目路径ProtoSDK\RDMA\include。这是为了构建 SMBD 测试套件。 -
仅当用户想要使用通过 SSH 的 PowerShell Core 远程处理时才需要。
-
仅当用户想要在 Windows 平台上使用通过 SSH 的 PowerShell Core 远程处理时才需要。
-
仅当用户想要在 Windows Server 2012R2 上为 CommonTestSuite.ptfconfig 中的 ISutCommonControlAdapter 使用 PowerShell 实现时才需要。
a. 如果您在 DC 运行 Windows Server 2012R2 的域环境中为 ISutCommonControlAdapter 选择 PowerShell 实现,为了从 DC 获取 SID,您需要在 DC 上安装 WMF 5.1;对于比 Windows Server 2012R2 更新的其他 Windows Server 版本,您不需要在 DC 上安装 WMF 5.1。
b. 如果您在工作组环境中为 Windows 平台(包括 Windows Server 2012R2 及更新版本)上的 ISutCommonControlAdapter 选择 PowerShell 实现,则不需要在 SUT 上安装 WMF 5.1。
c. 如果您在 Windows 平台(包括 Windows Server 2012R2 及更新版本)上为 ISutCommonControlAdapter 选择托管实现,它将使用 LDAP 查询来获取 SID,并且仅支持域环境。
如果您在 Windows 上工作,可以使用 InstallPrerequisites 文件夹中的脚本自动下载并安装这些软件。
使用 InstallPrerequisites 文件夹中脚本时的提示:
-
该脚本需要互联网连接才能下载某些依赖项。
-
参数 Category 用于指定需要下载和安装哪一组工具,基于不同的测试套件名称,例如
FileServer、Kerberos、SMBD、RDP、BranchCache、ADFamily、AZOD、ADFSPIP和ADOD。类别定义在 PrerequisitesConfig.xml 中,您可以更新此配置文件以实现您所需的要求。 -
参数 ConfigPath 用于指定先决条件配置文件路径,默认值为 ".\PrerequisitesConfig.xml"。
-
例如,要为 FileServer 测试套件运行脚本,请打开 Windows PowerShell,并在 PowerShell 窗口中执行以下命令:
cd WindowsProtocolTestSuites\InstallPrerequisites
.\InstallPrerequisites.ps1 -Category FileServer -ConfigPath ".\PrerequisitesConfig.xml"
- 如果您遇到关于 Execution Policy 的错误,请确保以管理员身份运行 Windows PowerShell,然后输入以下内容并按回车:
Set-ExecutionPolicy RemoteSigned
您可以运行以下命令来验证 Execution Policy 是否已正确设置:
Get-ExecutionPolicy
然后重新运行脚本。
构建
在您克隆此仓库的副本后,在安装了先决条件中列出的所有构建所需软件后,您可以在 PowerShell 中运行 build.ps1,或在 shell 中运行 build.sh,分别针对每个测试套件。
例如,如果您想构建 FileServer 测试套件:
cd WindowsProtocolTestSuites\TestSuites\FileServer\src
build.ps1
构建成功后,应在文件夹 WindowsProtocolTestSuite\drop\TestSuites\[TestSuiteName]\ 中生成通用文件夹结构。
Bin:所有构建的二进制文件,包括 ProtoSDK、适配器和测试套件。Batch:可用于启动测试的批处理文件(.ps1、.sh)。Scripts:可用于配置测试环境的脚本。Utils:一些可在测试中使用的实用工具。
或者,您可以从 Releases 下载预构建的测试套件归档。
运行
在运行测试套件之前,您需要执行以下任一操作:
在 macOS 上,FileServer 测试套件使用 AesCcm 和 AesGcm 类,这需要 OpenSSL,因此如果您的 macOS 上没有 OpenSSL 1.1,请在 macOS 上运行 FileServer 测试套件之前安装 OpenSSL 1.1 并按如下方式设置环境变量,
brew install [email protected]
export DYLD_LIBRARY_PATH="/usr/local/opt/[email protected]/lib:$DYLD_LIBRARY_PATH"
注意:
- 如果您的 macOS 上未安装
brew,您可以根据 brew 进行安装。 - 如果您遇到错误 "algorithm 'aesgcm' is not supported on this platform",这意味着 dotnet 无法从您 macOS 上的 libcrypto.1.1.dylib 加载 AesGcm 类,那么您需要检查其位置是否在您的
DYLD_LIBRARY_PATH环境变量中。在您的 macOS 上安装 OpenSSL 1.1 后,加密库位置为/usr/local/Cellar/[email protected]/1.1.1m/lib/libcrypto.1.1.dylib,并且/usr/local/opt/openssl默认链接到/usr/local/Cellar/[email protected]/1.1.1m目录。
通过批处理运行测试套件
在测试套件根路径下的 Batch 文件夹中,有几个可用于启动测试的脚本。
-
运行所有测试用例
在 PowerShell 中执行
RunAllTestCases.ps1,或直接在 shell 中执行RunAllTestCases.sh。 -
按筛选器运行测试用例
在 PowerShell 中执行
RunTestCasesByFilter.ps1 -Filter [您的筛选表达式],或直接在 shell 中执行RunTestCasesByFilter.sh [您的筛选表达式]。例如,如果您想运行测试类别为
BVT和SMB311的测试用例,可以运行以下命令:RunTestCasesByFilter.sh "TestCategory=BVT&TestCategory=SMB311"有关如何构造筛选表达式的更多信息,您可以参考筛选选项详细信息。
-
试运行
如果您想在实际运行测试用例之前列出它们,可以向
.ps1脚本添加-DryRun开关,或向.sh脚本传递一个非空字符串作为最后一个参数。例如,如果您想列出测试类别为
BVT和SMB311的测试用例,可以运行以下命令:RunTestCasesByFilter.sh "TestCategory=BVT&TestCategory=SMB311" "list"
通过 Protocol Test Manager Service 配置和运行测试套件
Protocol Test Manager Service (PTMService) 是一个单网页应用程序工具,可帮助您配置和运行测试套件中的测试用例。PTMService 支持多个平台,包括 Windows、Linux 和 macOS。要开始使用 PTMService,您可以参考 PTMService Wiki。
对于 FileServer 配置,PTM UI 设置 Enable Parallel Test Execution 映射到完全限定的 .ptfconfig 属性 Common.PTF.LogProfileParserPatch.Enabled。将其设置为 true 以在 FileServer 测试运行中启用分阶段并行执行。
文档
您可以根据测试套件的用户指南设置测试环境并配置测试套件。
每个测试套件在 WindowsProtocolTestSuites\TestSuites\[TestSuiteName]\docs 文件夹中都有自己的用户指南。
同一文件夹中还有另外两种文档:
- 技术文档。由 Microsoft 发布的协议开放规范文档。它是开发测试套件的基础。
- 测试设计规范。它提供有关测试范围和测试套件设计的信息。
贡献
您可以在此处找到贡献指南。
许可证
Windows 协议测试套件采用 MIT 许可证。
联系方式
以下资源用于 Windows 协议测试套件的新闻、讨论和支持:
- 在开放规范 Windows 协议论坛中查看新闻公告。
- 在 github 上此处讨论测试套件问题。
- 有关开放规范协议支持,请联系 [email protected]。
Microsoft 开源行为准则
本项目已采用 Microsoft 开源行为准则。有关更多信息,请参阅行为准则常见问题,或通过 [email protected] 联系我们以获取任何其他问题或意见。