이 항목에서는 HLK 드라이버, 시스템 및 소프트웨어 디바이스 테스트를 자동화하는 일련의 Windows 스크립팅 지원 단계를 안내합니다. 이러한 자동화를 통해 Windows HLK UI(사용자 인터페이스)를 사용하지 않고 Windows HLK 테스트를 실행할 수 있습니다.
참고 항목
Windows HLK 실행 엔진에 알려진 문제가 있습니다. 테스트가 중단되었거나 시스템이 머신을 중지하고 Windows HLK 개체 모델이 테스트를 계속 실행 중 상태로 해석하는 경우 Windows HLK 실행 엔진은 조건을 인식하지 못하고 테스트 실행을 무기한(또는 프로젝트의 시간 제한 값에 도달할 때까지) 계속 모니터링할 수 있습니다. 이 문제의 근본 원인은 Windows HLK 실행 엔진이 Windows HLK ObjectModel에서 테스트 결과를 가져온다는 것입니다. 따라서 테스트가 여전히 실행 중이라고 간주하므로 복구를 기다리기 위해 머신 모니터를 시작하지 않게 됩니다.
작업을 수동으로 취소하고 머신을 다시 부팅하여 ObjectModel에 경고하는 것이 좋습니다. 단축된 테스트 컬렉션 파일을 사용하여 실패/취소된 테스트를 다시 실행하거나 Windows HLK Studio를 사용하여 수동으로 실행해야 할 수 있습니다. 이 문제는 이후 릴리스에서 해결될 예정입니다.
일련의 스크립트된 단계에서 Windows HLK 테스트를 실행하는 프로세스는 Windows HLK 시작 가이드와 유사한 워크플로를 따릅니다.
개별 단계는 다음과 같습니다.
Windows HLK 자동화 도구 필수 구성 요소
테스트를 시작하기 전에 Windows HLK 자동화 개념 및 하드웨어 요구 사항에 대해 잘 알고 있는지 확인합니다. Windows HLK 필수 구성 요소를 참조하세요.
1단계: 테스트 서버에 컨트롤러 및 지원 프로그램 설치
테스트 서버 컴퓨터는 운영 체제와 함께 설치하고 Windows HLK 필수 구성 요소에 설명된 대로 구성해야 합니다. 그런 후 다음 프로그램을 설치할 수 있습니다.
Windows HLK. Windows HLK를 설치하는 방법에 대한 자세한 지침은 1단계: 테스트 서버에 컨트롤러 및 Studio 설치를 참조하세요.
Windows PowerShell 3.0. KB2506143을 참조하세요.
Microsoft Excel(Excel 2007, Excel 2010 또는 Excel 2013).
Windows XP용 Office 주 Interop 어셈블리
Important
이 특정 버전은 Excel을 내보내는 데 필요합니다.
office.dll 및 Microsoft.Office.Interop.Excel.dll을 다운로드하고 %WTTSTDIO%에 복사합니다. 이러한 프로그램을 사용하여 8단계: Excel에서 테스트 결과 분석을 지원합니다.
Windows HLK 컨트롤러 소프트웨어의 성공적인 설치를 확인하려면 테스트 서버의 C:\Program Files (x86)\Windows Kits\8.1\Hardware Certification Kit\Studio에서 다음 프로그램을 확인합니다.
hlkexecutionengine.exe
Microsoft.Windows.Kits.Hardware.Certification.Management.dll
Microsoft.Windows.Kits.Hardware.Certification.Project.dll
Microsoft.Windows.Kits.Hardware.Certification.Testcollection.dll
Windows PowerShell 3.0의 성공적인 설치를 확인하려면 다음을 수행합니다.
Windows PowerShell 3.0 확인
Windows 7을 실행하는 컴퓨터에서 Windows PowerShell 3.0 세션 x86 버전을 열려면 시작을 클릭하고 모든 프로그램, 보조프로그램을 클릭한 후 Windows PowerShell을 클릭하고 Windows PowerShell(x86)을 마우스 오른쪽 단추로 클릭한 다음, 관리자 권한으로 실행을 클릭합니다.
Windows 8 또는 Windows Server 2012를 실행 중인 컴퓨터에서 Windows PowerShell 3.0 세션, x86 버전을 열려면 PowerShell 시작의 지침을 따릅니다.
Get-Command -Module HardwareCertification
을 입력하여 다음 Windows HLK 자동화 cmdlet 목록을 확인합니다.Export-HwCertTestCollectionToXml
Import-HwCertTestCollectionFromXml
Merge-HwCertTestCollectionFromPackage
Merge-HwCertTestCollectionFromXm
New-HwCertTestCollectionExcelReport
New-HwCertTestCollection
New-HwCertProjectDefinitionFile
필요에 따라 다음 명령을 사용하여 자동 연속으로 디버그 메시지 출력을 설정할 수 있습니다.
$DebugPreference = "Continue";
2단계: 테스트 시스템에 HLK 클라이언트 설치
테스트 시스템에 HLK 클라이언트를 설치하려면 2단계: 테스트 시스템에 클라이언트 설치에 있는 지침을 따릅니다.
참고 항목
컴퓨터에 Windows HLK 클라이언트 소프트웨어를 설치하면 컴퓨터가 Windows HLK 컨트롤러 기본 풀에 자동으로 추가됩니다. 기본 풀은 다음 단계에서 정의하는 프로젝트 정의 파일에서만 지원됩니다.
각 테스트 컴퓨터의 디바이스 관리자에서 테스트 디바이스의 하드웨어 ID 또는 디바이스 클래스를 찾으려면 디바이스에 대한 하드웨어 ID 및 디바이스 설정 클래스 검색을 참조하세요.
3단계: 컨트롤러 또는 테스트 서버에서 테스트 프로젝트 정의 파일 만들기
프로젝트 정의 파일(PDEF라고도 함)은 테스트 프로젝트의 대상 및 머신별 부분을 정의합니다. 테스트 및 결과별 부분은 테스트 컬렉션 파일에 정의됩니다. 이러한 파일은 프로젝트 구성, 범위 및 결과를 완벽하게 설명합니다.
PDEF 파일 형식 및 보조 PDEF 정보에 대한 설명은 PDEF 참조를 참조하세요.
C:\Temp\DefinitionFile\device-win8client-x64-auto.xml라는 예제 테스트 프로젝트 정의 파일이 여기에 표시됩니다.
<ProjectDefinitionData Controller="controllername" Database="HLKJobs" Timeout="120" User="user">
<Project Name="Project-win8client-x64">
<SchedulerType>AdaptiveOrderOptimized</SchedulerType>
<MultiDeviceTestGroup>true</MultiDeviceTestGroup>
<TestStatusToSkip>Pass</TestStatusToSkip>
<Product Name="Product-win8client-x64" OsPlatform="Windows 8 Client x64" MachinePool="Test">
<Family Name="Family-win8client-x64">
<Target TargetType="Device" Id="HWID"/>
</Family>
<Machine Name="TEST-CLIENT-A" Role="SUT"/>
<Machine Name="TEST-CLIENT-B" Role="SUT"/>
</Product>
<Packages Path="C:\temp"/>
</Project>
</ProjectDefinitionData>
다음 표에서는 자식 요소와 특성을 설정해야 하는 XML 노드별로 그룹화하여 정의합니다.
프로젝트
Xml | 속성 | Description |
---|---|---|
attribute |
속성 |
사용자가 지정한 프로젝트의 이름입니다. |
attribute |
컨트롤러 |
컨트롤러의 이름입니다. |
attribute |
데이터베이스 |
컨트롤러 데이터베이스의 고정 이름(예: HLKJobs)입니다. |
attribute |
시간 제한 |
실행 도구가 작업을 모니터링하는 시간(시간 단위)입니다. 테스트 통과가 이 값보다 오래 실행되면 도구는 모든 테스트를 중지합니다. |
요소 |
SchedulerType |
실행 엔진에 대한 예약 모드를 정의하기 위해 테스트를 예약하는 데 사용되는 선택적 열거형 값입니다. 유효한 값은 다음과 같습니다.
|
요소 |
MultiDeviceTestGroup |
다중 디바이스 테스트를 사용하도록 설정하기 위해 TRUE로 설정된 부울 플래그입니다. |
요소 |
TestStatusToSkip |
테스트를 예약할 때 실행 엔진의 건너뛰기 모드를 정의하는 데 사용되는 선택적 열거형 값입니다. 유효한 값은 Pass, Fail 또는 NoData입니다. |
요소 |
Product |
이 프로젝트의 제품입니다. 항목이 하나만 있어야 합니다. |
요소 |
Package(패키지) |
이 프로젝트의 .hlkx 패키지를 저장할 경로입니다. |
Product
Xml | 속성 | Description |
---|---|---|
attribute |
속성 |
테스트하는 제품의 이름입니다. |
attribute |
OSPlatform |
제품에 대한 Windows 버전입니다. 다른 버전의 Windows 실행하는 이 제품에 대해 지정된 모든 컴퓨터는 무시됩니다. |
attribute |
MachinePool |
테스트 중인 제품에 대해 지정된 테스트 컴퓨터를 포함하는 머신 풀입니다. 이것은 선택적 매개 변수입니다. 지정하지 않으면 기본 머신 풀이 사용됩니다. 머신 풀이 지정된 경우 기존 머신 풀을 참조해야 합니다. 이 매개 변수는 Machine 매개 변수와 함께 작동합니다. MachinePool 매개 변수가 지정되었지만 Machine 매개 변수가 지정되지 않은 경우 지정된 머신 풀의 모든 컴퓨터에서 테스트가 실행됩니다. |
요소 |
패밀리 |
이 제품에 속하는 대상 패밀리 집합입니다. |
요소 |
컴퓨터 |
테스트에 사용할 하나 이상의 머신입니다. 이 매개 변수가 비어 있으면 지정된 풀의 모든 머신이 일치하고 테스트에 사용됩니다. |
패밀리
Xml | 속성 | Description |
---|---|---|
attribute |
속성 |
프로젝트에서 테스트하는 대상 패밀리의 이름입니다. |
요소 |
대상 |
이 패밀리에 속하는 대상 집합입니다. 대상은 테스트를 위해 선택할 수 있는 디바이스 또는 드라이버입니다. |
대상
Xml | 속성 | Description |
---|---|---|
attribute |
TargetType |
대상의 형식입니다. 유효한 값은 Device, System 및 TargetCollection입니다. |
attribute |
ID |
Target의 고유 식별자입니다. 예를 들어 TargetType 매개 변수를 값 Device로 설정하면 Id는 Hardware Id, HWID로 설정됩니다. TargetType을 값 System으로 설정하면 Id 값은 무시됩니다. |
요소 |
ManualSelectFeature |
수동으로 추가된 기능을 지정합니다. |
머신
Xml | 속성 | Description |
---|---|---|
attribute |
속성 |
테스트 컴퓨터의 이름입니다. 이것은 선택적 매개 변수입니다. 머신 이름이 지정된 경우:
|
attribute |
역할 |
컴퓨터가 SUT(테스트 중인 시스템)인 경우 이 특성을 SUT로 지정해야 합니다. 컴퓨터가 다중 컴퓨터 테스트에 사용되는 보조 클라이언트인 경우 특성을 CLIENT로 지정해야 합니다. 이 특성을 지정하지 않으면 기본적으로 이 컴퓨터는 SUT(테스트 중인 시스템)입니다. |
Package(패키지)
Xml | 속성 | Description |
---|---|---|
attribute |
Path |
프로젝트 실행 시 생성되는 제출 패키지의 폴더입니다. |
프로젝트 정의 파일 생성
xml 또는 텍스트 편집기를 사용하거나 관리 도구 New-HwCertProjectDefinitionFile cmdlet을 사용하여 PDEF를 만들 수 있습니다. 관리 도구 cmdlet을 사용하는 경우 아래에 나열된 제한 사항이 있는 PDEF를 생성할 수 있습니다. PDEF 파일 스키마에 대해 유효한 변경 내용을 사용하여 생성된 PDEF xml을 수동으로 또는 프로그래밍 방식으로 업데이트할 수 있습니다.
생성된 PDEF는 프로젝트에 대한 단일 <Project> 요소 및 단일 <Product> 요소만 포함할 수 있습니다.
<Packages> 요소의 <Path> 특성은 비어 있거나 [PACKAGES] 토큰으로 설정해야 합니다.
<Project> 요소의 <TestCollectionStatusLocation> 특성은 빈 문자열로 설정해야 합니다.
<SchedulerType> 요소는 AdaptiveResourceOptimized로 설정해야 합니다.
<Product> 요소의 <OsPlatform> 특성은 이 프로젝트에 대해 지정된 풀의 첫 번째 머신에서 파생된 OSPlatform 값으로 설정해야 합니다.
New- HwCertProjectDefinitionFile cmdlet의 매개 변수는 아래에 설명되어 있습니다.
OutputAutomatedPdef - 다음 PDEF xml 특성의 자동 생성을 처리하는 부울 플래그입니다.
<Controller> = "[MACHINE]
<TestCollectionReadLocation> = "[FILTERED_TEST_COLLECTION]
<Path> = "[PACKAGES]"
TestCollectionFilePath - PDEF xml에 있는 <Project> 요소의 <TestCollectionReadLocation> 특성에 저장된 테스트 컬렉션 xml 파일의 전체 경로입니다. 이 값과 OutputAutomatedPdef가 제공되지 않으면 경로가 빈 문자열로 설정됩니다.
ControllerName - PDEF xml의 <ProjectDefinitionData> 요소의 <Controller> 특성에 저장된 컨트롤러의 이름입니다. 이 값과 OutputAutomatedPdef가 제공되지 않으면 컨트롤러 이름이 현재 머신의 이름으로 설정됩니다.
PdefFilePath - 출력 PDEF xml 파일의 이름입니다. 제공되지 않은 경우 경로는 다음 형식으로 자동 생성됩니다.
%userprofile%\\desktop\\PDEF_Files\\PDEF_{time_date}\\PDEF_{os_platform_name}_{time_date}.xml
ProjectName - PDEF xml에 있는 <Project> 요소의 <Name> 특성에 저장된 프로젝트의 이름입니다. 지정하지 않으면 현재 날짜 타임스탬프를 사용하여 이름이 자동으로 생성됩니다.
EnableMultiDeviceTest - PDEF xml의 <MultiDeviceTestGroup> 요소에 저장된 프로젝트의 다중 디바이스 예약을 처리하는 부울 플래그입니다. 지정하지 않으면 다중 디바이스 예약을 사용할 수 없습니다.
SkipTestStatus - PDEF xml의 <TestStatusToSkip> 요소에 저장되는 테스트 예약을 위한 건너뛰기 모드입니다. 유효한 값은 Pass, Fail 및 NoData입니다. 제공하지 않으면 기본 건너뛰기 모드는 Pass입니다.
EnableIsolateTargets - 검색된 각 대상에 대해 개별 디바이스 패밀리를 만들 수 있도록 하는 부울 플래그입니다. 지정하지 않으면 대상은 디바이스 클래스별로 패밀리로 그룹화됩니다.
다음 두 매개 변수는 프로젝트에 대한 머신 풀을 지정합니다. 매개 변수를 하나만 제공해야 합니다. 매개 변수를 제공하지 않거나 두 매개 변수를 모두 제공하는 경우 오류가 발생합니다.
MachineList - 쉼표로 구분된 목록으로 머신 이름을 지정합니다. 지정된 모든 머신은 동일한 기존 풀 또는 기본 풀에 있어야 합니다.
MachinePool - 기존 머신 풀의 이름입니다.
다음 6개의 매개 변수는 프로젝트의 대상 유형을 지정합니다. 매개 변수를 하나만 제공해야 합니다. 매개 변수를 제공하지 않거나 여러 매개 변수를 제공하는 경우 오류가 발생합니다.
RunSystemTest - 프로젝트는 전체 시스템을 테스트하기 위한 것입니다. 단일 TargetType = System이 있는 하나의 대상 패밀리가 생성됩니다.
TestAllDevices - 프로젝트는 지정된 머신에서 검색된 모든 대상을 테스트하기 위한 것입니다.
HwIdList - 쉼표로 구분된 목록으로 대상 하드웨어 ID를 지정합니다. 목록의 각 하드웨어 ID를 부분적으로 지정할 수 있습니다. 이 경우 하드웨어 ID 형식과 관련하여 부분적으로 지정된 값을 하위 문자열로 사용하여 일치하는 하드웨어 ID를 식별합니다. 문자열은 대/소문자를 구분하지 않는 ASCII로 비교됩니다.
DriverList - 쉼표로 구분된 목록에서 대상 드라이버의 이름을 지정합니다. UMDF 드라이버(.DLL)는 현재 지원되지 않습니다. 이러한 디바이스는 Windows 디바이스 클래스 GUID 또는 모든 대상의 일부로 HWID를 사용하여 계속 검색할 수 있습니다.
ContainerIdList - 쉼표로 구분된 목록에서 컨테이너 ID 값을 지정합니다. 각 컨테이너 ID 값은 GUID 형식이어야 합니다.
ClassIdList - 쉼표로 구분된 목록에서 클래스 ID 값을 지정합니다. 각 클래스 ID 값은 GUID 형식이어야 합니다.
4단계: 컨트롤러 또는 테스트 서버의 프로젝트 정의 파일을 기준으로 테스트의 전체 목록 생성
관리 도구 cmdlet인 New-HwCertTestCollection을 사용하여 프로젝트의 대상 테스트에 필요한 테스트의 전체 목록을 생성할 수 있습니다. Windows Powershell 세션에서 관리 도구 cmdlet을 사용하는 방법의 예는 다음과 같습니다. (이 단계는 선택 사항입니다.)
New-HwCertTestCollection -ProjectDefinitionFile C:\Temp\DefinitionFile\device-win8client-x64-auto.xml | Export-HwCertTestCollectionToXml -Output c:\temp\master.xml -TestPassIdentifier "TP001"
프로젝트 정의 파일에 지정된 대상을 더 이상 사용할 수 없는 경우 경고가 표시되고 테스트 컬렉션 생성이 계속됩니다. 이 경우 테스트의 전체 목록을 가져오는 것이 좋습니다.
사용할 수 없는 대상만 포함하는 프로젝트 정의 파일의 보조 복사본을 만듭니다. 테스트 목록 생성 시간은 지정된 대상 수에 따라 달라지므로 이전 실행에서 사용할 수 없었던 대상만 보조 복사본에 유지하는 것이 좋습니다.
대상을 사용할 수 없게 만든 문제를 해결합니다. 예를 들어 풀의 특정 머신이 READY 상태가 아닐 수 있습니다.
프로젝트 정의 파일의 보조 복사본을 사용하여 테스트의 보조 목록을 생성합니다.
테스트의 초기 및 보조 목록을 병합합니다. 이 작업은 보조 목록의 <TestCollectionRecord> 요소를 초기 목록에 추가하여 수동으로 수행할 수 있습니다.
생성된 출력 xml 파일(c:\temp\master.xml)의 예는 다음과 같습니다.
<?xml version="1.0" ?>
<ArrayOfTestCollectionRecord
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
mlns:xsd="http://www.w3.org/2001/XMLSchema">
<TestCollectionRecord
Name="Disk Stress (LOGO)"
Guid="738735f7-245a-4b39-9d81-20339ce31fd4"
TargetName="Disk"
TargetId="DiskId"
TargetType="Device"
HlkBuildVersion="10.000.10020.10020"
TestPassIdentifier="TP001"
OsPlatform="Windows 10 Client x64">
<ContentLevelSet>Reliability</ContentLevelSet>
<ContentLevelSet>Certification</ContentLevelSet>
<ScheduleOptionSet>Distributable</ScheduleOptionSet>
<ScheduleOptionSet>MultipleDEvices</ScheduleOptionSet>
<FeatureMapped>Device.Storage.Hd</FeatureMapped>
</TestCollectionRecord>
</ArrayOfTestCollectionRecord>
특성이 정의되는 위치는 다음과 같습니다.
TargetId - 테스트 컴퓨터의 대상 하드웨어 ID
TargetName - 테스트 컴퓨터의 대상 이름
OSPlatform - 지정된 대상에 대한 테스트 컴퓨터의 Windows 버전
Guid - 대상 테스트를 위해 검색된 작업 ID
Name - 대상 테스트를 위해 검색된 작업의 이름
TestPassIdentifier - 테스트 통과를 식별하는 문자열 값
TargetType - 프로젝트에서 테스트된 제품의 유형(디바이스, 시스템 또는 필터)
Feature Mapped - 검색된 작업이 대상에 대해 테스트하는 기능
ContentLevelSet - 대상 테스트를 위해 검색된 작업의 범주
ScheduleOptionSet - 테스트 예약을 대한 옵션. 유효한 값은 다음과 같습니다.
Manual - 테스트에는 실행 시 수동 작업이 필요합니다.
Distributable - 여러 컴퓨터에 대해 테스트를 예약하고 사용 가능한 첫 번째 컴퓨터에서 실행할 수 있습니다.
MultipleDevices - 동일한 컴퓨터의 여러 디바이스에서 동시에 테스트를 실행할 수 있습니다.
MultipleMachines - 역할이 다른 여러 컴퓨터에서 테스트를 실행하도록 예약할 수 있습니다.
SpecialConfiguration - 테스트를 실행하려면 특별한 컴퓨터 구성이 필요합니다.
HLKBuildVersion - 테스트 컬렉션을 생성하는 데 사용된 HLK 버전입니다.
5단계: 컨트롤러에서 테스트의 전체 목록 필터링
관리 도구 PowerShell cmdlet인 Import-HwCertTestCollectionFromXml을 사용하여 지정된 특성 값으로 테스트의 전체 목록을 필터링할 수 있습니다. (이 단계는 선택 사항입니다.) 4단계에 나열된 대로 생성된 출력 xml 파일의 특성을 사용하여 목록을 필터링할 수 있습니다. 출력 테스트 컬렉션 테스트 레코드는 예약에 필요한 순서로 정렬되어야 합니다. 다음 예제에서는 기본 테스트 범주가 마스터 목록을 필터링하고 정렬하는 데 사용됩니다. Windows PowerShell 프롬프트에서 다음 명령을 입력합니다.
Import-HwCertTestCollectionFromXml -Input C:\Temp\master.xml | ? { $_.ContentLevelSet.Contains("Basic") } | sort -Property GUID | Export-HwCertTestCollectionToXml -Output c:\temp\basic.xml
6단계: 컨트롤러의 프로젝트 정의 파일에 필터링된 테스트 목록 추가
텍스트 또는 xml 편집기에서 PDEF를 업데이트하여 테스트 컬렉션 입력 xml 파일의 위치와 출력 테스트 결과의 위치를 추가합니다. 업데이트된 PDEF C:\Temp\DefinitionFile\device-win8client-x64-auto-basic.xml의 예는 다음과 같습니다.
<ProjectDefinitionData Controller="controllername" Database="HLKJobs" Timeout="120" User="user">
<Project Name="Project-win8client-x64" TestCollectionReadLocation="C:\temp\basic.xml" TestCollectionStatusLocation="basic_collection_status.xml">
<MultiDeviceTestGroup>true</MultiDeviceTestGroup>
<TestStatusToSkip>Pass</TestStatusToSkip>
<Product Name="Product-win8client-x64" OsPlatform="Windows 8 Client x64" MachinePool="Test">
<Family Name="Family-win8client-x64">
<Target TargetType="Device" Id="HWID"/>
</Family>
<Machine Name="TEST-CLIENT-A" Role="SUT"/>
<Machine Name="TEST-CLIENT-B" Role="SUT"/>
</Product>
<Packages Path="C:\temp"/>
</Project>
</ProjectDefinitionData>
특성이 정의되는 위치는 다음과 같습니다.
TestCollectionReadLocation - 필터링된 테스트 컬렉션 xml 파일의 경로
TestCollectionStatusLocation - 테스트 결과를 포함하는 출력 xml 파일의 경로
7단계: 컨트롤러에서 테스트 프로젝트 실행
명령줄에서 다음을 실행합니다.
hlkexecutionengine.exe /Project "C:\Temp\DefinitionFile\device-win10client-x64-auto-basic.xml" /RunCollection
명령이 완료되면 다음 파일이 만들어집니다.
패키지 파일 name.hlkx는 PDEF에 정의된 대로 PackagePath 특성에 지정된 위치에서 각 테스트 실행에 대해 만들어집니다(3단계: 컨트롤러 또는 테스트 서버에서 테스트 프로젝트 정의 파일 만들기 참조). 패키지 파일 이름은 프로젝트 실행의 프로젝트 이름 및 날짜/시간으로 구성됩니다.
결과는 XML 파일에 표시됩니다. 예제 결과 파일(C:\temp\basic_collection_status.xml)은 아래에 제공됩니다.
<?xml version="1.0" ?> <ArrayOfTestCollectionRecord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" mlns:xsd="http://www.w3.org/2001/XMLSchema"> <TestCollectionRecord Name="Disk Stress (LOGO)" Guid="738735f7-245a-4b39-9d81-20339ce31fd4" TargetName="Disk" TargetId="DiskId" TargetType="Device" HlkBuildVersion="10.000.10020.10020" TestPassIdentifier="TP001" OsPlatform="Windows 8 Client x64"> <ContentLevelSet>Reliability</ContentLevelSet> <ContentLevelSet>Certification</ContentLevelSet> <ScheduleOptionSet>Distributable</ScheduleOptionSet> <ScheduleOptionSet>MultipleDEvices</ScheduleOptionSet> <FeatureMapped>Device.Storage.Hd</FeatureMapped> <Result StartTime="2013-03-14T17:59:45.117-07:00" Status="Passed" FiltersAppliedCount="0" SourcePath="TEST-MACHINE-2A" InstanceId="67" FeatureDetected="Device.DevFund.CDA Device.DevFund.DriverFramework.AllDrivers Device.DevFund.DriverFramework.KMDF Device.DevFund.INF Device.DevFund.Memory Device.DevFund.Reliability.Interrupts Device.DevFund.Reliability Device.DevFund.ReliabilityDisk Device.DevFund.Security Device.DevFund.Server Device.Storage.Hd.Iscsi Device.Storage.Hd.MultipleAccess.PersistentReservation Device.Storage.Hd.PersistentReservation Device.Storage.Hd.ScsiProtocol Device.Storage.Hd" /> </TestCollectionRecord> </ArrayOfTestCollectionRecord>
특성이 정의되는 위치는 다음과 같습니다.
StartTime - 테스트 실행이 시작된 날짜/시간
Status - pass 또는 fail로 설정
FiltersAppliedCount - 결과 로그에 적용된 필터 수
SourcePath - 프로젝트 실행에 대해 생성된 패키지 .hlkx 파일의 파일 경로
InstanceID - 테스트 컴퓨터에서 대상의 디바이스 인스턴스 ID
FeatureDetected - 테스트 대상에 대해 검색된 기능
테스트 실행 중지/다시 시작
언제든지 테스트 실행을 중지하고 다시 시작할 수 있습니다. 클라이언트 머신에서 현재 실행 중인 테스트는 계속 실행되지만 추가 테스트는 예약되지 않습니다. 예약 논리에 따르면 사용 가능한 머신보다 더 많은 테스트를 큐에 대기하지 않으므로 실행 중인 테스트의 수는 사용 가능한 머신의 수와 같습니다. 테스트를 계속 실행하고 테스트 결과를 Windows HLK 프로젝트로 반환할 수 있지만, Windows HLK 실행 엔진 도구에서 생성된 상태 xml 파일에는 프로세스가 중지될 때 실행 중이던 테스트의 pass/fail 값이 포함되지 않습니다. 따라서 프로젝트를 다시 시작하면 자동화 도구가 종료된 후 한 번, 프로세스가 다시 시작될 때 한 번, 테스트 집합이 두 번 실행될 수 있습니다. 프로세스의 초기 종료는 일반적으로 머신 상태 문제를 조사해야 한다는 것을 의미하기 때문에 이전에 예약된 테스트의 최종 일괄 처리에 대한 이 다시 실행 동작은 의도적으로 수행되며 일반적으로는 바람직합니다.
중지 메커니즘
콘솔 창에 Ctrl+C 명령을 입력하여 테스트 프로세스를 중지할 수 있습니다. Windows HLK 실행 엔진은 새 테스트 실행을 중지하고 요약 xml 파일 및 실행 엔진 로그에 최종 상태를 쓰는 것과 같은 간단한 정리 프로세스를 시작합니다.
다시 시작 메커니즘
이 프로세스의 기본적인 개략적인 개요는 다음과 같습니다.
Windows HLK Studio를 사용하여 테스트 프로세스를 중지하기 전에 실행 중이던 프로젝트의 .hlkx 패키지를 만듭니다.
Windows HLK 실행 엔진 프로젝트 정의 xml 파일을 편집하여 새 입력 및 출력 상태 파일을 제공합니다.
프로젝트 정의 파일을 사용하여 HlkExecutionEngine.exe를 다시 시작합니다.
Windows HLK Studio를 사용하여 두 개의 부분 HLK 프로젝트를 새로운 전체 .hlkx 파일로 병합합니다.
이 문서의 “후속 분석 옵션” 섹션에 설명된 대로 경쟁 .hlkx 파일에서 분석 단계를 실행합니다.
이 프로세스의 자세한 단계는 다음과 같습니다.
테스트 실행이 중지되기 전에 완료된 결과의 .hlkx 패키지를 만들려면 Windows HLK Studio를 시작합니다.
Windows HLK Studio에서 중지된 프로젝트의 프로젝트 이름을 두 번 클릭합니다. 프로젝트 이름은 프로젝트 xml 파일과 동일합니다. (프로젝트 xml 파일은 타임스탬프가 지정된 폴더의 C:\Users\LocalAdminUser\Desktop\PDEF_Files 아래에서 찾을 수 있습니다.)
Windows HLK Studio의 패키지 탭에서 패키지 만들기를 클릭하고 패키지를 저장합니다.
참고 항목
다음 단계는 클라이언트 머신이 기본 풀에서 시작되도록 하여 초기 테스트 통과가 실행된 경우에만 수행해야 합니다.
테스트는 머신이 기본이 아닌 풀에 있는 경우에만 실행할 수 있으며, Windows HLK 실행 엔진은 Ctrl+C 작업을 완료하기 전에 현재 실행 중인 모든 테스트가 완료될 때까지 기다리지 않으므로 Windows HLK 실행 엔진이 중지된 후 모든 머신이 기존 머신 풀에 유지됩니다. 원래 프로젝트 xml 파일이 기본 풀에 머신을 지정한 경우 클라이언트 머신을 기본 풀로 다시 이동해야 합니다. 이 작업은 Windows HLK Studio UI의 맨 위에 있는 구성 메뉴를 사용하거나 Windows HLK 관리자 애플리케이션을 통해 수행할 수 있습니다.
부분 .hlkx 패키지가 생성되면 Windows HLK 실행 엔진 프로젝트 파일을 업데이트하여 나머지 실행을 준비해야 합니다. C:\Users\LocalAdminUser\Desktop\PDEF_Files로 이동하여 테스트 실행에서 올바른 타임스탬프가 지정된 폴더를 찾습니다. 폴더의 xml 파일 집합에서 프로젝트 xml 파일은 “Status_”, “FTC_” 또는 “TC_”가 앞에 붙지 않은 파일입니다. 메모장 또는 다른 텍스트 편집기에서 다음과 같이 이 파일을 편집합니다.
프로젝트 xml 파일에서 TestCollectionReadLocation 및 TestCollectionStatusLocation의 두 필드를 편집해야 합니다. Windows HLK 실행 엔진 도구가 다시 시작할 위치를 파악하려면 이전 TestCollectionStatusLocation 값(결과의 xml 출력 파일)이 입력 파일이 되어야 합니다. TestCollectionStatusLocation 값을 TestCollectionReadLocation 값으로 복사합니다. 그런 다음, 새 TestCollectionStatusLocation 값을 설정합니다. TestCollectionStatusLocation 값은 임의의 값(예: "C:\Users\LocalAdminUser\Desktop\PDEF_Files\Rerun.xml")일 수 있습니다.
필요에 따라 프로젝트 노드 Name 값을 수정하여 나중에 HLK Studio에서 프로젝트를 더 쉽게 찾을 수 있도록 합니다. (현재 Name 값이 이미 사용되었으므로 Windows HLK 실행 엔진에서 새 프로젝트 이름을 만듭니다.)
이 도구를 다시 시작하려면 관리자 권한을 사용하여 새 명령 프롬프트 창을 엽니다. Windows HLK Studio 디렉터리(%wttstdio%)로 이동합니다. 다음 명령을 입력합니다.
HlkExecutionEngine.exe /Project <project xml file location> /RunCollection
이 명령은 Windows HLK 실행 엔진을 시작합니다. 이 엔진은 도구가 중지되기 전에 실행되었던 이전 테스트 집합을 사용하여 다시 시작됩니다. 모든 테스트가 완료될 때까지 실행을 계속할 수 있습니다.
두 번째 테스트 집합이 완료되면 두 프로젝트를 함께 병합해야 합니다. 이렇게 하려면 Windows HLK Studio를 엽니다. 생성된 가장 최근 프로젝트를 확인합니다. 일반적으로 가장 최근 프로젝트는 수행된 두 번째 실행에서 수행된 프로젝트입니다(다른 사용자가 이 시간 동안 프로젝트를 만들지 않는 한). 또는 프로젝트 xml 파일에서 프로젝트 Name 값을 변경한 경우 새 이름으로 프로젝트를 식별할 수 있습니다.
두 번째 실행에서 만든 새 프로젝트를 두 번 클릭합니다. 패키지 탭에서 패키지 병합을 클릭합니다. 병합할 패키지 대화 상자에서 추가를 클릭하고 HLK 실행 엔진의 첫 번째 실행에서 만든 첫 번째 부분 .hlkx 패키지로 이동합니다. 저장을 클릭하고 주 창에서 패키지 만들기를 클릭합니다.
8단계: Excel에서 테스트 결과 분석
관리 도구 PowerShell 명령을 사용하여 프로젝트에 대한 집계된 테스트 결과 목록을 생성할 수 있습니다. 그런 다음, Excel에서 집계된 결과를 분석할 수 있습니다.
프로젝트에 대한 테스트 결과 목록을 집계하는 방법에는 두 가지가 있습니다.
XML 기반 출력 파일을 사용합니다. 컨트롤러 또는 테스트 서버에서 열려 있는 Windows PowerShell 세션의 XML 기반 테스트 결과를 병합하는 방법의 예가 표시됩니다.
dir -s "c:\temp\*.xml" | Merge-HwCertTestCollectionFromXml -ValidationXmlPath "C:\temp\master.xml" | Export-HwCertTestCollectionToXml -Output "C:\Temp\merged_1.xml" -TestPassIdentifier "TP003" dir -s "c:\temp\*.xml" | Merge-HwCertTestCollectionFromXml -ValidationXmlPath "C:\temp\master.xml" | Export-HwCertTestCollectionToXml -Output "C:\Temp\merged_2.xml" -TestPassIdentifier "TP004"
프로젝트 .hlkx 출력 파일을 사용합니다. 컨트롤러 또는 테스트 서버에서 열려 있는 Windows PowerShell 세션의 .hlkx 출력 파일을 병합하는 방법의 예가 표시됩니다.
dir -s "c:\temp\*.hlkx" | Merge-HwCertTestCollectionFromPackage -ValidationXmlPath "C:\temp\master.xml" | Export-HwCertTestCollectionToXml -Output "C:\Temp\merged_1.xml" -TestPassIdentifier "TP003" dir -s "c:\temp\*.hlkx" | Merge-HwCertTestCollectionFromPackage -ValidationXmlPath "C:\temp\master.xml" | Export-HwCertTestCollectionToXml -Output "C:\Temp\merged_2.xml" -TestPassIdentifier "TP004"
ValidationXmlPath가 Merge-HwCertTestCollectionFromXml 또는 Merge-HwCertTestCollectionFromPackage cmdlet에 대한 매개 변수로 지정된 경우 집계 알고리즘은 마스터 테스트 컬렉션에 나열된 모든 테스트에 테스트 컬렉션 파일의 집계에 대해 하나 이상의 결과가 지정되었는지 확인합니다. 이 조건은 TestPassIdentifier cmdlet 매개 변수에 지정된 것과 동일한 TestPassIdentifier 값이 있는 테스트 컬렉션에 대해서만 확인됩니다. 이 조건이 true가 아니면 집계가 취소되고 오류가 발생합니다.
테스트 통과에 대해 실행되지 않는 테스트를 확인하려면 집계에 대해 지정되었지만 ValidationXmlPath를 지정하지 않는 테스트 컬렉션 파일 목록에 마스터 테스트 컬렉션을 포함합니다. 이 경우 출력 집계 테스트 컬렉션이 생성됩니다. 컬렉션에는 마스터 컬렉션에 나열된 모든 테스트가 포함되어 있지만 그중 일부는 결과가 없을 수 있습니다.
집계된 테스트 결과 목록(C:\temp\merged.xml)에는 전체 테스트 목록에 대한 정보가 포함됩니다. 필요한 테스트가 실행되지 않은 경우 집계된 테스트 결과 목록에 필요한 테스트가 실행되지 않은 것으로 표시됩니다. 모든 테스트 결과가 병합되므로 동일한 TestPassIdentifier 특성 이름 값을 사용하여 여러 테스트를 실행하면 일관성 없는 결과 보고가 생성됩니다. 각 테스트 통과에 다른 이름을 사용하는 것이 좋습니다.
집계된 테스트 결과 목록을 만든 후에는 컨트롤러 또는 테스트 서버의 Windows PowerShell 세션에서 명령을 사용하여 Excel 스프레드시트를 생성할 수 있습니다. Excel 스프레드시트 보고서를 만드는 명령의 예는 다음과 같습니다.
New-HwCertTestCollectionExcelReport ("C:\Temp\merged_1.xml", "C:\Temp\merged_2.xml" ) -ExcelPath 'c:\temp\report.xls' -ResultCount 1
ResultCount는 가장 최근 결과의 최대 수로 정의되며 이 데이터는 각 테스트에 대한 Excel 보고서에 저장됩니다.
Excel 스프레드시트 보고서를 만드는 명령을 실행한 후 생성된 출력의 예는 다음과 같습니다.
결과 Excel 보고서에는 다음 제목이 포함됩니다.
총 테스트 - 이 테스트 통과의 총 테스트 수입니다.
총 통과 - 이 테스트 통과의 총 테스트 수입니다.
총 패스(필터 사용) - 테스트에 적용된 errata 필터가 있는 총 통과 수입니다.
총 통과 비율 - 테스트 통과 비율(총 통과/총 테스트)입니다.
총 실패 - 이 테스트 통과의 총 실패 횟수(총 테스트 - 총 통과)입니다.
N-1 개선 - 이 테스트 통과와 이전 테스트 통과(왼쪽 열) 사이에서 달성된 새 통과 수입니다.
N-1 회귀 - 이 테스트 통과와 이전 테스트 통과(왼쪽 열) 사이에서 발생한 새 실패 수입니다.
N-1 변경되지 않음 - 이 테스트 통과와 이전 테스트 통과(왼쪽 열) 사이에서 결과가 변경되지 않은 테스트 수입니다.
N-1 비교되지 않음 - 이 테스트 통과와 이전 테스트 통과(왼쪽 열) 사이에서 테스트로 인해 비교되지 않은 테스트 수는 테스트 통과 중 하나에서만 사용할 수 있었습니다.
PDEF 참조
PDEF에 지정된 보조 정보
일부 프로젝트에는 테스트를 검색하고 실행하기 위한 테스트 관련 정보가 필요합니다. 여기에는 다음 정보가 포함됩니다.
테스트 정의에 기본값이 없는 테스트 매개 변수. 선택적 <Parameter> 요소는 다음과 같은 여러 위치에서 지정할 수 있습니다(PDEF 스키마 참조).
<Test> 요소 아래. 이 경우 매개 변수 값은 특정 테스트에 대해 지정됩니다.
<Family> 요소 아래. 이 경우 매개 변수 값은 테스트에 대해 지정된 동일한 매개 변수 값으로 덮어쓰지 않는 한, Family의 모든 Target에 대한 모든 Test에 적용됩니다.
<Product> 요소 아래. 이 경우 매개 변수 값은 Family 또는 Test에 대해 지정된 동일한 매개 변수 값으로 덮어쓰지 않는 한, Product의 모든 Target에 대한 모든 Test에 적용됩니다.
자동으로 검색할 수 없는 대상 기능입니다. 선택적 <ManualSelectedFeature> 요소는 <Target> 요소 아래에 지정할 수 있습니다. 이러한 기능을 자동으로 검색된 기능과 함께 지정할 경우 테스트 검색 및 테스트 컬렉션 생성에 참여합니다.
프로젝트 정의 파일 스키마
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:attribute name="User" type="xsd:string"/>
<xsd:attribute name="Controller" type="xsd:string"/>
<xsd:attribute name="Timeout" type="xsd:nonNegativeInteger"/>
<xsd:attribute name="Database" type="xsd:string"/>
<xsd:attribute name="Name" type="xsd:string"/>
<xsd:attribute name="Value" type="xsd:string"/>
<xsd:attribute name="TestCollectionReadLocation" type="xsd:string"/>
<xsd:attribute name="TestCollectionStatusLocation" type="xsd:string"/>
<xsd:attribute name="OsPlatform" type="xsd:string"/>
<xsd:attribute name="MachinePool" type="xsd:string"/>
<xsd:attribute name="Path" type="xsd:string"/>
<xsd:attribute name="Role" type="xsd:string"/>
<xsd:attribute name="TargetType">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:pattern value="((S|s)(Y|y)(S|s)(T|t)(E|e)(M|m))|((D|d)(E|e)(V|v)(I|i)(C|c)(E|e))|((T|t)(A|a)(R|r)(G|g)(E|e)(T|t)(C|c)(O|o)(L|l)(L|l)(E|e)(C|c)(T|t)(I|i)(O|o)(N|n))"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="Id" type="xsd:string"/>
<xsd:attribute name="CrashDumpCopyBack">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:pattern value="((D|d)(I|i)(S|s)(A|a)(B|b)(L|l)(E|e)|(M|m)(I|i)(N|n)(I|i))|(K|k)(E|e)(R|r)(N|n)(E|e)(L|l)|((F|f)(U|u)(L|l)(L|l))"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:element name="ProjectDefinitionData">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Project" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute ref="User" use="optional"/>
<xsd:attribute ref="Controller" use="required"/>
<xsd:attribute ref="Timeout" use="optional" default="120"/>
<xsd:attribute ref="Database" use="optional" default="HLKJobs"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Project">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="MultiDeviceTestGroup" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="TestStatusToSkip" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="Product" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element ref="Packages" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="Name" use="required"/>
<xsd:attribute ref="TestCollectionReadLocation" use="optional"/>
<xsd:attribute ref="TestCollectionStatusLocation" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="MultiDeviceTestGroup" type="xsd:Boolean"/>
<xsd:element name="TestStatusToSkip">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:pattern value="((P|p)(A|a)(S|s)(S|s))|((F|f)(A|a)(I|i)(L|l))|((N|n)(O|o)(D|d)(A|a)(T|t)(A|a))"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Product">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Family" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element ref="Machine" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="Parameter" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute ref="Name" use="required"/>
<xsd:attribute ref="OsPlatform" use="required"/>
<xsd:attribute ref="CrashDumpCopyBack" use="optional"/>
<xsd:attribute ref="MachinePool" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Family">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Target" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element ref="Parameter" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute ref="Name" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ManualSelectFeature" type="xsd:string"/>
<xsd:element name="Target">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="ManualSelectFeature" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="Test" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute ref="TargetType" use="required"/>
<xsd:attribute ref="Id" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Test">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Parameter" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute ref="Id" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Parameter">
<xsd:complexType>
<xsd:attribute ref="Name" use="required"/>
<xsd:attribute ref="Value" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Machine">
<xsd:complexType>
<xsd:attribute ref="Name" use="required"/>
<xsd:attribute ref="Role" use="optional"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Packages">
<xsd:complexType>
<xsd:attribute ref="Path" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>