다음을 통해 공유


DF - Fuzz 임의 IOCTL 테스트(신뢰성)

임의 테스트 중에 Fuzz 테스트는 지정된 값 범위에서 임의로 선택된 기능 코드, 디바이스 유형, 데이터 전송 방법 및 액세스 요구 사항을 사용하여 DeviceIoControl 함수에 대한 일련의 호출을 실행합니다. 호출에는 유효하거나 유효하지 않은 버퍼 포인터와 길이가 있는 입력 및 출력 버퍼와 임의로 생성된 콘텐츠가 포함됩니다.

Fuzz 테스트는 기본 공개 테스트 및 추가 공개 테스트 중에 열린 모든 디바이스에서 임의 테스트를 수행합니다. 다음 매개 변수를 사용하여 이 테스트를 사용자 지정할 수 있습니다.

  • MinFunctionCodeMaxFunctionCode를 사용하여 호출에 사용되는 IOCTL 또는 FSCTL 함수 코드 범위를 지정합니다.
  • MinDeviceTypeMaxDeviceType을 사용하여 호출에 사용되는 디바이스 유형 범위를 지정합니다.
  • SeedNumber를 사용하여 난수 생성 루틴의 시드 번호를 지정합니다.

Fuzz 테스트에서 테스트용 난수를 생성하는 데 사용하는 함수는 난수 생성 알고리즘의 시작 번호인 시드 번호를 사용합니다. 테스트 조건을 재현하려면 시드 번호 매개 변수를 사용하여 원래 테스트 시도에서 사용된 시드 번호를 지정합니다.

맞춤형 임의 테스트는 임의 테스트의 일부로 포함됩니다. 맞춤형 임의 테스트는 임의 테스트의 결과를 사용하여 FSCTL 요청에 대한 드라이버 응답을 더 자세히 조사합니다. 맞춤형 임의 테스트는 임의 테스트가 놓친 영역과 임의 테스트 호출에서 반환된 상태를 기반으로 드라이버가 예상대로 응답하지 않은 영역을 조사합니다.

테스트 이진: Devfund_FuzzTest.dll 테스트 방법: DoRandomFSCTLTest

테스트 세부 정보

   
사양
  • 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 이 테스트에서 드라이버 검증 도구 설정을 자동으로 업데이트하도록 지정합니다.
MinDeviceType IOCTL에서 DeviceType 필드의 최솟값을 지정합니다. 가능한 최소값은 0입니다. 자동 유형 검색에 -1을 사용합니다(기본 설정됨).
MaxDeviceType IOCTL에서 DeviceType 필드의 최댓값을 지정합니다. 가능한 최대값은 65535입니다. 자동 유형 검색에 -1을 사용합니다(기본 설정됨).
MinFunctionCode IOCTL에서 FunctionCode 필드의 최솟값을 지정합니다. 가능한 최소값은 0입니다.
MaxFunctionCode IOCTL에서 FunctionCode 필드의 최댓값을 지정합니다. 가능한 최댓값은 4095입니다.
MinInBuffer 테스트가 IOCTL의 드라이버에 전달하는 입력 버퍼의 최소 크기(바이트)를 지정합니다.
MaxInBuffer 테스트가 IOCTL의 드라이버에 전달하는 입력 버퍼의 최대 크기(바이트)를 지정합니다.
MinOutBuffer 테스트가 IOCTL의 드라이버에 전달하는 출력 버퍼의 최소 크기(바이트)를 지정합니다.
MaxOutBuffer 테스트가 IOCTL의 드라이버에 전달하는 출력 버퍼의 최대 크기(바이트)를 지정합니다.
MaxRandomCalls 테스트에서 실행하는 최대 호출 수를 지정합니다.
MaxTailoredCalls 맞춤형 임의 테스트 중에 테스트에서 실행하는 최대 호출 수를 지정합니다.
SeedNumber 임의의 IOCTL을 생성하는 데 사용되는 시드 번호를 지정했습니다.