Советы по тестированию драйверов во время разработки
Когда следует начать тестирование? Как только у вас будут требования к драйверу, можно приступить к разработке тестовых случаев, чтобы проверить, реализованы ли критические требования. Исследования показывают, что поиск и исправление дефектов в коде становится дороже, чем дольше дефекты остаются в коде. Поиск и исправление дефектов в начале цикла разработки является менее дорогостоящим и разрушительным, чем поиск дефектов после выпуска и распространения кода. Раннее создание тестовых случаев также поможет вам найти проблемы в проектировании.
Рекомендации по тестированию во время разработки
Используйте следующие рекомендации для тестирования кода драйвера и пакета драйверов.
Чтобы упростить поиск ошибок во время компиляции, выполните следующие действия.
Объявите предоставляемые драйвером функции обратного вызова и подпрограммы диспетчеризации с помощью типов ролей функций. Это помогает повысить точность средств анализа и проверки кода и эффективность тестового времени. Дополнительные сведения о том, как объявить функции, предоставляемые драйвером, см. в разделе Использование объявлений типов роли функции.
Скомпилируйте код с помощью параметра Предупреждения уровня 4 (/W4). Исправление предупреждений, обнаруженных компилятором, повысит качество кода драйвера и поможет устранить дополнительные дефекты на ранних этапах цикла разработки.
Создание заметок к коду с помощью языка заметок к исходному коду Майкрософт (SAL) 2.0. В заметках описывается, как функция использует свои параметры — предположения, которые она делает о них, и гарантии, которые она делает после завершения. Заметки также повышают точность средств анализа кода. Дополнительные сведения о заметках для конкретных драйверов см. в статье Заметки SAL 2.0 для драйверов.
Используйте средства для проверки драйверов во время разработки драйвера. Рекомендации по использованию конкретных средств проверки см. в статье Анализ драйвера с помощью средств анализа кода и проверки.
Чтобы протестировать пакет драйверов, выполните приведенные далее действия.
Создайте INF-файл и пакет драйверов на ранних этапах разработки и используйте его во время тестирования.
Используйте средство InfVerif для проверки структуры и синтаксиса INF-файла, а также для диагностики INF-файла и других проблем, связанных с установкой.
Используйте средство Inf2Cat (с параметром /nocat ), чтобы выполнить дополнительную проверку INF-файла. Inf2Cat может убедиться, что файлы, на которые ссылается INF, присутствуют и помещаются в каталог пакета, как ожидает inf.
Подписывание драйверов для упрощения установки и тестирования драйверов, как описано в разделе Подписывание драйверов во время разработки и тестирования.
Запустите тест DriverInstall , который входит в состав тестов Device Fundamental, которые предоставляются в WDK. См. статьи Тестирование драйвера во время выполнения с помощью Visual Studio и Выбор и настройка основных тестов устройств. Тест DriverInstall можно запустить после развертывания драйвера на тестовом компьютере. Вы можете добавить тест DriverInstall в группу тестов драйверов. Тест DriverInstall отображается в разделе Категории тестов драйвера в разделе Все тесты\Basic\Device Fundamentals\DriverInstall.
Устранение неполадок с установкой устройств с помощью диспетчер устройств для просмотра сведений о системе о драйверах и устройствах, а также путем просмотра журнала SetupAPI. Журнал SetupAPI содержит сведения о последовательности операций, выполненных во время установки устройства или драйвера.
С помощью Visual Studio и WDK можно тестировать установку пакета драйверов и устранять неполадки при развертывании драйвера на тестовом компьютере. См. статью Развертывание драйвера на тестовом компьютере. Выберите параметр Установить и проверить в свойствах развертывания для проектов пакетов драйверов. Если выбрать этот параметр и указать задачу установки пакета драйвера по умолчанию (возможная перезагрузка) или Задачу установки пакета драйвера принтера по умолчанию (возможная перезагрузка), тест считывает INF-файл драйвера и устанавливает драйвер. Затем тест проверяет, работает ли драйвер. По завершении теста предоставляются подробные сведения об успешном или неудачном выполнении задачи установки. Результаты отображаются в Обозреватель "Группа тестирования драйверов" в разделе "Группы тестирования > драйверов" Установка драйвера. Имя задачи — Задача установки пакета драйвера по умолчанию.
Чтобы протестировать драйвер во время выполнения, выполните приведенные далее действия.
Выполните основные тесты устройства, включенные в WDK. См. статьи Тестирование драйвера во время выполнения с помощью Visual Studio и Выбор и настройка основных тестов устройств.
Настройте отладчик, чтобы можно было устранять неполадки и отлаживать результаты теста. Дополнительные сведения см. в разделе начало работы с отладкой Windows.
Включите средство проверки драйверов на тестовых компьютерах, используемых для развертывания. См. раздел Свойства средства проверки драйверов для проектов драйверов. Выберите параметр Проверка соответствия требованиям DDI . Если драйвер не проходит проверку соответствия требованиям DDI, запустите средство проверки статических драйверов и укажите правило или правила, вызвавшие сбой. Средство проверки статических драйверов поможет найти причину ошибки в исходных файлах.
Протестируйте драйвер и устройство на максимально возможном количестве конфигураций оборудования. Изменение оборудования поможет найти конфликты между устройствами и другие ошибки при взаимодействии с устройствами. Например, необходимо протестировать драйвер и устройство на компьютерах с разными архитектурами процессоров и на компьютерах под управлением 32-разрядных и 64-разрядных версий Windows.
Протестируйте драйвер и устройство в многопроцессорных системах. Условия гонки и другие проблемы с временем возникают в многопроцессорных системах, которые в противном случае не были бы найдены. См. раздел Как выбрать и настроить основные тесты устройства и параметры загрузки для тестирования драйверов для поддержки нескольких групп процессоров.
Протестируйте драйвер и устройство для конкретных условий системы и оборудования, в частности пограничных условий. Например, эти условия могут включать "D3 горячий" и "D3 холодный". Убедитесь, что драйвер и устройство могут правильно вернуться из состояния питания устройства "D3 горячий" (без потери питания) и "холодный D3" (при отключении питания устройства). Дополнительные сведения см. в статье Выбор и настройка фундаментальных тестов устройств.