Partager via


Reproduire l’échec du test en exécutant le test à partir de la ligne de commande

Il est parfois pratique de reproduire les échecs de test en exécutant les tests à partir de la ligne de commande. La documentation suivante suppose que le Kit de laboratoire matériel (HLK) a déjà été installé sur l’ordinateur contrôleur.

Exécuter un test Device Fundamentals à partir de la ligne de commande

Pour exécuter un test Device Fundamentals à partir de la ligne de commande :

  1. Créez un dossier c:\temp sur le système en cours de test (SUT).

  2. Copiez tous les fichiers du \\< dossier hckcontroller>\taefbinaries\<arch> vers c:\temp sur le SUT.

    Où <hckcontroller est le nom du contrôleur Windows Hardware Lab Kit (Windows HLK) et <arch> est la plateforme SUT.

  3. Pour installer et démarrer le service TAEF , tapez les commandes suivantes à partir d’une invite de commandes :

    1. Accédez au dossier « temp » créé ci-dessus :

      Sur X86 ou X64 : cd c:\temp

      Sur Arm ou Arm64 : cd c:\temp\MinTe

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

    3. sc start Te.Service

  4. Copiez tous les fichiers du \\< répertoire hckcontroller>\tests\<arch>\DevFund\ vers c:\temp.

  5. Remplacez le répertoire par c:\temp et exécutez la commande suivante (notez que Te.exe réside dans c:\temp\MinTe sur Arm et 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
    

    Où <nom> du cas de test est le nom du test dans le binaire de test.

    Le commutateur /name est facultatif. Étant donné que certains fichiers binaires de test contiennent plusieurs tests, le commutateur /name spécifie quels tests doivent être exécutés. S’ils ne sont pas spécifiés, tous les tests contenus dans le binaire de test sont exécutés dans l’ordre. La liste des tests d’un fichier binaire de test peut être obtenue en exécutant la commande suivante :

    Te.exe Devfund_<testname>.dll /list
    

    Par exemple, le Devfund_PnPDTest.dll contient la plupart des tests 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
    

    La commande permettant d’exécuter un seul test à partir de ce fichier binaire de test peut ressembler à ceci :

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

    Le nom du test dans le binaire de test ne sera pas exactement le même que le titre du test. Pour un mappage des noms binaires de test aux noms de test HLK, consultez Tests Device.DevFund.


Comment utiliser /BreakOnError pour entrer dans le débogueur

Si la tâche « Exécuter le test » dans un test Device Fundamentals échoue et que vous souhaitez examiner l’état du système dans le débogueur du noyau en même temps que le test enregistre un échec, vous pouvez exécuter le test manuellement à partir d’une invite de commandes avec le débogueur du noyau et passer le commutateur de ligne de commande /BreakOnError à Te.exe.

En exécutant Te.exe avec le commutateur /BreakOnError , le système s’interrompt dans le débogueur du noyau lorsque le test est prêt à consigner une erreur. Pour plus d’informations sur la configuration d’un débogueur de noyau, consultez Configuration manuelle Kernel-Mode débogage.

Pour exécuter un test Device Fundamentals avec le commutateur /BreakOnError , ajoutez le commutateur comme indiqué ci-dessous :

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

Où <nom> du cas de test est le nom du test.

Exemple de scénario de débogage

Vous pouvez examiner l’échec suivant en réexécutant le test et en faisant s’interrompre le système dans le débogueur lorsque le test enregistre l’échec à la réexécutation.

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.

Vous pouvez définir un point d’arrêt dans le débogueur à l’aide de la commande suivante :

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

Les tests Device Fundamentals s’exécutent comme Te.ProcessHost.exe (s’il existe) ou comme Te.exe (si Te.ProcessHost.exe n’existe pas). L’examen des threads en cours d’exécution dans ces processus de test peut vous aider à trier les blocages et/ou les échecs de test.

Vous pouvez obtenir l’ID de processus de Te.ProcessHost.exe en exécutant la commande suivante :

!process 0 0 Te.ProcessHost.exe

Basculez le contexte de processus dans le débogueur vers le processus de test :

.process /p /r <process id>

Informations sur le processus de vidage :

!process <process id>

Résolution des problèmes de test de fiabilité des principes de base de l’appareil à l’aide de Windows HLK