Поделиться через


Выбор и настройка тестов основы устройства

WDK для Windows 8 предоставляет платформу тестирования драйверов, включающую набор тестов, называемых тестами основы устройств. Базовые тесты устройств — это коллекция тестов, которые используются как внутри корпорации Майкрософт, так и для тестирования драйверов и примеров драйверов, которые отправляются с Windows и WDK, а также во внешних целях в рамках программы сертификации Windows для оборудования. Тесты можно выполнять из среды разработки. При выполнении тестов можно использовать те же параметры, которые используются для тестирования сертификации Windows, или настроить и настроить параметры во время выполнения в соответствии с потребностями тестирования и отладки.

Получение наиболее эффективной работы с тестами основы устройств

Чтобы получить наибольшее преимущество от тестов основы устройств, устройство должно поддерживаться подключаемыми модулями ввода-вывода по умолчанию. Чтобы узнать, поддерживается ли тип устройства и определить, существуют ли конкретные требования для тестирования, ознакомьтесь с подключаемыми модулями простого ввода-вывода WDTF. Тест "Основы устройств" также включает в себя служебную программу, используемую для тестирования устройства, чтобы узнать, поддерживается ли оно. Если устройство не поддерживается, можно создать подключаемый модуль простого ввода-вывода WDTF. в Visual Studio. Дополнительные сведения см. в статье "Настройка ввода-вывода для устройства с помощью подключаемого модуля действия простого ввода-вывода WDTF".

Сведения об основных тестах устройств

WDK предоставляет тесты на основе устройств в двух конфигурациях, "Базовый" и "Сертификация". В обеих конфигурациях можно изменить параметры теста, чтобы изменить длину теста, количество циклов тестирования и другие параметры теста в зависимости от способа тестирования целевых устройств или драйверов. Базовая конфигурация предназначена для общего тестирования драйверов и устройств и отладки. Используйте базовую конфигурацию на ранних этапах и на протяжении всего цикла разработки. Тесты в базовой конфигурации имеют те же параметры, которые используются в тестировании сертификации Windows, за исключением более короткого времени выполнения. В конфигурации сертификации тесты имеют те же параметры, которые используются в тестировании сертификации Windows. Используйте конфигурацию сертификации, чтобы проверить готовность к тестированию устройства или драйвера для программы сертификации Windows для оборудования.

Основные тесты устройств включают тесты в следующие категории.

Настройка параметров теста во время выполнения

Параметры времени выполнения можно изменить для многих тестов основы устройства. В окне группы тестирования драйверов стрелка (") рядом с именем теста указывает, что тест имеет параметры, которые можно изменить. Выберите стрелку (") для отображения параметров времени выполнения.

Одним из наиболее полезных параметров является DQ, который указывает целевое устройство для тестирования. Значение по умолчанию (IsDevice) проверяет все устройства на целевом компьютере. Параметр DQ принимает запрос WDTF SDEL, определяющий целевые устройства. Например, можно указать определенное устройство для тестирования:

DeviceID='USB\ROOT_HUB\4&1CD5D022&0' выбирает только устройство для тестирования с указанным Идентификатором устройства.

Дополнительные сведения о DQ и других параметрах времени выполнения см. в разделе "Основы устройств".

Параметры теста основы устройства

Параметр Описание

DQ

Определяет устройство или устройства, которые должны использоваться для тестирования. Параметр DQ принимает запрос WDTFSDEL, определяющий целевые устройства. Этот запрос может быть очень гибким, и его можно использовать для выражения любого количества устройств, от одного устройства до всех устройств в системе.

Распространенные примеры:

Чтобы протестировать все устройства, установленные с определенным INF-файлом, выполните следующие действия.

INF::FileName=INF_File_Name

Например, INF::OriginalInfFileName='KMDFTest.inf'

Inf::OriginalInFileName можно использовать с любым INF-файлом.

Чтобы протестировать устройство с определенным идентификатором устройства, выполните указанные действия.

DeviceId='DeviceId'

Например, DeviceID='USB\ROOT_HUB\4&1CD5D022&0'

Чтобы протестировать устройство с определенным интерфейсом, выполните указанные действия.

Интерфейсы::InterfaceGUID

Чтобы протестировать устройство с определенным письмом драйвера, выполните указанные действия.

Volume::D riverLetter='DriveLetter'

Например, Volume::D riverLetter='c:\'

Чтобы протестировать устройство с определенным драйвером, выполните указанные действия.

DriverBinaryNames=mydriver.sys

Где KMDFTest.inf используется для установки драйвера. Вы также можете использовать folloiwng для устройств, использующих драйвер KMDFTest.sys .

(DriverBinaryNames='KMDFTest.sys') работает.

После правильного задания SDEL вы увидите следующие выходные данные консоли при запуске теста.

WDTF_TARGETS: INFO: - Query("IsDevice AND ((Inf::OriginalInfFileName='KMDFTest.inf')") WDTF_TARGETS: INFO: Target: KMDFTest Device ROOT\SAMPLE\0000 WDTF_TEST : INFO: WARNING: Тест не применяется к включению средства проверки драйверов. WDTF_TEST: INFO: DV включен с флагом:=0x209bb WDTF_TEST: INFO: DV успешно включен для всех драйверов этого devnode(UniqueTargetName):=KMDFTest Device ROOT\SAMPLE\0000 WDTF_TARGET: INFO: - GetInterface("Поддержка") WDTF_TARGET: INFO: INFO: Целевой объект: DESKTOP-2OVFH3G WDTF_TARGETS: INFO: - Query("IsDevice") WDTF_TARGETS: INFO: Target: KMDFTest Device ROOT\SAMPLE\0000 WDTF_TARGETS: INFO: - GetRelations("под-или-self", "IsDevice") WDTF_TARGETS: INFO: Target: KMDFTest Device ROOT\SAMPLE\0000 WDTF_TARGETS: INFO: - GetInterfacesIfExist("SimpleIOStressProc") WDTF_SIMPLE_IO: INFO: - For Target:KMDFTest Device ROOT\SAMPLE\0000 нет простого интерфейса ввода-вывода. WDTF_SIMPLE_IO: INFO: — для ROOT устройства Target:KMDFTest\SAMPLE\0000 WDTF будет использовать любой простой интерфейс ввода-вывода.

Дополнительные сведения см. в вложенных файлах конфигурации и журналах. WDTF_TARGETS: INFO: Target: KMDFTest Device ROOT\SAMPLE\0000 WDTF_TEST: INFO: Выполнение 1 циклов теста завершения ввода-вывода WDTF_TEST: INFO: цикл завершения ввода-вывода #1 WDTF_SIMPLEIO_STRESS_PROC: INFO: - StartAsync(KMDFTest Device ROOT\SAMPLE\0000) WDTF_SIMPLEIO_STRESS_PROC: INFO: - WaitAsyncCompletion(KMDFTest Device ROOT\SAMPLE\0000) WDTF_SIMPLE_IO: INFO: — для целевого объекта: KMDFTest Device ROOT\SAMPLE\0000 нет простого интерфейса ввода-вывода. WDTF_SIMPLE_IO: INFO: — для ROOT устройства Target:KMDFTest\SAMPLE\0000 WDTF будет использовать любой простой интерфейс ввода-вывода. WDTF_SIMPLE_IO: INFO: - Open(KMDFTest Device ROOT\SAMPLE\0000) Попробуйте 1 WDTF_SUPPORT: INFO: - WaitForMinutes : 1 WDTF_SIMPLE_IO : — PerformIO(KMDFTest Device ROOT\SAMPLE\0000) Count 1 WDTF_SIMPLEIO_STRESS_PROC : INFO: - End(KMDFTest Device ROOT\SAMPLE\0000)

Чтобы проверить все устройства определенного класса устройства, выполните указанные действия.

Например, Class=CDROM протестирует все устройства класса CDROM .

Например, ClassGUID= {36fc9e60-c465-11cf-8056-444553540000} протестирует все устройства, guid класса которых соответствует указанному GUID. В этом случае GUID предназначен для USB-класса.

DoPoolCheck

Верно или неверно. Отслеживает использование страницы и непагрегированных пулов памяти системы драйвером с помощью тегов пулов пулов и списков lookaside. Этот параметр также отслеживает изменения в количестве исключений, обрабатываемых, что может указывать на ошибки в обработке исключений.

ChangeBufferProtectionFlags

Верно или неверно. Изменяет флаги защиты памяти буферов, передаваемых на тестируемое устройство. Флаги защиты памяти чередуются между отсутствием доступа, доступом только для чтения и доступом только для чтения с помощью page guard.

DoSimpleIO

Верно или неверно. Запускает SimpleI/O (если найдено) на тестовых устройствах до и после выполнения операций PNP.

DoConcurrentIO

Верно или неверно. Использует одновременный интерфейс ввода-вывода WDTF для отправки запросов ввода-вывода в целевые стеки устройств при выполнении операций PnP.

FillZeroPageWithNull

Верно или неверно. Сопоставляет нулевую страницу и заполняет ее значениями NULL. Этот тест определяет драйверы, которые не проверяют ссылку указателя перед отменой ссылки указателя.

FuzzTestPeriod

Нечеткий период теста в минутах.

HPU

Указывает высокий процент использования процессора.

Impersonate

Верно или неверно. Выполняет тест от имени пользователя без прав администратора.

IoPeriod

Указывает период ввода-вывода в минутах.

IoType

Указывает тип теста стресса ввода-вывода: SimpleIOStressEx или SimpleIOStressProc (ввода-вывода в отдельном процессе).

LPU

Указывает процент использования низкой загрузки процессора

MaxInBuffer

Указывает максимальный размер в байтах входных буферов, которые тест передает драйверу в FSCTLs (или IOCTLs для тестов IOCTL).

MinInBuffer

Указывает минимальный размер в байтах входных буферов, которые тест передает драйверу в FSCTLs (или ioCTLs для тестов IOCTL).

MaxOutBuffer

Задает максимальный размер в байтах выходных буферов, которые тест передает драйверу в FSCTLs (или IOCTLs для тестов IOCTL).

MinOutBuffer

Указывает минимальный размер в байтах выходных буферов, которые тест передает драйверу в FSCTLs (или ioCTLs для тестов IOCTL).

MaxRandomCalls

Указывает максимальное количество вызовов, возникающих при проверке.

MaxTailoredCalls

Указывает максимальное количество вызовов, возникающих при выполнении тестового случайного теста.

MaxDeviceType

Указывает максимальное значение поля DeviceType в FSCTLs (или IOCTLs для тестов IOCTL). Максимально возможное значение — 65535.

MinDeviceType

Указывает минимальное значение поля DeviceType в FSCTLs (или IOCTLs для тестов IOCTL). Минимальное возможное значение равно 0.

MaxFunctionCode

Задает максимальное значение поля FunctionCode в FSCTLs (или IOCTLs для тестов IOCTL). Максимально возможное значение — 4095.

MinFunctionCode

Указывает минимальное значение поля FunctionCode в FSCTLs (или IOCTLs для тестов IOCTL). Минимальное возможное значение равно 0.

PU

Указывает процент использования процессора

PingPongPeriod

Указывает период ping pong в минутах; время, когда процессор чередуется между высоким уровнем использования процессора (HPU) и низким уровнем использования процессора (LPU).

РезюмеDelay

Время задержки (в секундах) после возобновления работы компьютера из спящего режима и до начала следующего цикла ввода-вывода. Время задержки необходимо для восстановления рабочего состояния устройств (продление IP-адреса сетевой карты и т. д.).

TestCycles

Указывает количество циклов тестирования (итерации) для выполнения.

WDTFREMOTESYSTEM

Этот параметр требуется только в том случае, если устройство под тестом или одно из дочерних устройств является проводным сетевым адаптером, у которых нет адреса шлюза IPv6. Если этот параметр необходим в сети, необходимо указать IPv6-адрес, который тестовый сетевой адаптер может проверить для тестирования сети.

Пример: fe80::78b6:810:9c12:46cd

Wpa2PskAesSsid

Этот параметр требуется только в том случае, если устройство под тестом или одно из его дочерних устройств является адаптером Wi-Fi. Укажите SSID сети WPA2 AES WiFi, которую тест может использовать для тестирования адаптера WiFi.

Значение по умолчанию: kitstestsid

Wpa2PskPassword

Этот параметр требуется только в том случае, если устройство под тестом или одно из его дочерних устройств является адаптером Wi-Fi. Укажите пароль сети WIFi WPA2 AES, указанной с помощью параметра Wpa2PskAesSsid.

Значение по умолчанию: пароль

Тесты служебной программы

Тест Description

Отображение устройств с подключаемыми модулями WDTF Simple I/O

Параметры: Нет

Отображение устройств с включенным средство проверки драйверов

Параметры: Нет

Отображение устройств

Параметры: Нет

Средство проверки драйверов

Тест Description

Отключение средства проверки драйверов

Отключает средство проверки драйверов на тестовом компьютере.

Параметры: Нет

Включение средства проверки драйверов

Этот тест можно использовать для включения средства проверки драйверов для всех драйверов устройства (или устройств) на тестовом компьютере.

Параметры: — см . параметры средства проверки драйверов.