Software Testing is so vast and its more like a thought, You have more mature through of software Testing, More bug free product would become(Not possible to make any product 100% bug free) . But we have many practices that starts from very beginning of project to the end(exit) of product delivery). We normally follow two approaches in:
1) Static Testing : This is the first kind of software testing and is done to verify the conformance ofsystem to its specification without executing the code. This is mainly used to test the document related to software testing like “People go through the or with certain debugger to find out the Along with this static testing is used to find the missing parts of a specification. To read more about static testing read following link
2): This kind of testing is used to test the dynamic behavior of . In this we play with the source code and try to execute the source code to see the actual behavior of the software system.
Functional Testing andare the examples of Dynamic Testing.