Most of the time people ask, what is the need of functional testing when developer already do the unit and integration testing to certain extents( Assuming developer runs only happy path in most of the cases)?. It sounds good as well, but we always forgot that developer wants to see things working, they never do the negative scenario in most of the cases. This causes most of the security and architectural defects in any of the product.
Functional testing is done to ensure that product is ready for specific release and it also tell us the actual status of product at any point of time.
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 software testing:
1) Static Testing : This is the first kind of software testing and is done to verify the conformance of software system to its specification without executing the code. This is mainly used to test the document related to software testing like “People go through the source code or with certain debugger to find out the syntax error”. Along with this static testing is used to find the missing parts of a specification. To read more about static testing read following link Read more