⭐⭐ 加入我们,在 SNIA SDC 参加 SMB3 IO Lab(2026年9月28日至10月1日),查看即将举行的互操作性活动
Windows 协议测试套件 提供针对 Windows 开放规范实现(包括文件服务、身份管理、远程桌面等)的互操作性测试。
Microsoft 协议测试套件最初是为内部测试 Microsoft 开放规范而开发的,已在 Plugfest 和互操作性实验室中广泛用于针对合作伙伴实现进行测试。 测试套件评估协议或协议族实现是否满足特定的互操作性要求。 测试套件并不覆盖所有协议要求,即使所有测试都通过,也绝不构成对实现的认证。 但是,每个测试套件都为用户提供了关于互操作性的有用指示。
Windows 协议测试套件包含以下组件:
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"
Set-ExecutionPolicy RemoteSigned
您可以运行以下命令来验证 Execution Policy 是否已正确设置:
Get-ExecutionPolicy
然后重新运行脚本。
例如,如果您想构建 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"
注意:
brew,您可以根据 brew 进行安装。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 (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 文件夹中都有自己的用户指南。
同一文件夹中还有另外两种文档:
您可以在此处找到贡献指南。
Windows 协议测试套件采用 MIT 许可证。
以下资源用于 Windows 协议测试套件的新闻、讨论和支持:
本项目已采用 Microsoft 开源行为准则。有关更多信息,请参阅行为准则常见问题,或通过 [email protected] 联系我们以获取任何其他问题或意见。