TESTDRV is a rigorous test utility for CD-ROM device drivers to verify that the drivers adhere to specifications. This driver test attempts to fully exercise all possible calls to the device driver and record the driver's progress.
Setup for TESTDRV
TESTDRV assumes that MSCDEX and the appropriate device driver are installed. During initialization, TESTDRV reads the driver profile from the file TESTDRV.PRO which assigns the device status defaults for the test. The following example shows a typical TESTDRV.PRO file:
; This is a sample TESTDRV.PRO
; Comments start with ';' and continue to the newline
DriverName	= MSCD000	; The driver to test (specified
		; as argument to the
		; <drivername>.SYS command line
WriteDevice	= f	; This device is not writable
Redbook	= t	; This device supports Redbook 
		; Addressing
RawMode	= t	; This device supports raw 
		; mode data
Prefetch	= t	; This device supports 
		; prefetching
AudioControl	= t	; This device supports audio
		; channel manipulation
Audio	= t	; This device supports
		; audio/video information
AudioChannels	= 2	; Number of supported audio
		; channels
Interleave	= f	; This device does not support 
		; Interleave mode
InterleaveSize	= 0	; Interleave size (may range
		; between 0-255)
InterleaveSkip	= 0	; Interleave skip (may range
		; between 0-255)
Eject	= t	; This device supports software 
		; eject requests
UPC	= t	; This device implements UPC code 
		; reading
Output	= HEXDUMP.TXT	; Output hex dumps to this file. 
		; Blank assignment sends output
		; to stdout
RedReadSectors	= 3:8:3,8:2:4	; List of sectors to read in
		; ReadL tests (Redbook form)
HSGReadSectors	= 0024180c,00ff3421 ; List of sectors to read 
		; in ReadL tests (HSG form) hex
		; only
; <EOF>
If the profile variables are not set in the TESTDRV.PRO file, they will default to the values shown above (except for the sector selections).

Running TESTDRV
To run the test simply install your device driver, initiate MSCDEX, and execute TESTDRV.EXE. The default operation of TESTDRV can be modified through command line flags and arguments. Either a hyphen (-) or a forward slash (/) denotes the flags. The following command line flags and arguments are available:
filename	Alternate driver profile. (default: TESTDRV.PRO)
/A	Attended operation, qualifying interactive tests. (default: 
unattended operation)
/I	Override disk recognition on control disk. That is, behave as if 
the disk is unknown even if it is a member of the Test Set. 
(default: if recognized, several data matching tests are qualified).
/T	Terse output, no hex dumps and fewer diagnostic messages.
/[#]	Where # is a digit between 0 and 7, the drive number.
In unattended (default) mode, all tests will be verified by both successful completion, given an acceptable request, and successful error recovery, given an unacceptable request. The output has the following format:
[Command Code.Subcommand Code]   [Status]   [Command[:Subcommand]]:[Test Comment]
For example, the test for the location of the driver head may return:
3:12 TESTING  IOCTLI: QInfor:    BUSY:DONE:
3:1  TESTING  IOCTLI:LocHead:    BUSY:DONE:
  #1 Qinfo: Cntrl 1, Track 19, P/Index 1, Track Running Time 0:0:0
Disk running time: 47:35:0
Location of Head 47:35:0
Commands that return sector data or device dependent data will dump output in hexadecimal. If the disk is a recognized test disk and recognition is turned on (default), sector data will be compared to correct values and only the status returned.
Attended and Unattended Operation
Several calls to the driver cause or report physical changes in the drive unit or require that audio disk information be played through audio channels like conventional audio CD players. These states should be confirmed by an operator. A series of YES/NO queries and simple directions allow the operator to quickly step through these tests. In order to allow for operator-free testing, a set of alternate best-guess tests can be executed instead of the ones that require confirmation. Attended testing is a super-set of unattended testing and should be considered the most complete run of the test program. 

For example, the following sequence occurs in the attended mode:
132   TESTING     PlayReq:   BUSY:DONE:
Playing track from 47:35:0
	Can you hear music playing? [Yncq]_ 
132	PlayReq: Request Completed Successfully. 
For a successful sequence, music would play and the tester would respond with 'Y'.
Control Disk Verification
The test for verifying read data requires the Microsoft Bookshelf and Microsoft Programmer's Library to be used as control disks. The test procedure reads data from the control disks then compares both raw and cooked data for correspondence with archived data. If the test is run without the control disks, the data read is dumped in hexadecimal and ASCII format to the specified output.
Nonstandard CD-ROM Features
Several driver commands derive their results or actions from hardware dependent features of the driver. Since not all drivers can be supported in a general release, special features of a device driver may not be adequately tested. (For example, write commands apply to few CD-ROM drives and are only minimally supported by error recovery tests.) If the hardware dependent CD-ROM device driver document describes the results of a driver request as undefined, the request will be tested for simple completion and error recovery. Requests that return data will dump the data to the selected output in hexadecimal and readable ASCII format.
Other Tests For CD-ROM Drives
CD-ROM drives are a natural companion to multimedia applications. The performance of many multimedia applications is dependent on the rate that data is streamed from the CD-ROM. You can use the CDSPEED program described in the next chapter to test the data rate of CD-ROM drives. 
As the user base and popularity of the Multimedia Extensions to Windows expands, the demand for compatible CD-ROM drives will increase. The MUSICBOX application provided with Windows with Multimedia 1.0 provides a good platform to test the operation of you CD-ROM drive and driver. In addition to identifying incompatible behavior between a CD-ROM driver and MUSICBOX, the following tests help verify that the CD-ROM drive can properly play Redbook audio.
1.	Load Windows with Multimedia 1.0 on your system.
2.	Start Windows.
3.	If necessary, remove the disc from the CD-ROM drive.
4.	Start MUSICBOX and observe the operation of the system. 
	Some drivers hang the system for a minute or more when MUSICBOX is started. The delay should be no more than a few seconds.
5.	Put an audio CD in the CD-ROM drive with MUSICBOX going.
6.	Seek to the next track with MUSICBOX and observe operation. 
	Some drivers do not support seek. Other drivers seek when playing but not when its stopped. Others seek when stopped but not when playing. Users expect the CD-ROM drive to seek when they are playing audio CDs.
7.	Put MUSICBOX on repeat and make sure it repeats. Some drivers do not repeat.
8.	Check that the status (time, track) is accurate. 
	Some drivers pass inaccurate information back to MUSICBOX.
9.	Play to the end of the CD and let it stop. 
	Some drivers fail when they play to the end of a CD.