The fundamental test process includes such parts:
Test Planning
The test plan should clarify in what way the test strategy and test plan apply to the software under test. It should contain identification of all exceptions to the test strategy and of all software with which the software under test will interact during accomplishment of test (for example, drivers and stubs).
Test Specification
Test cases should be designed with the help of test case design methods.
Test Execution
Undoubtedly every test case should be executed.
Test Recording
The test records for all test cases should anyway record the identities and versions of the software under test and the test specification. The actual outcome should be recorded and compared against the expected outcome. Any difference found should be logged and analyzed to establish where its cause lies and the earliest test activity that should be repeated.
Checking for Test Completion
The test records should be checked against the previously specified test completion criteria. If these criteria are not met, the earliest test activity that must be repeated in order to meet the criteria should be identified and the test process should be restarted from that point.
Since the purpose of software test should be to find defects, a successful test is one that detects a defect. This is counter-intuitional, because defects postpone progress: a successful test is one that may cause postpone. The successful test detects such defects which, if not found in time, may be many times more high-priced to correct.
Completion or exit criteria are used to determine when testing (at any test phase) is complete.