Functional testing carried out to clarify what the system dose to fulfill a need? , what the system’s behavior? Functional testing focuses on what the system does rather than how it does it, it can be defined as the set of attributes that bear on the existence of a set of functions and their specified properties. The functions are those that satisfy stated or implied needs. (ISO9126 Software Quality Characteristics) those attributes “AKA sub-characteristics” are (Suitability, Accurateness, Interoperability, and Security).
The “Suitability” can be measured by asking, Can software perform the tasks required?
The “Accurateness” Is about the results, are as expected?
The “Interoperability” about the integration capabilities, which can be measured by test the system/module/component etc… interaction with another systems/module/component, etc…?
The “Security” is the test of the software capabilities to prevent unauthorized access? As a function.
Functional Test covers the functional requirements and the behavioral requirements which are written the specification documents.
A functional requirement defines a function of a system or its component. A function is described as a set of inputs, the behavior, and outputs. Functional requirements may be calculations, technical details, data manipulation and processing and other specific functionality that define what a system is supposed to accomplish. Behavioral requirements describing all the cases where the system uses the functional requirements are captured in use cases.
Functional tests will vary by test level.
A functional integration test will focus on the functionality of a collection of interfacing modules.
A functional system test will focus on the functionality of the application as a whole.
A functional system integration test will focus on end-to-end functionality that spans the entire set of integrated systems.
It’s critical and necessary to know that the functional testing is not test of the function only, it’s cover many aspects about a function, business role, etc…
And you must select suitable test type to cover your need in the right test level.