共用方式為


藉由從命令列執行測試來重現測試失敗

有時候,從命令列執行測試來重現測試失敗會很方便。 下列檔假設已在控制器電腦上安裝 Hardware Lab Kit (HLK) 。

從命令列執行裝置基本概念測試

若要從命令列執行裝置基本概念測試:

  1. 在受測的系統上建立 c:\temp 資料夾, (SUT) 。

  2. 將所有檔案從 \\<hckcontroller> \taefbinaries\<arch> 資料夾複製到 SUT 上的c:\temp

    其中 <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位於 arm 和 Arm64 上的 c:\temp\MinTe) :

    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

使用 /BreakOnError 參數執行Te.exe,會導致系統在測試準備好記錄錯誤時中斷至核心偵錯工具。 如需設定核心偵錯工具的詳細資訊,請參閱 手動設定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 對裝置基礎可靠性測試進行疑難排解