设计和使用说明 - Microsoft,2011/12
方案测试
该测试使用以下选择变量来设置测试组合。 请注意,如果没有专门选择这些变量中的任何一个,TE 将按顺序循环访问所有“不受限的”可能性。
方案测试流
WFDScenarioTestDriver 类布局为一系列按顺序运行的测试方法:
LoadSettings
读取此测试实例的命令行参数
加载文件/验证参数/等
PreSetup
删除默认 GO 配置文件并重启服务(如有必要)
创建默认 GO 配置文件(如有必要)
设置 ExtSTA 端口(断开连接/添加配置文件)
PreConnectAP
连接到测试 WLAN 配置文件(如有必要)
建立 L2 后,执行同步 ping 会话 30 秒
RunScenario
按顺序运行 IWFDScenarioTest 函数
侦听器方案
初始化
RunListenerScenario
连接器方案
初始化
RunConnectorScenario
建立 L2 后,WFD 客户端执行到 GO 的网关地址的 ping 会话 30 秒
如果方案是 Pre-AP-Connect,则还要执行到 AP 的并发 ping 会话
PostAPConnect
连接到测试 WLAN 配置文件(如有必要)
建立 L2 后,WFD 客户端执行到 GO 的网关地址的 ping 会话 30 秒
如果方案是 Post-AP-Connect,WFD 客户端还会执行到 GO 的并发会话
WaitForClientDisconnect
- Post-WFD GO 等待来自 WFD 客户端的断开连接通知(指示客户端已完成其 ping 会话的信号)
CalculatePerformance
- 检查测试中之前存储的性能数据
清理
IWFDScenarioTest.Cleanup
从 AP 断开连接
此方案流的代码位于 \wireless\wifidirect\tests\perfscenarios\scenariotest.cs
所需的测试参数
TargetDeviceAddress
这是电脑到电脑方案中其他设备的设备地址。 此变量用于在建立 WFD 配对后检查堆栈状态。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:TargetDeviceAddress=11:22:33:44:55:66
可选测试参数
WaitForInput
指定此标志将强制 LoadSettings 函数在继续测试之前等待控制台输入。 这对于手动批量运行测试非常有用,因为测试之间没有同步。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:WaitForInput=true
DisablePerfCheck
指定此标志将跳过 CheckPerformance 函数中的数据传输和连接性能检查。 它还将跳过跟踪 ping 会话。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:DisablePerfCheck=true
DisableDataPerf
指定此标志将跳过 CheckPerformance 函数中的数据传输检查。 它还将跳过跟踪 ping 会话。 仍会进行连接性能检查。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:DisableDataPerf=true
置换选择参数
方案
这定义了要使用的基础 Wi-Fi Direct 方案。 为了确保验证正确的方案,此值应在两台电脑之间匹配。
用法
Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:Scenario = 'Value' [and]...“ ...
可能值
GONegotation - 此值设置堆栈,以便在配对期间在 2 台电脑之间通过 Wi-Fi Direct 协议执行 GO 协商。 这将检查是否存在默认 GO 配置文件。如果存在,则在继续测试之前,将删除默认 GO 配置文件注册表项,并重置 wlansvc/其他相关服务。 由于 GO 协商发生在具有相同意图值的 2 台电脑之间,因此 GO 协商的结果是未知的。 连续运行两次 GO 协商测试将确保两个结果都得到正确执行。
邀请 - 此值设置堆栈,以便在配对期间在 2 台电脑之间通过 Wi-Fi Direct 协议执行邀请。 这将检查是否存在默认 GO 配置文件。如果没有,则在继续测试之前,将打开/关闭自治 GO 来创建默认 GO 配置文件。
JoinExitingGO - 此值设置堆栈,以便在配对期间在 2 台电脑之间执行“加入现有 GO”方案。 请注意,由于 WFDP2P/PeerFinder 方案层中可发现性的使用模式(始终设置可发现),以及配对 API 在加入现有 GO 之前执行 GO 协商的首选项,因此只能使用 WFDPlatform 方案层进行这种更具体的设置。
LocalRole
这定义了本地电脑是方案测试中的侦听器还是连接器。
用法
Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:LocalRole = 'Value' [and]...“ ...
可能值
连接器 - 此值将准备测试,使其成为给定电脑到电脑方案的连接器。 每个方案层的实际步骤略有不同,但基本上可归纳如下:
循环发现最长 45 秒,直到找到目标侦听器计算机。
如果找到,则配对到该设备。
验证是否已成功建立连接。
侦听器 - 此值将准备测试,使其成为给定电脑到电脑方案的侦听器。 每个方案层的实际步骤略有不同,但基本上可归纳如下:
注册有关传入连接的通知。
等待传入连接 2 分钟。
如果收到传入连接,请接受该连接请求。
验证是否已成功建立连接。
ScenarioLayer
这定义了将运行测试的操作系统层。 它选择在调用 RunScenario 函数时要使用的具体 IWFDScenarioTest 实现。
IWFDScenarioTest 定义的代码位于 wireless\wifidirect\tests\PerfScenarios\ScenarioTest.cs
用法
Te WFD.Perf.Scenario.Tests.dll /select:“...[and] @Data:ScenarioLayer = 'Value' [and]...“ ...
可能值
WFDPlatform
此值会导致测试使用 Wi-Fi Direct 平台 API 来运行给定方案。
此方案的实现类是 WFDPlatformScenarioTest。
- 代码位于 wireless\wifidirect\tests\PerfScenarios\WFDPlatformScenarioTest.cs
实现类使用互操作帮助程序 WFDPlatformScenarioHelper 类从 C# 调用 WFD 平台 API。
- 代码位于 common\sharedcomponents\sharedcomponents\WFDWrapper.cpp
WFDP2P
此值会导致测试使用 WFDP2P API 来运行给定方案。
此方案的实现类是 WFDP2PScenarioTest。
- 代码位于 wireless\wifidirect\tests\PerfScenarios\WFDP2PScenarioTest.cs
实现类使用互操作帮助程序 WFDP2PScenarioHelper 类从 C# 调用 WFDP2P API。
- 代码位于 common\sharedcomponents\sharedcomponents\WFDWrapper.cpp
不支持的 WFD 方案
由于 2 台计算机这一测试限制和 WFDP2P/PeerFinder API 的使用模式,此方案层不支持 JoinExistingGO 方案。
所需的测试参数
APPID
此参数指定要使用的 PeerFinder 应用程序标识符。 这是跨电脑匹配所必需的,否则 PeerFinder 发现将失败。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:APPID=SomeAppId
PeerFinder
此值会导致测试使用 PeerFinder API 集来运行给定方案。
此方案的实现类是 WFDPeerFinderScenarioTest。
- 代码位于 wireless\wifidirect\tests\PerfScenarios\WFDPeerFinderScenarioTest.cs
实现类使用内置的 WinRT API 来运行实际方案。
但是,需要一个解决方法才能使这些 API 在非 Mosh 设置中工作。 实现类使用互操作帮助程序 WFDPeerFinderScenarioHelper 来调用所需的解决方法 API。
- 代码位于 common\sharedcomponents\sharedcomponents\WFDWrapper.cpp
不支持的 WFD 方案
由于 2 台计算机这一测试限制和 WFDP2P/PeerFinder API 的使用模式,此方案层不支持 JoinExistingGO 方案。
所需的测试参数
APPID
此参数指定要使用的 PeerFinder 应用程序标识符。 这是跨电脑匹配所必需的,否则 PeerFinder 发现将失败。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:APPID=SomeAppId
APConnectSetting
这定义了本地计算机在方案测试中的基础结构 AP 连接尝试的排序/存在。
请务必注意,变量在不同的电脑之间可能不同(电脑 1 在 WFD 之前连接,电脑 2 在 WFD 之后连接)。 这允许在 2 台计算机上为 APConnectSetting 提供 3x3 的测试验证矩阵。
用法
Te WFD.Perf.Scenario.Tests.dll /select:“...[and] @Data:APConnectSetting = 'Value' [and]...“ ...
可能值
NoAPConnection
不尝试 AP 连接。 这是最简单的测试组合。
APConnectBeforeWFD
在 Wi-Fi Direct 方案发生之前尝试 AP 连接。 为 AP 连接建立 L2 后,将对基线数据性能数据进行采样。
建立 WFD 后,还将采用新的并发数据样本。
所需的测试参数
ChannelNumber
这将指定 AP 的预期信道号。
这将在建立 AP 连接后进行验证。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:ChannelNumber=3
SSID 和 PSK
使用这对变量将创建手动连接 WPA2PSK, AES WLAN 配置文件,该配置文件将在测试的生存期内临时添加到 WLAN 配置文件存储中。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:SSID=SomeSSID /p:PSK=SomePSK
ProfilePath
可以提供此变量来代替 SSID 和 PSK。
指定它将加载指向此处的文件
它将从此配置文件中提取 SSID、密钥和密钥类型,并生成包含此信息的临时配置文件。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:ProfilePath=path\to\profile.xml
APConnectAfterWFD
在 Wi-Fi Direct 方案发生之后尝试 AP 连接。
建立 Post-WFD AP 连接后,将采用新的并发数据样本。
所需的测试参数
ChannelNumber
这将指定 AP 的预期信道号。
这将在建立 AP 连接后进行验证。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:ChannelNumber=3
SSID 和 PSK
使用这对变量将创建手动连接 WPA2PSK, AES WLAN 配置文件,该配置文件将在测试的生存期内临时添加到 WLAN 配置文件存储中。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:SSID=SomeSSID /p:PSK=SomePSK
ProfilePath
可以提供此变量来代替 SSID 和 PSK。
指定它将加载指向此处的文件
它将从此配置文件中提取 SSID、密钥和密钥类型,并生成包含此信息的临时配置文件。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:ProfilePath=path\to\profile.xml
发现测试
发现测试流
查找器设备
DiscoverStress 类布局为一系列必须按顺序运行的测试方法:
LoadSettings
- 读取命令行参数
SynchronizeDevices
执行发现操作,直到一次性(最长 30 秒)找到预期设备列表中的所有条目
这样,在收集发现成功信息之前,测试就知道所有设备都是可发现的
到最后,如果所有设备都已找到,但从未一次性找到,则测试会将设备视为已同步(但是,如果在同步步骤中无法同时找到所有设备,则可预计结果不佳)
DiscoverStress
- 使用给定的发现参数执行 1 分钟的连续发现,跟踪每个发现的结果
计算性能
分析预期设备列表中每台设备存储的发现信息
如果预期设备列表中任何一台设备的成功率低于 95%,则测试失败
目标设备
还包括一个帮助程序测试,用于在一定时间内轻松设置侦听器设备。
侦听器
Set Discoverable(true)
Sleep(listen time)
Set Discoverable(false)
所需的测试参数
预期设备
此参数是预期要发现的设备地址的以分号分隔的列表。 必须找到所有这些设备。
用法
Te WFD.Perf.Scenario.Tests.dll … /p:ExpectedDevices=11:22:33:44:55:66
Te WFD.Perf.Scenario.Tests.dll … /p:ExpectedDevices=11:22:33:44:55:66;aa:bb:cc:dd:ee:ff;12:34:56:78:90:a0
置换选择参数
DiscoverRole
用法
Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:DiscoverRole = 'Value' [and]...“ ...
可能值
FinderDevice - 此角色将“执行查找”。 此值将持续发现并计算性能数据。
TargetDevice - 此角色将“执行侦听”。 它仅执行一段时间,然后关闭。 此测试不需要任何其他置换选择参数。
DiscoverSpeed
用法
Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:DiscoverSpeed = 'Value' [and]...“ ...
可能值
FastDiscovery - 已发出发现操作,超时时间为 1000 毫秒。
BetaFastDiscovery - 已发出发现操作,超时时间为 2500 毫秒。
StandardDiscovery - 已发出发现操作,超时时间为 10000 毫秒。
DiscoverType
用法
Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:DiscoverType = 'Value' [and]...“ ...
可能值
通配符 - 已发出发现操作,且没有采用设备筛选器。
目标 - 已发出发现操作,且每个设备条目应用一个设备筛选器。
DiscoverMode
用法
Te WFD.Perf.Scenario.Tests.dll /select:“...[和] @Data:DiscoverMode = 'Value' [and]...“ ...
可能值
NoPreference - 如果未指定首选项,则根据 DiscoverSpeed 设置指定以下内容:
FastDiscovery - ScanOnly
BetaFastDiscovery - ScanOnly
StandardDiscovery - Auto
ScanOnly - 发现通过 dot11_wfd_discover_type_scan_only 发出。
FindOnly - 发现通过 dot11_wfd_discover_type_find_only 发出。
Auto - 发现通过 dot11_wfd_discover_type_auto 发出。
ScanSocialChannels - 发现通过 dot11_wfd_discover_type_scan_social_channels 发出。
测试示例
方案测试
以下示例将在 1 个侦听器和 1 台连接器电脑上运行以下内容:
方案:GO 协商
ScenarioLayer:WFD 平台
PC1 AP 连接设置:APConnectBeforeWFD
PC2 AP 连接设置:APConnectAfterWFD
连接器
Te WFD.Perf.Scenario.Tests.dll /select:“@Data:Scenario = 'GONegotiation' and @Data:LocalRole = 'Connector' and @Data:ScenarioLayer = 'WFDPlatform' and @Data:APConnectSetting = 'APConnectAfterWFD'” /p:TargetDeviceAddres 11:22:33:44:55:66 /p:SSID=APSSID1 /p:PSK=PSKForSSID1 /p:ChannelNumber=6
侦听器
Te WFD.Perf.Scenario.Tests.dll /select:“@Data:Scenario = 'GONegotiation' and @Data:LocalRole = 'Connector' and @Data:ScenarioLayer = 'WFDPlatform' and @Data:APConnectSetting = 'APConnectAfterWFD'” /p:TargetDeviceAddres 66:44:22:11:22:33 /p:SSID=APSSID2 /p:PSK=PSKForSSID2 /p:ChannelNumber=3
发现测试
FinderDevice
Te WFD.Perf.Scenario.Tests.dll /select:“@Data:DiscoverRole = 'FinderDevice' and @Data:DiscoverSpeed = 'FastDiscovery' and @Data:DiscoverType = 'Wildcard' and @Data:DiscoverMode = 'NoPreference'” /p:ExpectedDevices=11:22:33:44:55:66;ab:cd:ef:gh:ab:cd
TargetDevice
Te WFD.Perf.Scenario.Tests.dll /select:"@Data:DiscoverRole = 'TargetDevice'" /p:ListenTimeSeconds=200
发现测试组合:
发现角色 | 发现速度 | 发现类型 | 参数 |
---|---|---|---|
FinderDevice |
FastDiscovery |
通配符 |
预期的 MAC 列表 |
FinderDevice |
FastDiscovery |
目标 |
预期的 MAC 列表 |
FinderDevice |
BetaFastDiscovery |
通配符 |
预期的 MAC 列表 |
FinderDevice |
BetaFastDiscovery |
目标 |
预期的 MAC 列表 |
FinderDevice |
StandardDiscovery |
通配符 |
预期的 MAC 列表 |
FinderDevice |
StandardDiscovery |
目标 |
预期的 MAC 列表 |
TargetDevice |
不适用 |
不适用 |
侦听时间 |
性能方案测试组合:
方案 | ScenarioLayer | PC1_APConnectivity | PC2_APConnectivity | 方案结果 |
---|---|---|---|---|
GONegotiation |
WFDPlatform |
NoAPConnection |
NoAPConnection |
|
GONegotiation |
WFDPlatform |
NoAPConnection |
APConnectBeforeWFD |
|
GONegotiation |
WFDPlatform |
NoAPConnection |
APConnectAfterWFD |
|
GONegotiation |
WFDPlatform |
APConnectBeforeWFD |
NoAPConnection |
|
GONegotiation |
WFDPlatform |
APConnectBeforeWFD |
APConnectBeforeWFD |
|
GONegotiation |
WFDPlatform |
APConnectBeforeWFD |
APConnectAfterWFD |
|
GONegotiation |
WFDPlatform |
APConnectAfterWFD |
NoAPConnection |
|
GONegotiation |
WFDPlatform |
APConnectAfterWFD |
APConnectBeforeWFD |
|
GONegotiation |
WFDPlatform |
APConnectAfterWFD |
APConnectAfterWFD |
|
邀请 |
WFDPlatform |
NoAPConnection |
NoAPConnection |
|
邀请 |
WFDPlatform |
NoAPConnection |
APConnectBeforeWFD |
|
邀请 |
WFDPlatform |
NoAPConnection |
APConnectAfterWFD |
|
邀请 |
WFDPlatform |
APConnectBeforeWFD |
NoAPConnection |
|
邀请 |
WFDPlatform |
APConnectBeforeWFD |
APConnectBeforeWFD |
|
邀请 |
WFDPlatform |
APConnectBeforeWFD |
APConnectAfterWFD |
|
邀请 |
WFDPlatform |
APConnectAfterWFD |
NoAPConnection |
|
邀请 |
WFDPlatform |
APConnectAfterWFD |
APConnectBeforeWFD |
|
邀请 |
WFDPlatform |
APConnectAfterWFD |
APConnectAfterWFD |
|
JoinExistingGO |
WFDPlatform |
NoAPConnection |
NoAPConnection |
|
JoinExistingGO |
WFDPlatform |
NoAPConnection |
APConnectBeforeWFD |
|
JoinExistingGO |
WFDPlatform |
NoAPConnection |
APConnectAfterWFD |
|
JoinExistingGO |
WFDPlatform |
APConnectBeforeWFD |
NoAPConnection |
|
JoinExistingGO |
WFDPlatform |
APConnectBeforeWFD |
APConnectBeforeWFD |
|
JoinExistingGO |
WFDPlatform |
APConnectBeforeWFD |
APConnectAfterWFD |
|
JoinExistingGO |
WFDPlatform |
APConnectAfterWFD |
NoAPConnection |
|
JoinExistingGO |
WFDPlatform |
APConnectAfterWFD |
APConnectBeforeWFD |
|
JoinExistingGO |
WFDPlatform |
APConnectAfterWFD |
APConnectAfterWFD |
|
GONegotiation |
WFDP2P |
NoAPConnection |
NoAPConnection |
|
GONegotiation |
WFDP2P |
NoAPConnection |
APConnectBeforeWFD |
|
GONegotiation |
WFDP2P |
NoAPConnection |
APConnectAfterWFD |
|
GONegotiation |
WFDP2P |
APConnectBeforeWFD |
NoAPConnection |
|
GONegotiation |
WFDP2P |
APConnectBeforeWFD |
APConnectBeforeWFD |
|
GONegotiation |
WFDP2P |
APConnectBeforeWFD |
APConnectAfterWFD |
|
GONegotiation |
WFDP2P |
APConnectAfterWFD |
NoAPConnection |
|
GONegotiation |
WFDP2P |
APConnectAfterWFD |
APConnectBeforeWFD |
|
GONegotiation |
WFDP2P |
APConnectAfterWFD |
APConnectAfterWFD |
|
邀请 |
WFDP2P |
NoAPConnection |
NoAPConnection |
|
邀请 |
WFDP2P |
NoAPConnection |
APConnectBeforeWFD |
|
邀请 |
WFDP2P |
NoAPConnection |
APConnectAfterWFD |
|
邀请 |
WFDP2P |
APConnectBeforeWFD |
NoAPConnection |
|
邀请 |
WFDP2P |
APConnectBeforeWFD |
APConnectBeforeWFD |
|
邀请 |
WFDP2P |
APConnectBeforeWFD |
APConnectAfterWFD |
|
邀请 |
WFDP2P |
APConnectAfterWFD |
NoAPConnection |
|
邀请 |
WFDP2P |
APConnectAfterWFD |
APConnectBeforeWFD |
|
邀请 |
WFDP2P |
APConnectAfterWFD |
APConnectAfterWFD |
|
GONegotiation |
PeerFinder |
NoAPConnection |
NoAPConnection |
|
GONegotiation |
PeerFinder |
NoAPConnection |
APConnectBeforeWFD |
|
GONegotiation |
PeerFinder |
NoAPConnection |
APConnectAfterWFD |
|
GONegotiation |
PeerFinder |
APConnectBeforeWFD |
NoAPConnection |
|
GONegotiation |
PeerFinder |
APConnectBeforeWFD |
APConnectBeforeWFD |
|
GONegotiation |
PeerFinder |
APConnectBeforeWFD |
APConnectAfterWFD |
|
GONegotiation |
PeerFinder |
APConnectAfterWFD |
NoAPConnection |
|
GONegotiation |
PeerFinder |
APConnectAfterWFD |
APConnectBeforeWFD |
|
GONegotiation |
PeerFinder |
APConnectAfterWFD |
APConnectAfterWFD |
|
邀请 |
PeerFinder |
NoAPConnection |
NoAPConnection |
|
邀请 |
PeerFinder |
NoAPConnection |
APConnectBeforeWFD |
|
邀请 |
PeerFinder |
NoAPConnection |
APConnectAfterWFD |
|
邀请 |
PeerFinder |
APConnectBeforeWFD |
NoAPConnection |
|
邀请 |
PeerFinder |
APConnectBeforeWFD |
APConnectBeforeWFD |
|
邀请 |
PeerFinder |
APConnectBeforeWFD |
APConnectAfterWFD |
|
邀请 |
PeerFinder |
APConnectAfterWFD |
NoAPConnection |
|
邀请 |
PeerFinder |
APConnectAfterWFD |
APConnectBeforeWFD |
|
邀请 |
PeerFinder |
APConnectAfterWFD |
APConnectAfterWFD |