Alpha testing- Testing of an application when development is nearing completion; minor design changes may still be made as a result of such testing. Typically done by end-user or others, not by programmers or testers.
Beta testing- Testing when development and testing are essentially completed and final bugs and problems need to be found before final release. Typically done by end-user or others, not by programmers or testers.
Sanity testing- Typically an initial testing effort to determine if a new software version is performing well enough to accept it for a major testing effort. For example, if the new software is crashing systems in every 5 minutes, then we cant apply testing effort to that software.
Compatibility testing- Testing how well software performs in a particular hardware/software/OS/network/etc. environment.
Exploratory testing- Often taken to mean a creative, informal software test that is not based on formal test plan or test cases; testers may be learning the software as they test it.
Ad-hoc testing- Similar to exploratory testing, but often to mean that the testers have significant understanding of software before testing it.
Comparison testing- Comparing software weakness and strengths to its competing products.
Load testing- Testing an application under heavy loads,such as testing of a website under a range of loads to determine at what point the system's response time degrades or fails.
System testing- Black-box type testing that is based on overall requirements specifications ; covers all combined parts of a system.
Functional testing- Black-box type testing geared to functional requirements of an application; this type of testing should be done by testers.
Volume testing- Volume testing involves testing a software or web application using corner cases of "task size" or input data size.
For example-
* If the application reads text files as inputs, try feeding it both an empty text file and a huge (hundreds of megabytes) text file.
* If the application stores data in database, exercise the application's functions when the database is empty and when the database contains an extreme amount of data.
Stress testing- Same as load testing.
Sociability testing- This means that you test an application in its normal environment, along with other standard applications, to make sure they all get along together.
Usability testing- Testing for the user friendliness of the software.
Recovery testing- Testing how well a system recovers from crashes,, hardware failures, or other catastrophic problems.
Security testing- Testing how well the system protects against unauthorized internal or external access, willful damage etc.
Performance testing- Term often used interchangeably with 'stress' and 'load' testing. Ideally defined in SRS(Software requirement Specification) or Test Plan.
End-to-end testing- Similar to system testing; involves testing of a complete application environment in a situation that mimics real-world use.
Regression testing- Re-testing after fixes or modifications of the software or its environment.
Install/uninstall testing- Testing of full, partial, or upgrade install/uninstall processes.