A core aspect of the ISEB Foundation, ISEB Intermediate, and ISTQB Foundation certifications relates to the concept of functional testing, which is mainly concerned with the external behavior of a piece of software. It involves end-to-end testing, the results of which are then analyzed to fix bugs or make enhancements.
Functional testing is absolutely necessary, as it validates whether or not an application meets the functional specs and design parameters. As such, the tester must understand the specs in order to check the application’s functionality from the perspective of the end-user.
Functional testing has both tactical and strategic elements. From a strategic standpoint, the output highly depends on the selection of the correct data to screen; including those that fall outside the specified input range (many times these outlying data points are randomly selected). Also, the screened data must test the lowest and uppermost permissible inputs in order to judge the overall performance of the software or application.
Two of the most common offshoots of functional testing are user acceptance testing and regression testing. The definition of user acceptance testing should be relatively obvious; it helps determine the overall usability of the program for end-users.
Regression testing is conducted to ensure that program revisions do not negatively impact the application or system. This one is important because product changes sometimes create unexpected bugs or flaws. In fact, any material change to any piece of important software should undergo regression testing, and in general regression testing should be regularly executed to maintain the integrity of all critical software applications or systems.
There are many other offshoots, but I just wanted to highlight a couple of them for you. The bottom line is that all types of functional testing are necessary in the software testing and development life-cycle.