다음을 통해 공유


DF - Fuzz 개방 및 폐쇄 테스트(신뢰성)

이 테스트는 수천 개의 만들기-열기-닫기 시퀀스를 수행하고 기본 열기 작업, 직접 디바이스 열기 작업, 열기 및 닫기 스트레스 테스트와 같이 지정된 디바이스 또는 디바이스의 인스턴스를 열고 닫는 여러 가지 방법을 사용합니다.

기본 열기 작업

기본 열기 작업 동안 Fuzz 테스트는 다른 방법과 옵션을 사용하여 지정된 드라이버에서 내보낸 디바이스 또는 지정된 디바이스의 인스턴스를 반복적으로 엽니다(만들기).

Fuzz 테스트는 항상 기본 열기 작업을 수행합니다. 선택할 필요가 없으며 테스트 세션에서 제외할 수 없습니다.

Fuzz 테스트는 디바이스에 적합한 시스템 서비스(ZwXxx 루틴)를 호출하여 사용자 모드에서 모든 열린 작업을 수행합니다. 열기 호출이 디바이스에 대한 핸들을 반환하면 Fuzz 테스트는 핸들을 사용하여 테스트 세션에 대해 선택된 다른 디바이스 테스트를 수행합니다.

기본 열기 작업에는 5가지 유형이 있습니다.

  • 표준 열기: Fuzz 테스트는 디바이스를 비동기식으로 열고 기본 디바이스 이름만 지정합니다.

  • 백슬래시가 추가된 상태로 열기: Fuzz 테스트는 디바이스 내 루트 디렉터리를 열기 위한 호출인 것처럼 디바이스 이름 뒤에 백슬래시()(예: \device\cdrom\)가 오는 열기 호출을 실행합니다.

    이 작업은 드라이버 또는 파일 시스템이 네임스페이스에서 열린 요청을 관리하는 방법을 결정합니다. 특히, 디바이스가 네임스페이스에서 열린 요청을 지원하지 않는 경우 드라이버는 요청에 실패하거나 IoCreateDevice 또는 IoCreateDeviceSecure를 호출할 때 FILE_DEVICE_SECURE_OPEN 디바이스 특성을 설정하여 무단 액세스를 방지해야 합니다. 를 사용하여 디바이스 개체를 만듭니다.

  • 명명된 파이프로 열기: Fuzz 테스트는 디바이스를 열고 디바이스에 명명된 파이프를 설정합니다. 액세스 매개 변수(ShareAccess)는 처음에 읽기 및 쓰기로 설정되지만 요청이 실패하면 조정됩니다. 디바이스가 명명된 파이프를 지원하지 않으면 요청에 실패해야 합니다.

  • 메일 슬롯으로 열기: Fuzz 테스트는 디바이스를 메일 슬롯으로 엽니다. 디바이스가 이러한 유형의 연결을 지원하지 않으면 요청에 실패해야 합니다.

  • 트리 연결로 열기: Fuzz 테스트는 원격 네트워크 액세스에 사용하기 위해 디바이스를 트리 연결로 엽니다. 액세스 매개 변수(ShareAccess)는 처음에 읽기 및 쓰기로 설정되지만 요청이 실패하면 조정됩니다. 디바이스가 이러한 유형의 연결을 지원하지 않으면 요청에 실패해야 합니다.

열기 호출에 사용되는 매개 변수는 디바이스의 특성을 수용하고 호출이 성공할 가능성이 높도록 하기 위해 달라집니다. 예를 들어 호출이 디바이스의 보안 요구 사항을 충족하지 않아 기본 열기 작업이 실패하면 Fuzz 테스트는 더 적은 액세스 권한을 요청하여 열기 작업을 반복합니다. 예를 들어 쓰기 권한을 요청한 열기 작업이 보안 위반 오류를 반환하면 읽기 권한 요청과 함께 열기가 반복됩니다.

직접 디바이스 열기 작업

직접 디바이스 열기 작업 중에 Fuzz 테스트는 파일 시스템의 파일이 아니라 디바이스로 직접 디바이스를 엽니다. 직접 디바이스 열기 작업은 항상 동기식입니다. 호출이 성공하면 Fuzz 테스트는 제공된 핸들을 사용하여 선택한 다른 테스트를 수행합니다.

열기 및 닫기 테스트

열기 및 닫기 테스트 동안 Fuzz 테스트는 여러 스레드를 만들며, 각 스레드는 수천 개의 만들기-열기-닫기 시퀀스를 수행합니다. 이는 간단하고 예상되는 엄청난 양의 전화를 처리하는 운전자의 기능을 테스트합니다.

열기 및 닫기 테스트는 기본 열기 작업 및 백슬래시가 추가된 열기 테스트에서 사용된 것과 동일한 옵션을 사용하며 이러한 테스트 직전에 수행됩니다.

테스트 이진: Devfund_FuzzTest.dll 테스트 메서드: DoOpenCloseTest

테스트 세부 정보

   
사양
  • Device.DevFund.Reliability.BasicReliabilityAndPerformance
  • Device.DevFund.Reliability.BasicSecurity
  • Device.DevFund.DriverFramework.KMDF.Reliability
  • Device.DevFund.DriverFramework.UMDF.Reliability
플랫폼
  • Windows 10, 클라이언트 버전(x86)
  • Windows 10, 클라이언트 버전(x64)
  • Windows Server 2016(x64)
  • Windows 10, 클라이언트 버전(Arm64)
  • Windows 10, 모바일 버전(Arm)
  • Windows 10, 모바일 버전(Arm64)
지원되는 릴리스
  • Windows 10
  • Windows 10 버전 1511
  • Windows 10 버전 1607
  • Windows 10, 버전 1703
  • Windows 10, 버전 1709
  • Windows 10, 버전 1803
  • Windows 10, 버전 1809
  • Windows 10, 버전 1903
  • Windows 10에 대한 다음 업데이트
예상 실행 시간(분) 15
범주 시나리오
시간 제한(분) 180
다시 부팅 필요 false
특별한 구성 필요 true
형식 automatic

 

추가 설명서

이 기능 영역의 테스트에는 다음 항목에서 찾을 수 있는 필수 조건, 설정, 문제 해결 정보를 포함한 추가 설명서가 있을 수 있습니다.

테스트 실행

테스트를 실행하기 전에 테스트 요구 사항: Device.Fundamentals 안정성 테스트 필수 구성 요소에 설명된 대로 테스트 설정을 완료합니다.

문제 해결

HLK 테스트 실패의 일반적인 문제 해결은 Windows HLK 테스트 실패 문제 해결을 참조하세요.

HLK 및 WDK의 Device Fundamentals 테스트와 관련된 문제 해결 정보는 Device.DevFund 추가 설명서를 참조하세요.

추가 정보

매개 변수

매개 변수 이름 매개 변수 설명
DQ 대상 디바이스를 식별하는 데 사용되는 WDTF SDEL 쿼리 - https://go.microsoft.com/fwlink/?LinkId=232678
Wpa2PskAesSsid DUT 또는 자식 디바이스 중 하나가 WiFi 어댑터인 경우에만 필요합니다. 테스트에서 WiFi 어댑터를 테스트하는 데 사용할 수 있는 WPA2 AES WiFi 네트워크의 SSID를 제공합니다. 기본값은 ‘kitstestssid’입니다.
Wpa2PskPassword DUT 또는 자식 디바이스 중 하나가 WiFi 어댑터인 경우에만 필요합니다. Wpa2PskAesSsid 매개 변수를 사용하여 지정된 WPA2 AES WiFi 네트워크의 암호를 제공합니다. 기본값은 'password'입니다.
ChangeBufferProtectionFlags True 또는 False 테스트된 디바이스에 전달되는 버퍼의 메모리 보호 플래그를 변경합니다. 메모리 보호 플래그는 액세스 권한 없음, 읽기 전용, 페이지 보호를 사용하는 읽기 전용 사이에서 전환됩니다.
Impersonate True 또는 False 관리자가 아닌 사용자로 테스트를 실행합니다.
FillZeroPageWithNull True 또는 False 제로 페이지를 매핑한 후 NULL 값으로 채웁니다. 이 테스트는 포인터를 역참조하기 전에 포인터 참조를 확인하지 않는 드라이버를 식별합니다.
DoPoolCheck True 또는 False 풀 태그 및 할당 준비 목록을 사용하여 드라이버의 페이징 및 비페이징 시스템 메모리 풀 사용을 모니터링합니다. 이 옵션은 처리된 예외의 개수 변화도 모니터링하는데, 이 개수는 예외 처리의 오류를 나타낼 수 있습니다.
DoSync True 또는 False 또한 SYNC 모드(FILE_SYNCHRONOUS_IO_ALERT)에서 디바이스 핸들을 엽니다. 임의의 읽기 및 쓰기 작업은 건너뜁니다.
TestCycles 테스트 주기 수입니다.
DriverVerifierAdditionalDrivers 드라이버 검증 도구를 사용하도록 설정해야 하는 추가 드라이버입니다.
DriverVerifierExcludedFlags 테스트 실행을 위해 수동으로 제외할 수 있는 드라이버 검증 도구 플래그의 자리 표시자
WDKDeviceID 테스트 중인 디바이스의 디바이스 ID
QueryHardwareID 테스트 중인 디바이스의 하드웨어 ID입니다.
WDTFREMOTESYSTEM DUT 또는 자식 디바이스 중 하나가 IPv6 게이트웨이 주소가 없는 유선 NIC인 경우에만 필요합니다. 필요하다고 판단되면 테스트 NIC가 네트워크 I/O를 테스트하기 위해 ping할 수 있는 IPv6 주소를 제공합니다. 예: fe80::78b6:810:9c12:46cd
DriverVerifierCustomizeConfiguration 이 테스트에서 드라이버 검증 도구 설정을 자동으로 업데이트하도록 지정합니다.