One of the most important tasks in software development is testing. Without testing developers would not know about certain bugs that they themselves might not be encountering. It is also very important in large projects such as Operating Systems where regressions can often crop up unnoticed. It is important to find and quickly deal with regressions as these are easier to fix when their cause is known (ie. a recent commit). Up ahead we'll start of with the basics.
Now I know what most of you are thinking, hardware. Now we don't have anything against hardware, ReactOS should and in most cases (while you cross your fingers) does, but we can't be sure about YOUR hardware. We can't know if you misconfigured your BIOS, or $insert_hardware_manufacturer "tweaked" the hardware somehow. Right now ReactOS is in too early a stage to worry about such things. So we use Virtual Machines to do most of the testing, not only because of the above reason, but it's also more convenient for most people.
Other Virtual Machines are acceptable as long as a developer has access to it.
Testing in hardware is trickier than in a virtual machine. Most people drag out some ancient machine that hasn't seen the light of day in years and just pop in a ReactOS cd, thinking they are helping when they do this. I can tell you from first hand experience this is far from the truth. In order to do any good the machine should be able to accept another, well tested, operating system such as Windows 2000 or a popular linux distribution. This machine should of course meet the minimum system requirements for ReactOS. Take this moment to use the OS to write down as much hardware information as possible, even what IRQ and DMA channels it is using. You never know when this information will come in handy.
It is important to note that some BIOS have "special" settings for different operating systems. Please disable memory gaps, reserved memory areas and reserved memory caching, it goes without saying that this is not an OS/2 clone. If testing a USB mouse or keyboard you must enable USB compatibility mode, USB 2.0 is not supported, if possible disable it. Disconnect all non essential hardware, from experience i can say that ReactOS hanged on bootup because I had a USB-Camera attached.
ReactOS currently doesn't come with many drivers, just a few basic ones that (hopefully) take advantage of standard hardware. Most important is a VBE 2.0 compatible video card (VESA 1994 standard). For network connectivity you need a RTL 8139 or NE 2000 compatible card. If you really want to make other hardware work, you will need to get a windows 2000 driver for it.
Before you start any test you need to know what is going on, why and how the test is failing. The most important way to get information about an issue or bug is the debug output. When compiled with DBG = 1, and booted in debug mode ReactOS can send text to a file, the screen, or the serial port. For more information on configuring this please refer to Debugging
Getting more information
Before you can do anything you should be able to compile ReactOS. Meaning that you got a SVN client to download the source and the Build Environment to compile it, and furthermore that you know how to use these. Please refer to these items wiki articles if you need help.
How to Test
When you start testing you should have a fresh ReactOS install, from a clean compile or rosbuild output cd. The usual way to proceed is just to boot into ReactOS and attempt by natural means to produce unwanted behavior, such as crashes, error messages graphical glitches or anything else that might NOT be considered a feature.
ReactOS testers must know instinctively what to do in case of an emergency.
ready made tests
wine testing framework ReactOS Test apps. rosapps.
3rd party apps
For functonalty and regression testing of the most important 3rd party apps see Testing Central Testing Apps. These apps are signifcant in what they use or require of a operating system. If you know of a app that you feal shuld be in the list you shuld read this section here, Testing Central What makes a APP Important
Write your own tests
learn how to code. writing tests
How to report a Bug
what to do with your debug log. File Bugs