Functional and non-functional testing
- Functional testing is aimed at whether the system does what it is supposed to do, which is defined by the quality characteristic “functionality”.
- Non-functional testing is aimed at how the system works, which is defined by one or more quality characteristics other than functionality, the so-called non-functionals.
[More info: quality characteristics]
Functional testing usually takes up most of the effort and time spent on testing. Often however, the non-functional testing gets less attention than it should, because many IT-failures relate to non-functional problems (such as a performance that is too slow, poor usability, bad security or insufficient compatibility with other systems). And since there are quite a number of non-functional quality characteristics it's important to carefully consider which non-functional testing is needed, because the possible choices of test varieties for non-functional testing are enormous. Defining and verifying the right quality level for IT systems is important to provide business value and to avoid potential negative consequences for the stakeholders.
The quality characteristics are defined in the ISO25010 standard and consist of a group of characteristics that relate to the quality of the product as it is and a group of characteristics that relate to the quality of the product while it is used.
As the name implies, functional testing focusses on the quality characteristic Functional suitability and its subcharacteristics. That's not all, however, because some of the quality in use characteristics may also be relevant. When preparing functional testing the people involved in testing must consider which (groups of) users will be using the system and what they expect regarding the functioning of the system. These will usually be described in user stories or requirements specifications or design documents, and are the test basis that defines the expected functioning. And if a test basis doesn't exist the quality characteristics will be very useful to focus an interview with stakeholders in which their expectations are determined.
There are quite a number of quality characteristics other than functionality. In TMAP, we describe the most common non-functional test varieties relevant for DevOps teams, in some more detail. These are: