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


Воспроизведите сбой теста, запустив тест из командной строки.

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

Запуск теста "Основы устройства" из командной строки

Чтобы запустить тест "Основы устройства" из командной строки, выполните следующие действия:

  1. Создайте папку c:\temp в тестируемой системе (SUT).

  2. Скопируйте все файлы из \\< папки hckcontroller>\taefbinaries\<arch> в папку c:\temp в SUT.

    Где <hckcontroller — это имя контроллера Windows Hardware Lab Kit (Windows HLK), а <arch> — это платформа SUT.

  3. Чтобы установить и запустить службу TAEF , введите в командной строке следующие команды:

    1. Перейдите в папку temp, созданную ранее:

      В X86 или X64: cd c:\temp

      На Arm или Arm64: cd c:\temp\MinTe

    2. wex.services.exe /install:Te.Service

    3. Sc start Te.Service

  4. Скопируйте все файлы из \\< каталога hckcontroller>\tests\<arch>\DevFund\ в c:\temp.

  5. Измените каталог на c:\temp и выполните следующую команду (обратите внимание, что Te.exe находится в c:\temp\MinTe в Arm и Arm64):

    c:\temp\Te.exe Devfund_<testname>.dll /name:"<test case name>" /p:"DQ=DeviceID='<Device Instance Path of device under test from Device Manager>'" /RebootStateFile:state.xml
    

    Где < имя >тестового случая — это имя теста в тестовом двоичном файле.

    Параметр /name является необязательным. Так как некоторые двоичные файлы тестов содержат несколько тестов, параметр /name указывает, какие тесты следует выполнять. Если это не указано, все тесты, содержащиеся в тестовом двоичном файле, выполняются последовательно. Список тестов в тестовом двоичном файле можно получить, выполнив следующую команду:

    Te.exe Devfund_<testname>.dll /list
    

    Например, Devfund_PnPDTest.dll содержит большинство тестов, связанных с PnP:

    c:\temp>Te.exe Devfund_PnPDTest.dll /list
    Test Authoring and Execution Framework v10.21 for x64
    
        c:\temp\Devfund_PnPDTest.dll
            PNPDTest
                PNPDTest::PNPDisableAndEnableDevice
                PNPDTest::PNPRemoveAndRestartDevice
                PNPDTest::PNPCancelRemoveDevice
                PNPDTest::PNPCancelStopDevice
                PNPDTest::PNPTryStopAndRestartDevice
                PNPDTest::PNPTryStopDeviceRequestNewResourcesAndRestartDevice
                PNPDTest::PNPTryStopDeviceAndFailRestart
                PNPDTest::PNPSurpriseRemoveAndRestartDevice
                PNPDTest::PNPDIFRemoveAndRescanParentDevice
                PNPDTest::DisableEnhancedDeviceTestingSupport
    

    Команда для запуска одного теста из этого тестового двоичного файла может выглядеть следующим образом:

    c:\temp\Te.exe Devfund_PnPDTest.dll.dll /name:PNPDTest::PNPSurpriseRemoveAndRestartDevice /p:"DQ=DeviceID='my\device\id'" /RebootStateFile:state.xml
    

    Имя теста в двоичном файле теста не будет совпадать с именем теста. Сопоставление двоичных имен теста с именами тестов HLK см. в разделе Тесты Device.DevFund.


Использование /BreakOnError для включения в отладчик

Если задача "Выполнить тест" в тесте "Основы устройства" завершается сбоем и вы хотите проверить состояние системы в отладчике ядра в то же время, когда тест регистрирует сбой, можно запустить тест вручную из командной строки вместе с отладчиком ядра и передать параметр командной строки /BreakOnError в Te.exe.

Запуск Te.exe с параметром /BreakOnError приводит к тому, что система врывается в отладчик ядра, когда тест будет готов к регистрации ошибки. Дополнительные сведения о настройке отладчика ядра см. в разделе Настройка отладки Kernel-Mode вручную.

Чтобы запустить тест "Основы устройства" с параметром /BreakOnError , добавьте параметр, как показано ниже:

Run c:\temp\Te.exe Devfund_<testname>.dll /p:"DQ=DeviceID='<Device Instance Path of device under test from Device Manager>'" /RebootStateFile:state.xml /BreakOnError /name:"*<test case name>*"

Где < имя >тестового случая — это имя теста.

Пример сценария отладки

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

WDTF_FUZZTEST             : INFO  :    Running IOCTL Fuzzing Test on surface \DosDevices\usb#vid_045e&pid_f0ca&mi_00#7&12099dde&0&0000#{0b9f1048-b94b-dc9a-4ed7-fe4fed3a0deb}\{8de0ff21-6c06-4c27-bfe0-e62612c015ae}. Access Mode=NO SYNC. Open Type=TREE_CONNECT. Opened with access 1201bf 

WDTF_FUZZTEST             : ERROR :    Test thread exceeded timeout limit. Terminating thread

WDTF_FUZZTEST             : ERROR :    Last logged operation: ZwDeviceIoControlFile, CtrlCode=0x22e10b, InBuf=0xfffffc00, 0 OutBuf=0xfffffc00, 0

WDTF_FUZZTEST             : INFO  :    Successfully terminated test thread.

Точку останова можно задать в отладчике с помощью следующей команды:

Te.exe Devfund_FuzzTest_WLK_Certification.dll /p:"DQ=DeviceID='USB\VID_045E&PID_F0CA&MI_00\7&12099DDE&0&0000'" /RebootStateFile:state.xml /BreakOnError /name:"*IOCTLTest*"

Тесты "Основы устройства" выполняются как Te.ProcessHost.exe (если они существуют) или Te.exe (если Te.ProcessHost.exe не существует). Просмотр потоков, выполняемых в этих процессах тестирования, может помочь в рассмотрении зависаний и (или) сбоев тестов.

Идентификатор процесса Te.ProcessHost.exe можно получить, выполнив следующую команду:

!process 0 0 Te.ProcessHost.exe

Переключите контекст процесса в отладчике на тестовый процесс:

.process /p /r <process id>

Сведения о процессе дампа:

!process <process id>

Устранение неполадок при тестировании надежности основных устройств с помощью Windows HLK