Functional testing is carried out to ensure that the product behaves according to the functional requirements without taking design principles into consideration. This entails a series of tests which perform a feature-by-feature validation of behavior, using a wide range of normal and erroneous input data. In contrast, usability testing focuses on customer acceptance and how well the customer can use the product to complete the required task. Usability testing investigates all aspects of the usability of a product, including overall structure, navigational flow, layout of elements on a page, clarity of content, and overall behavior.
The relationship between functional and usability testing: usability testing needs to come after functional testing, once functional problems have been fixed.
Performing usability testing on functionally-flawed products only unearths functional problems, which leads to frustration for the participants who are struggling with bugs when trying to complete a task. It hinders the participants, it negatively influences their perception (and hence their feedback), and it invalidates the usability aspect of the results.
Both functional and usability testing require very different mindsets from the person testing and ideally should not be carried out by anyone involved in the development of the product. Functional testing requires the mindset of “CAN I do what I need to do; does this product work?” Usability testing is more about ‘usability’ than it is about ‘testing’ (given that the latter term inevitably seems to bring about visions of functional testing first and foremost) and needs to have the mindset “HOW can I do what I need to do; does this make sense?”