Every piece of code written needs to be tested.
At first each module is tested in isolation and errors or defects, if any, are removed. Next required modules are integrated and tested again to check for any defect or failure after modules were integrated. So in this way testing becomes unavoidable and significant to delivering defect free software.
The testing phase focuses on identifying all defects that may be present in the program code.
It must be noted down that careful testing can help expose most of the errors/defects existing in a program, and therefore provides a practical way of reducing defects in a system.
Testing a code involves forming test cases (set of test inputs) and providing it to the program and then verify if the system behaves as expected for these set of inputs.
A software product is normally tested at three level:
We will learn in details about each one of them in upcoming chapters of this software engineering tutorial.
Now its time to learn about some of the common terminologies associated to testing:
A test case is the triplet [I, S, O] where I is the data input to the system, S is the state of the system at which data is input, and O is the expected output of the system.
The set of test inputs or test cases with which given software product is tested is known as test suite.
Any mistake committed by developers at any of the development phase results in error. An error is also known as bug or defect or failure.
A failure is the symptom of the error. We can also say that failure is the manifestation of the error.