Compartir a través de


Reproducir el error de prueba mediante la ejecución de la prueba desde la línea de comandos

A veces resulta conveniente reproducir errores de prueba mediante la ejecución de las pruebas desde la línea de comandos. En la siguiente documentación se da por supuesto que el Hardware Lab Kit (HLK) ya se ha instalado en la máquina controladora.

Ejecución de una prueba de aspectos básicos del dispositivo desde la línea de comandos

Para ejecutar una prueba de aspectos básicos del dispositivo desde la línea de comandos:

  1. Cree una carpeta c:\temp en el sistema sometido a prueba (SUT).

  2. Copie todos los archivos de \\<la carpeta hckcontroller>\taefbinaries\<arch> en c:\temp en el SUT.

    Donde <hckcontroller es el nombre del controlador windows Hardware Lab Kit (Windows HLK) y <arch> es la plataforma SUT.

  3. Para instalar e iniciar el servicio TAEF , escriba los siguientes comandos desde un símbolo del sistema:

    1. Vaya a la carpeta "temp" creada anteriormente:

      En X86 o X64: cd c:\temp

      En Arm o Arm64: cd c:\temp\MinTe

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

    3. sc start Te.Service

  4. Copie todos los archivos del \\< directorio hckcontroller>\tests\<arch>\DevFund\ a c:\temp.

  5. Cambie el directorio a c:\temp y ejecute el siguiente comando (tenga en cuenta que Te.exe reside en c:\temp\MinTe en Arm y 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
    

    Donde <nombre> del caso de prueba es el nombre de la prueba en el binario de prueba.

    El modificador /name es opcional. Dado que algunos archivos binarios de prueba contienen varias pruebas, el modificador /name especifica qué pruebas se deben ejecutar. Si no se especifica, todas las pruebas contenidas en el binario de prueba se ejecutan en secuencia. La lista de pruebas de un archivo binario de prueba se puede obtener mediante la ejecución del siguiente comando:

    Te.exe Devfund_<testname>.dll /list
    

    Por ejemplo, el Devfund_PnPDTest.dll contiene la mayoría de las pruebas relacionadas con 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
    

    El comando para ejecutar una sola prueba desde este binario de prueba podría tener este aspecto:

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

    El nombre de la prueba en el binario de prueba no será exactamente el mismo que el título de la prueba. Para obtener una asignación de nombres binarios de prueba a nombres de prueba de HLK, consulte Pruebas device.DevFund.


Cómo usar /BreakOnError para dividir en el depurador

Si se produce un error en la tarea "Ejecutar prueba" en una prueba de aspectos básicos del dispositivo y desea revisar el estado del sistema en el depurador de kernel al mismo tiempo que la prueba registra un error, puede ejecutar la prueba manualmente desde un símbolo del sistema junto con el depurador de kernel y pasar el modificador de línea de comandos /BreakOnError a Te.exe.

La ejecución de Te.exe con el modificador /BreakOnError hace que el sistema se interrumpa en el depurador de kernel cuando la prueba esté lista para registrar un error. Para obtener más información sobre cómo configurar un depurador de kernel, vea Configurar manualmente Kernel-Mode depuración.

Para ejecutar una prueba de aspectos básicos del dispositivo con el modificador /BreakOnError , agregue el modificador como se muestra a continuación:

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>*"

Donde <el nombre> del caso de prueba es el nombre de la prueba.

Escenario de depuración de ejemplo

Para investigar el siguiente error, vuelva a ejecutar la prueba y haga que el sistema se interrumpa en el depurador cuando la prueba registra el error al volver a ejecutarse.

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.

Puede establecer un punto de interrupción en el depurador mediante el siguiente comando:

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*"

Las pruebas de aspectos básicos del dispositivo se ejecutan como Te.ProcessHost.exe (si existe) o como Te.exe (si no existe Te.ProcessHost.exe). La revisión de subprocesos que se ejecutan en estos procesos de prueba puede ayudar a evaluar los bloqueos o errores de prueba.

Para obtener el identificador de proceso de Te.ProcessHost.exe , ejecute el siguiente comando:

!process 0 0 Te.ProcessHost.exe

Cambie el contexto del proceso en el depurador al proceso de prueba:

.process /p /r <process id>

Información del proceso de volcado:

!process <process id>

Solución de problemas de pruebas de confiabilidad de los aspectos básicos del dispositivo mediante Windows HLK