Developing computer software requires many hours of coding and testing. This testing typically includes multiple levels of validation and verification between the software application and the customer. Test effort refers to complete set of testing that is required for software. This full effort typically includes unit testing, system testing, performance testing, and user acceptance testing.
Testing is divided into either positive or negative tests. The test effort defines what type of testing will occur during the testing phase. It should account for the full testing of all areas of the software application. A positive test case is based on entering the test data correctly into the system. Negative test cases require the tester to enter bad data. A mixture of positive and negative tests is typically recommended for most software applications.
Unit testing is the testing that occurs during the development of the software code. This test effort is performed by the developers of an application. Unit testing is the preliminary testing phase of software modules within a program. This form of testing ensures the system will function without error before it is sent to the testing team for review.
Many large scale software applications include integration tests with multiple external systems. This integration testing is a test effort designed to validate the integration of external applications. Integration testing is typically performed prior to functionality testing because successful integration is required before functionality can be verified.
Functionality testing is the testing that validates the system functions as it was intended. This type of testing requires the creation of specific test data, which is used during the test effort. Functionality testing is a verification of requirements to actual functionality within the application. Failure to pass this testing phase typically implies the system will not be accepted by the users.
Performance testing is critical for software applications that are designed to support thousands of users. This form of testing requires high volumes of processing, designed to stress the system to the point of complete failure. A test effort should include some rudimentary performance testing. This will ensure the system support multiple users processing without crashing.
User acceptance testing is another form of system validation testing. This test effort includes the users of the application, with specific tests for validating the functionality of the system. User acceptance testing is a critical step to ensure customer satisfaction. This testing effort typically occurs at the end of a development cycle, prior to deploying the application into production.