개발 중 드라이버 테스트 팁
언제 테스트를 시작해야 하나요? 드라이버에 대한 요구 사항이 있는 즉시 테스트 사례를 설계하여 중요한 요구 사항이 구현되었는지 테스트할 수 있습니다. 연구에 따르면 코드에서 결함을 찾고 수정하면 결함이 코드에 오래 남을수록 비용이 더 많이 듭니다. 개발 주기 초기에 결함을 찾고 수정하는 것은 코드가 릴리스되고 배포된 후 결함을 찾는 것보다 비용이 적게 들고 파괴적입니다. 테스트 사례를 조기에 만들면 디자인에서 문제를 찾는 데 도움이 될 수 있습니다.
개발 중 테스트에 대한 제안
드라이버 코드 및 드라이버 패키지를 테스트하려면 다음 제안을 사용합니다.
컴파일 시 버그를 찾는 데 도움이 되도록 다음을 수행합니다.
함수 역할 형식을 사용하여 드라이버 제공 콜백 함수 및 디스패치 루틴을 선언합니다. 이렇게 하면 코드 분석 및 확인 도구의 정확도와 테스트 시간의 효율성을 향상시킬 수 있습니다. 드라이버 제공 함수를 선언하는 방법에 대한 자세한 내용은 함수 역할 형식 선언 사용을 참조하세요.
수준4(/W4) 경고 옵션을 사용하여 코드를 컴파일합니다. 컴파일러에서 감지한 경고를 수정하면 드라이버 코드의 품질이 향상되고 개발 주기 초기에 추가 결함을 제거하는 데 도움이 됩니다.
Microsoft SAL(소스 코드 주석 언어) 2.0을 사용하여 코드에 주석을 추가합니다. 주석은 함수가 매개 변수를 사용하는 방법, 즉 매개 변수에 대해 가정하고 완료 시 보장을 설명합니다. 주석은 코드 분석 도구의 정확도도 향상됩니다. 드라이버별 주석에 대한 자세한 내용은 드라이버용 SAL 2.0 주석을 참조하세요.
드라이버를 개발하는 동안 드라이버를 확인하는 도구를 사용합니다. 특정 확인 도구를 사용하는 시기에 대한 지침은 코드 분석 및 확인 도구를 사용하여 드라이버 분석을 참조하세요.
드라이버 패키지를 테스트하려면 다음을 수행합니다.
개발 프로세스 초기에 INF 파일 및 드라이버 패키지를 만들고 테스트 내내 사용합니다.
InfVerif 도구를 사용하여 INF 파일의 구조와 구문을 확인하고 INF 파일 및 기타 설치 관련 문제를 진단하는 데 도움을 줍니다.
Inf2Cat 도구(/nocat 옵션 포함)를 사용하여 추가 INF 파일 확인을 수행합니다. Inf2Cat 은 INF에서 참조하는 파일이 존재하고 INF에서 예상하는 대로 패키지 디렉터리에 배치되는지 확인할 수 있습니다.
개발 및 테스트 중 드라이버 서명에 설명된 대로 드라이버의 설치 및 테스트를 용이하게 하기 위해 드라이버에 서명합니다.
WDK에 제공되는 디바이스 기본 테스트의 일부로 포함된 DriverInstall 테스트를 실행합니다. Visual Studio를 사용하여 런타임에 드라이버를 테스트하는 방법 및 디바이스 기본 테스트를 선택하고 구성하는 방법을 참조하세요. 드라이버가 테스트 컴퓨터에 배포된 후 DriverInstall 테스트를 실행할 수 있습니다. 드라이버 테스트 그룹에 DriverInstall 테스트를 추가할 수 있습니다. DriverInstall 테스트는 드라이버 테스트 범주의 모든 테스트\기본\디바이스 기본 사항\DriverInstall 아래에 표시됩니다.
장치 관리자 사용하여 드라이버 및 디바이스에 대한 시스템 정보를 보고 SetupAPI 로그를 참조하여 디바이스 설치 문제를 해결합니다. SetupAPI 로그에는 디바이스 또는 드라이버를 설치하는 동안 발생한 작업 순서에 대한 정보가 포함되어 있습니다.
Visual Studio 및 WDK를 사용하여 테스트 컴퓨터에 드라이버를 배포할 때 드라이버 패키지 설치를 테스트하고 문제를 해결할 수 있습니다. 테스트 컴퓨터에 드라이버 배포를 참조하세요. 드라이버 패키지 프로젝트의 배포 속성에서 설치 및 확인 옵션을 선택합니다. 이 옵션을 선택하고 기본 드라이버 패키지 설치 작업(다시 부팅 가능) 또는 기본 프린터 드라이버 패키지 설치 작업(다시 부팅 가능)을 지정하면 테스트에서 드라이버의 INF 파일을 읽고 드라이버를 설치합니다. 그런 다음 테스트는 드라이버가 실행 중인지 확인합니다. 완료되면 테스트는 설치 작업의 성공 또는 실패에 대한 자세한 정보를 제공합니다. 결과는 드라이버 테스트 그룹 드라이버 설치 아래의 드라이버 테스트 그룹> Explorer 표시됩니다. 작업 이름은 기본 드라이버 패키지 설치 작업입니다.
런타임에 드라이버를 테스트하려면 다음을 수행합니다.
WDK에 포함된 디바이스 기본 테스트를 실행합니다. Visual Studio를 사용하여 런타임에 드라이버를 테스트하는 방법 및 디바이스 기본 테스트를 선택하고 구성하는 방법을 참조하세요.
테스트 결과를 문제 해결 및 디버그할 수 있도록 디버거를 설정합니다. 자세한 내용은 Windows 디버깅을 사용하여 시작 참조하세요.
배포에 사용하는 테스트 컴퓨터에서 드라이버 검증 도구를 사용하도록 설정합니다. 드라이버 프로젝트에 대한 드라이버 검증 도구 속성을 참조하세요. DDI 준수 확인 옵션을 선택합니다. 드라이버가 DDI 규정 준수 검사에 실패하는 경우 정적 드라이버 검증 도구 를 실행하고 오류를 발생시킨 규칙 또는 규칙을 지정합니다. 정적 드라이버 검증 도구는 원본 파일에서 버그의 원인을 찾는 데 도움이 될 수 있습니다.
가능한 한 많은 하드웨어 구성에서 드라이버 및 디바이스를 테스트합니다. 하드웨어를 변경하면 디바이스 간의 충돌과 디바이스 상호 작용의 기타 오류를 찾는 데 도움이 될 수 있습니다. 예를 들어 프로세서 아키텍처가 다른 컴퓨터와 32비트 및 64비트 버전의 Windows를 실행하는 컴퓨터에서 드라이버와 디바이스를 테스트해야 합니다.
다중 프로세서 시스템에서 드라이버 및 디바이스를 테스트합니다. 경합 상태 및 기타 타이밍 문제는 달리 찾을 수 없는 다중 프로세서 시스템에 나타납니다. 여러 프로세서 그룹 지원을 위해 드라이버 테스트를 위해 디바이스 기본 테스트 및 부팅 매개 변수를 선택하고 구성하는 방법을 참조하세요.
특정 시스템 및 하드웨어 조건, 특히 에지 조건에 대해 드라이버 및 디바이스를 테스트합니다. 예를 들어 이러한 조건에는 "D3 핫" 및 "D3 콜드"가 포함될 수 있습니다. 드라이버와 디바이스가 디바이스 전원 상태 "D3 핫"(전원 손실 없이) 및 "D3 콜드"(디바이스에서 전원이 제거된 경우)에서 올바르게 반환할 수 있는지 확인합니다. 자세한 내용은 디바이스 기본 테스트를 선택하고 구성하는 방법을 참조하세요.