Following is a summary of the various tests that are performed on new and revised hardware and software. Testing is a critical part of the development of internal information systems as well as commercial software, and it is often not given the attention it deserves. Software vendors that provide critical infrastructure such as operating systems have managed to relegate a great amount of testing to thousands of their users, who, looking forward to improvements in the next version of the critical products they use, are more than willing to try out buggy software and report problems. Following is a summary in alphabetical order of the types of testing that are performed. Acceptance Test The test performed by users of a new or changed system in order to approve the system and go live. See user acceptance test. Active Test Introducing test data and analyzing the results. Contrast with "passive test" (below). Ad Hoc Test Informal testing without a test case. Age Test (aging) Evaluating a system's ability to perform in the future. To perform these tests, hardware and/or test data are modified to a future date. Alpha Test The first testing of a product in the lab. Then comes beta testing. See alpha test. Automated Test Using software to test software. Automated tests may still require human intervention to monitor stages for analysis or errors. Beta Test Testing by end users. Follows alpha testing. See beta test. Black Box Test Testing software based on output only without any knowledge of its internal code or logic. Contrast with "white box test" and "gray box test." Dirty Test Same as "negative test." Environment Test A test of new software that determines whether all transactions flow properly between input, output and storage devices. See environment test. Functional Test Testing functional requirements of software, such as menus and key commands. See functional test. Fuzz Test Testing for software bugs by feeding it randomly generated data. See fuzz testing. Gray Box Test Testing software with some knowledge of its internal code or logic. Contrast with "white box test" and "black box test." Negative Test Using invalid input to test a program's error handling. Passive Test Monitoring the results of a running system without introducing any special test data. Contrast with "active test" (above). Recovery Test Testing a system's ability to recover from a hardware or software failure. Regression Test To test revised software to see if previously working functions were impacted. See regression testing. Smoke Test Turn it on and see what happens. See smoke test. System Test Overall testing in the lab and in the user environment. See alpha test and beta test. Test Case A set of test data, test programs and expected results. See test case. Test Scenario A set of test cases. See test scenario. Test Suite A collection of test cases and/or test scenarios. See test suite. Unit Test A test of one component of the system. Contrast with "system test." User Acceptance Test (UAT) See "acceptance test" above. White Box Test Testing software with complete knowledge of its internal code and logic. Contrast with "black box test" and "gray box test."