⭐⭐ SNIA SDCのSMB3 IO Labにぜひご参加ください(2026年9月28日〜10月1日)。今後の相互運用性イベントもご覧ください。
# Windows プロトコル テスト スイート
**Windows プロトコル テスト スイート**は、ファイル サービス、ID 管理、リモート デスクトップなどを含む Windows オープン仕様の実装に対する相互運用性テストを提供します。
もともと Microsoft オープン仕様の社内テスト用に開発された Microsoft プロトコル テスト スイートは、Plugfest や相互運用性ラボでパートナーの実装に対してテストするために広く使用されてきました。
テスト スイートは、プロトコルまたはプロトコル ファミリの実装が特定の相互運用性要件を満たしているかどうかを評価します。
テスト スイートはすべてのプロトコル要件を網羅しているわけではなく、すべてのテストに合格したとしても実装を認定するものでは決してありません。
ただし、各テスト スイートは、相互運用性に関する有用な指標をユーザーに提供します。
* **ファイル サーバー ファミリ テスト スイート**。これは、[MS-SMB2]、[MS-DFSC]、[MS-SWN]、[MS-FSRVP]、[MS-FSA]、[MS-FSCC]、[MS-RSVD]、[MS-SQOS] を含むファイル サーバー プロトコル ファミリの実装をテストするように設計されています。
ファイル サーバー テスト スイートを開始するには、[ファイル サーバー テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/FileServer/docs/FileServerUserGuide.md)を参照してください。使い捨ての Azure テスト環境を作成するには、[ファイル サーバー Azure 自動デプロイ](https://github.com/microsoft/windowsprotocoltestsuites/blob/main/TestSuites/FileServer/azure-automation/README.md)を使用してください。
* **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 クライアント テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/RDP/Client/docs/RDP_ClientUserGuide.md)を参照してください。
* **RDP サーバー ファミリ テスト スイート**。これは、[MS-RDPBCGR]、[MS-RDPEDYC]、[MS-RDPEMT]、[MS-RDPELE] を含む RDP ファミリ プロトコルのサーバー実装に対する相互運用性テストを提供します。RDP サーバー テスト スイートを開始するには、[RDP サーバー テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/RDP/Server/Docs/RDP_ServerUserGuide.md)を参照してください。
* **Kerberos サーバー テスト スイート**。これは、[MS-KILE]、[MS-KKDCP]、[MS-PAC] を含む Kerberos プロトコルのサーバー実装をテストするように設計されています。Kerberos サーバー テスト スイートを開始するには、[Kerberos サーバー テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/Kerberos/docs/Kerberos_ServerUserGuide.md)を参照してください。
* **SMBD サーバー テスト スイート**。これは、[MS-SMBD] および [MS-SMB2] で規定されている SMB2&3 ダイレクト (RDMA) プロトコルの実装をテストするように設計されています。SMBD サーバー テスト スイートを開始するには、[SMBD サーバー テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-SMBD/docs/MS-SMBD_ServerUserGuide.md)を参照してください。
* **Branch Cache テスト スイート**。これは、[MS-PCCRTP]、[MS-PCCRR]、[MS-PCHC]、[MS-PCCRC] プロトコルの実装をテストするように設計されています。Branch Cache テスト スイートを開始するには、[Branch Cache テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/BranchCache/docs/BranchCache_UserGuide.md)を参照してください。
* **AZOD テスト スイート**。これは、[MS-AZOD] プロトコルの実装をテストするように設計されています。AZOD テスト スイートを開始するには、[AZOD テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-AZOD/docs/MS-AZOD_ODUserGuide.md)を参照してください。
* **ADFamily テスト スイート**。これは、[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] を含む Active Directory プロトコルの実装をテストするように設計されています。ADFamily テスト スイートを開始するには、[ADFamily テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/ADFamily/docs/ADFamily_ServerUserGuide.md)を参照してください。
* **ADFSPIP クライアント テスト スイート**。これは、[MS-ADFSPIP] で説明されている ADFS プロキシと Web アプリケーション プロキシの統合の実装をテストするように設計されています。ADFSPIP クライアント テスト スイートを開始するには、[ADFSPIP クライアント テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-ADFSPIP/Docs/MS-ADFSPIP_ClientUserGuide.md)を参照してください。
* **ADOD テスト スイート**。これは、[MS-ADOD] プロトコルの実装をテストするように設計されています。ADOD テスト スイートを開始するには、[ADOD テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-ADOD/Docs/MS-ADOD_ODUserGuide.md)を参照してください。
* **XCA テスト スイート**。これは、[MS-XCA] プロトコルの実装をテストするように設計されています。XCA テスト スイートを開始するには、[XCA テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-XCA/docs/MS-XCA_TestSuiteUserGuide.md)を参照してください。
* **WSP テスト スイート**。これは、[MS-WSP] プロトコルの実装をテストするように設計されています。WSP テスト スイートを開始するには、[WSP テスト スイート ユーザー ガイド](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/TestSuites/MS-WSP/docs/MS-WSP_TestSuiteUserGuide.md)を参照してください。
## コンポーネント
Windows プロトコル テスト スイートには以下のコンポーネントが含まれています:
* **CommonScripts**。各テスト スイートで使用される共通スクリプト。通常、環境のデプロイに使用されます。
* **ProtoSDK**。各テスト スイートで使用されるプロトコル ライブラリ。プロトコル メッセージのデータ構造、メッセージをエンコードおよびデコードするメソッド、メッセージを送受信するメソッドなどを提供します。
* **TestSuites**。すべてのテスト スイートのコードとドキュメントがここに保存され、各テスト スイートを表すフォルダーごとに分類されています。
* **ProtocolTestManager**。テスト スイートの構成と実行を支援するツール。
## 前提条件
**Windows プロトコル テスト スイート**は [.NET](https://dotnet.microsoft.com/) に基づいているため、さまざまなプラットフォームで開発および実行できます。
テストの目的に応じて、以下に示すソフトウェアをそれぞれの依存関係も含めてインストールする必要があります。
1. .NET および関連コンポーネント
a. Windows、Linux、macOS の場合、テスト スイートをビルドまたは実行するために [.NET 8.0 SDK](https://dotnet.microsoft.com/download/dotnet/8.0/) をインストールします。
b. Windows で作業し、IDE を好む場合は、[Visual Studio 2022](https://visualstudio.microsoft.com/downloads/) 以降 ([Visual Studio 2022 Community](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=17) を推奨) を、インストーラーから以下の個別コンポーネントとともにインストールします:
|セクション|Visual Studio 2022 の個別コンポーネント|Windows プロトコル テスト スイートの実行|ソース コードからの Windows プロトコル テスト スイートのビルド|
|---|---|---|---|
|.NET|.NET SDK|必須|必須|
|コンパイラ、ビルド ツール、ランタイム|C# および Visual Basic Roslyn コンパイラ||必須|
|コンパイラ、ビルド ツール、ランタイム|MSVC v143 - VS 2022 C++ x64/x86 ビルド ツール (最新)||必須<sup>[1](#footnote1)</sup>|
|コンパイラ、ビルド ツール、ランタイム|v143 ビルド ツール用 C++/CLI サポート (最新)||必須<sup>[1](#footnote1)</sup>|
|コンパイラ、ビルド ツール、ランタイム|C++ 2022 再頒布可能パッケージの更新|必須<sup>[1](#footnote1)</sup>|必須<sup>[1](#footnote1)</sup>|
|開発アクティビティ|C++ コア機能||必須<sup>[1](#footnote1)</sup>|
|SDK、ライブラリ、フレームワーク|Windows 10 SDK (10.0.19041.0)||必須<sup>[1](#footnote1)</sup>|
注:
<a name="footnote1">[1]</a>: この個別コンポーネントは、C++ コードを含む ADFamily および MS-SMBD で必要です。
1. [Protocol Test Framework v2.6 (build 2.6.1)](https://github.com/microsoft/ProtocolTestFramework/releases/tag/PTF2.6.1)
Protocol Test Framework は、ProtoSDK および TestSuites のプロジェクトから [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)
`NetworkDirect_DDK.zip` から `ndspi.h` と `ndstatus.h` をプロジェクト パス `ProtoSDK\RDMA\include` に展開します。これは SMBD テスト スイートをビルドするためです。
1. [PowerShell Core](https://github.com/PowerShell/PowerShell/releases)
これは、ユーザーが [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)
これは、ユーザーが Windows プラットフォームで [PowerShell Core Remoting over SSH](https://github.com/microsoft/WindowsProtocolTestSuites/wiki/Run-Test-Suites-With-Enabling-PowerShell-Core-Remoting-Over-SSH) を使用する場合にのみ必要です。
1. [WMF 5.1](https://docs.microsoft.com/en-us/powershell/scripting/windows-powershell/wmf/setup/install-configure?view=powershell-7.1)
これは、ユーザーが [CommonTestSuite.ptfconfig](https://github.com/microsoft/windowsprotocoltestsuites/blob/main/TestSuites/FileServer/src/Common/TestSuite/CommonTestSuite.ptfconfig) の ISutCommonControlAdapter に対して Windows Server 2012R2 で 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](https://github.com/microsoft/WindowsProtocolTestSuites/blob/main/InstallPrerequisites/PrerequisitesConfig.xml) で定義されており、この構成ファイルを更新して目的の要件を達成できます。
* パラメーター **ConfigPath** は、前提条件構成ファイルのパスを指定するために使用されます。既定値は ".\PrerequisitesConfig.xml" です。
* たとえば FileServer テスト スイート用にスクリプトを実行するには、**Windows PowerShell** を開き、**PowerShell ウィンドウ**で以下のコマンドを実行します:
```
cd WindowsProtocolTestSuites\InstallPrerequisites
.\InstallPrerequisites.ps1 -Category FileServer -ConfigPath ".\PrerequisitesConfig.xml"
```
* **実行ポリシー**に関するエラーが発生した場合は、**Windows PowerShell** を**管理者**として実行していることを確認し、以下を入力して Enter キーを押します:
```
Set-ExecutionPolicy RemoteSigned
```
以下のコマンドを実行して、**実行ポリシー**が正しく設定されているかどうかを確認できます:
```
Get-ExecutionPolicy
```
その後、スクリプトを再実行します。
## ビルド
このリポジトリの[コピーをクローン](https://help.github.com/articles/cloning-a-repository/)した後、[前提条件](#prerequisites)に記載されているビルドに必要なすべてのソフトウェアをインストールしたら、各テスト スイートごとに PowerShell で `build.ps1` を、またはシェルで `build.sh` を実行できます。
たとえば、FileServer テスト スイートをビルドする場合:
```
cd WindowsProtocolTestSuites\TestSuites\FileServer\src
build.ps1
```
ビルドが成功すると、共通のフォルダー構造がフォルダー `WindowsProtocolTestSuite\drop\TestSuites\[TestSuiteName]\` に生成されます。
* `Bin`: ProtoSDK、アダプター、テスト スイートを含む、ビルドされたすべてのバイナリ。
* `Batch`: テストを起動するために使用できるバッチ ファイル (.ps1、.sh)。
* `Scripts`: テスト環境を構成するために使用できるスクリプト。
* `Utils`: テストで使用できるいくつかのユーティリティ。
または、[Releases](https://github.com/microsoft/WindowsProtocolTestSuites/releases) からビルド済みのテスト スイート アーカイブをダウンロードできます。
## 実行
テスト スイートを実行する前に、以下のいずれかを行う必要があります:
* [Releases](https://github.com/microsoft/WindowsProtocolTestSuites/releases) から実行するテスト スイート アーカイブをダウンロードし、アクセス可能なパスに展開します。
* [テスト スイートのビルド](#build)に従ってテスト スイートをビルドします。
macOS では、FileServer テスト スイートは OpenSSL を必要とする [AesCcm および AesGcm クラス](https://docs.microsoft.com/en-us/dotnet/standard/security/cross-platform-cryptography#aes-ccm-and-aes-gcm-on-macos)を使用するため、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"
```
**注:**
1. macOS に `brew` がインストールされていない場合は、[brew](https://brew.sh/) に従ってインストールできます。
2. "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` フォルダーには、テストを起動するために使用できるいくつかのスクリプトがあります。
1. すべてのテスト ケースを実行
PowerShell で `RunAllTestCases.ps1` を、またはシェルで `RunAllTestCases.sh` を直接実行します。
1. フィルターによるテスト ケースの実行
PowerShell で `RunTestCasesByFilter.ps1 -Filter [your filter expression]` を、またはシェルで `RunTestCasesByFilter.sh [your filter expression]` を直接実行します。
たとえば、テスト カテゴリ `BVT` および `SMB311` のテスト ケースを実行する場合は、以下のコマンドを実行できます:
```
RunTestCasesByFilter.sh "TestCategory=BVT&TestCategory=SMB311"
```
フィルター式の構築方法の詳細については、[フィルター オプションの詳細](https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test#filter-option-details)を参照してください。
1. ドライ ラン
実際にテスト ケースを実行する前に一覧表示する場合は、`.ps1` スクリプトに `-DryRun` スイッチを追加するか、`.sh` スクリプトの最後の引数として空でない文字列を渡します。
たとえば、テスト カテゴリ `BVT` および `SMB311` のテスト ケースを一覧表示する場合は、以下のコマンドを実行できます:
```
RunTestCasesByFilter.sh "TestCategory=BVT&TestCategory=SMB311" "list"
```
### Protocol Test Manager Service によるテスト スイートの構成と実行
**Protocol Test Manager Service (PTMService)** は、テスト スイート内のテスト ケースを構成および実行するのに役立つ単一の Web ページ アプリケーション ツールです。PTMService は、Windows、Linux、macOS を含む複数のプラットフォームをサポートしています。PTMService を開始するには、[PTMService Wiki](https://github.com/microsoft/WindowsProtocolTestSuites/wiki/PTMService) を参照してください。
FileServer 構成の場合、PTM UI 設定 **Enable Parallel Test Execution** は、完全修飾された `.ptfconfig` プロパティ **Common.PTF.LogProfileParserPatch.Enabled** にマップされます。FileServer テスト実行内で段階的な並列実行を有効にするには、**true** に設定します。
## ドキュメント
テスト スイートの **ユーザー ガイド**に従って、テスト環境をセットアップし、テスト スイートを構成できます。
各テスト スイートには、`WindowsProtocolTestSuites\TestSuites\[TestSuiteName]\docs` フォルダーに独自の **ユーザー ガイド**があります。
同じフォルダーには、さらに 2 種類のドキュメントがあります:
* **技術ドキュメント**。Microsoft によって公開されたプロトコルのオープン仕様ドキュメント。これはテスト スイートを開発するための基礎です。
* **テスト設計仕様**。テスト スコープとテスト スイート設計に関する情報を提供します。
## コントリビュート
コントリビューション ガイドは[こちら](https://github.com/microsoft/windowsprotocoltestsuites/blob/main/CONTRIBUTING.md)にあります。
## ライセンス
Windows プロトコル テスト スイートは [MIT ライセンス](https://github.com/microsoft/windowsprotocoltestsuites/blob/main/LICENSE.txt)の下にあります。
## お問い合わせ
以下のリソースは、Windows プロトコル テスト スイートのニュース、ディスカッション、サポート用です:
* [Open Specification Windows Protocols Forum](https://social.msdn.microsoft.com/Forums/en-US/home?forum=os_windowsprotocols) でニュースのお知らせを閲覧できます。
* github の[こちら](https://github.com/Microsoft/WindowsProtocolTestSuites/issues)でテスト スイートの問題について議論できます。
* [Open Specifications Protocols](https://msdn.microsoft.com/en-us/library/gg685446.aspx) のサポートについては、[email protected] にお問い合わせください。
## Microsoft オープン ソース行動規範
このプロジェクトは [Microsoft オープン ソース行動規範](https://opensource.microsoft.com/codeofconduct/)を採用しています。詳細については、[行動規範 FAQ](https://opensource.microsoft.com/codeofconduct/faq/) を参照するか、追加の質問やコメントがある場合は [[email protected]](mailto:[email protected]) にお問い合わせください。