Go to the previous section.
This was tested under Linux. We conditionally compiled the code to interface the shell's I/O handlers to Linux's console. The GNU debugger (GDB) was used to find and correct the errors that occurred. Testing simply involved testing each of the shell commands to check that they worked as documented with input values designed to produce errors. After testing and debugging the shell was deemed to be a stable part of the system.
This again was tested under Linux and used the previously tested shell as a user interface. A large file was used to simulate a device in the filing system and using this and the filing system shell commands, we were able to find and correct the many bugs that appeared during the testing. The filing system is a complicated piece of software which contained many bugs when first written. The final test bed which combined the shell and the filing system running under Linux was deemed sufficiently stable to be used as part of the installation process. It was used to copy modules from Linux where they were compiled, to our own filing system and also to retrieve system logs from our filing system back to Linux.
This was tested under DJGPP with a conditional compilation to include code to install the keyboard interrupt handler in the DJGPP dos extender. This enabled us to find the few bugs that existed in the keyboard driver. Overall, we found that the keyboard driver was very stable.
These were tested using a similar method to that employed when testing the keyboard device driver. The hard disk driver was developed using this test system to find bugs as it was written. Overall, these two modules were found to be stable.
This was tested using NuMega's Soft/ICE debugger. Because of the complexity of the boot sector and startup code, many bugs were found and corrected in this way. The initialisation process, after debugging, was found to be very stable.
One of the basic methods we employed was to test our operating system on as many different hardware configurations as possible. This revealed only one major bug which was with enabling the A20 gate and was found on a PC which had a particularly old and slow chipset. This was soon diagnosed and appropriately fixed.
These tests were actually run under the operating system and served to test the extent and compatibility of the emulation subsystem. This was achieved by running an operating system (in this case MS-DOS) under a virtual machine and then running programs designed to test the virtual hardware.
We also tested the virtual machine with a program called `CheckIt' which found many of the same problems.
Go to the previous section.