Functional vs non-functional testing

When most people think of software testing they generally visualize functional testing. Functional testing is concerned with how well a system executes its intended functions. These functions may include integrations, business processes, searches or data manipulation as well as the execution of commands. While non-functional testing is more interested in how the product behaves rather than what the product does.
Containers_1-iloveimg-resized.jpeg

Contact Us We cut software testing from weeks to days. Let’s talk for 15 minutes to see if we can accelerate your digital delivery too. Schedule a call with our CEO Ash Conway.

Both types of testing are a vital part of a complete testing protocol. While it is functional testing that determines the efficacy of an application, it is non-functional testing that determines, for the most part, user experience. Nevertheless, these two types of testing do overlap.

In fact, there isn't really an absolute dividing line. Nonfunctional testing checks things like recoverability after a crash, maintainability and operational readiness. But, when you get into things like reliability and dependability, it can become a matter of function. Functional testing does enter into areas like dependability. For example cross-platform runtime systems can greatly affect the functionality of an application when poor coding causes unreliable interface leading to erratic function or even unworkability. Of course, this can affect the execution of test cases as well as usability testing, but it comes down to a matter of function. Interface testing is a type of functional testing.

Nonfunctional testing is important because software doesn't exist in isolation. It must interact with the environment in which it operates and the more it relies on outside resources, the greater the possibility that there will be a glitch somewhere.

Functional testing provides assurance that the application itself can perform as intended. It can be something as simple as a smoke test, just run the application and see what happens. There is sanity testing, a rather colourful name which means testing the application to see if it is “sane” after defects have been fixed. In other words, it is testing to make sure that no unanticipated problems have been caused by the changes.

All in all, functional and non-functional testing are two sides of the same testing coin. Their purposes may be different in detail, but they exist to ensure the highest quality product possible.

Bug Newsletter

Keep up to date with the latest in beta, bug & product testing.

User acceptance testing tools & teams

Quickly assess the quality of your software, websites & mobile apps