DF - 模糊开关测试(可靠性)
此测试执行数千个创建-打开-关闭序列,并使用几种不同的方法来打开和关闭指定设备的实例:基本打开操作、直接设备打开操作,以及打开和关闭压力测试。
基本打开操作
在执行基本打开操作的过程中,模糊测试会使用不同方法和选项反复打开(创建)指定驱动程序导出的指定设备的实例。
模糊测试始终执行基本打开操作。 你不需要选择它们,也不能从测试会话中排除它们。
模糊测试通过调用适用于设备的系统服务(ZwXxx 例程),在用户模式下执行所有打开操作。 如果某个打开调用返回了设备的句柄,则模糊测试会使用该句柄来执行为测试会话选择的其他设备测试。
基本打开操作有五种类型:
标准打开:模糊测试以异步方式打开设备,并仅指定本机设备名称。
使用添加的反斜杠进行打开:模糊测试发出一个针对设备名称的打开调用,后跟反斜杠 (\)(例如 \device\cdrom\),就像调用是要打开设备中的根目录一样。
此操作确定驱动程序或文件系统如何管理其命名空间中的打开请求。 具体而言,如果设备不支持其命名空间中的打开请求,则驱动程序必须阻止未经授权的访问,方法是使请求失败,或者在调用 IoCreateDevice 或 IoCreateDeviceSecure 来创建设备对象时设置 FILE_DEVICE_SECURE_OPEN 设备特征。
以命名管道形式打开:模糊测试打开设备并为设备建立命名管道。 Access 参数 (ShareAccess) 最初设置为 read 和 write,但如果请求失败,则会调整此参数。 如果设备不支持命名管道,则会让该请求失败。
作为 mailslot 打开:模糊测试以 mailslot 身份打开设备。 如果设备不支持此类型的连接,则会让该请求失败。
作为树连接打开:模糊测试将设备作为树连接打开,以便在远程网络访问中使用。 Access 参数 (ShareAccess) 最初设置为 read 和 write,但如果请求失败,则会调整此参数。 如果设备不支持此类型的连接,则会让该请求失败。
在打开调用中使用的参数因设备特征而异,这样调用才有可能成功。 例如,如果某个基本打开操作因调用未满足设备的安全要求而失败,则模糊测试将使用对访问权限要求较低的请求来重复该打开操作。 例如,如果某个请求了写入访问权限的打开操作返回安全冲突错误,则使用读取访问请求重复该打开操作。
直接设备打开操作
在执行直接设备打开操作的过程中,模糊测试会直接以设备形式打开设备,而不是以文件系统中的文件形式打开设备。 直接设备打开操作始终是同步的。 如果调用成功,模糊测试会使用提供的句柄来执行其他选定的测试。
打开和关闭测试
在打开和关闭测试的过程中,模糊测试会创建多个线程,每个线程都执行成千上万个创建-打开-关闭序列。 这会测试驱动程序处理大量在其他情况下会很简单的预期调用的能力。
打开和关闭测试使用在“基本打开操作”测试和“使用添加的反斜杠进行打开”测试中使用的相同选项,在这些测试之前执行。
测试二进制文件: Devfund_FuzzTest.dll 测试方法: DoOpenCloseTest
测试详细信息
规范 |
|
平台 |
|
支持的版本 |
|
预计运行时间(以分钟为单位) | 15 |
类别 | 方案 |
超时(以分钟为单位) | 180 |
需要重启 | false |
需要特殊配置 | 是 |
类型 | automatic |
其他文档
此功能区域中的测试可能会有其他文档,包括先决条件、设置和故障排除信息,这些内容可在以下主题中找到:
运行测试
在运行测试之前,请按照如下测试要求中所述完成测试设置:Device.Fundamentals 可靠性测试先决条件。
故障排除
有关 HLK 测试失败的常规故障排除,请参阅排查 Windows HLK 测试失败问题。
有关 HLK 和 WDK 中特定于设备基础功能测试的故障排除信息,请参阅 Device.DevFund 附加文档。
更多信息
参数
参数名称 | 参数说明 |
---|---|
DQ | 一个 WDTF SDEL 查询,用于标识目标设备 - https://go.microsoft.com/fwlink/?LinkId=232678 |
Wpa2PskAesSsid | 只有当 DUT 或它的一个子设备是 WiFi 适配器时才需要。 请提供测试可用其测试 WiFi 适配器的 WPA2 AES WiFi 网络 SSID。 默认值为“kitstestssid”。 |
Wpa2PskPassword | 只有当 DUT 或它的一个子设备是 WiFi 适配器时才需要。 请提供由使用 Wpa2PskAesSsid 参数指定的 WPA2 AES WiFi 网络的密码。 默认值为“password”。 |
ChangeBufferProtectionFlags | True 或 False。 更改传递至已测试设备的缓冲区的内存保护标志。 此内存保护标志在无访问权限、只读和具有页防护的只读之间变化。 |
Impersonate | True 或 False。 以非管理用户身份运行测试。 |
FillZeroPageWithNull | True 或 False。 映射零页并使用 NULL 值进行填充。 此测试确定在取消指针引用之前未验证指针引用的驱动程序。 |
DoPoolCheck | True 或 False。 通过使用池标记和旁视列表监控驱动程序对分页和非分页系统内存池的使用情况。 此选项还可监控已处理的异常数量变化,这可能指示在异常处理时出错。 |
DoSync | True 或 False。 此外,还会在 SYNC 模式下打开设备句柄 (FILE_SYNCHRONOUS_IO_ALERT)。 跳过随机读取和写入操作。 |
TestCycles | 测试周期数。 |
DriverVerifierAdditionalDrivers | 应启用驱动程序验证程序的其他驱动程序 |
DriverVerifierExcludedFlags | 可以手动排除以运行测试的驱动程序验证程序标志的占位符 |
WDKDeviceID | 受测设备的设备 ID |
QueryHardwareID | 受测设备的硬件 ID |
WDTFREMOTESYSTEM | 只有当 DUT 或它的一个子设备是没有 IPv6 网关地址的有线 NIC 时,才需要。 如果确定为必需,请提供测试 NIC 可以 ping 以测试网络 I/O 的 IPv6 地址。 例如:fe80::78b6:810:9c12:46cd |
DriverVerifierCustomizeConfiguration | 指定此测试可能需要自动更新驱动程序验证程序设置 |