5 Types of Functional Testing in Software Development
From person to person, the definition of functional testing might differ. But there are key steps in functional testing that keep the quality of your system in check. So what are the types of functional testing?
What are the types of functional software testing?
Functional testing has many categories.
There’s unit testing, integration testing, and api testing – both of which are tested on a code level.
Then there’s system testing and user acceptance testing – both of which are tested on the front-end.
Image: an overview of the types of functional testing, along with the sub-categories of testing that fall under each testing type.
Unit testing
With unit testing, you’re testing individual units of code created by a developer. Usually, the developer who built the unit will test the unit.
Integration testing
Integration testing tests the individual units of code together. It’s often confused with testing the integrations between your system and a third-party system, e.g. testing the integration between Salesforce and SAP.
In this case, you’re testing a singular component of a system after units have been combined. This test is also on a code level, and it is either carried out by a developer or by a QA engineer who is a part of the development team.
API testing
API testing, or interface testing, tests how individual components interact with one another. Once this test has been completed, the development team (also known as DevOps team) will send the combined components over to the QA team.
This type of testing can be carried out at many points of the testing journey, hence why it is not illustrated in the graphics.
System testing
Once the components have been combined and a front end is ready, system testing is carried out by a QA team.
They test the system and verify it against the system design (defined in the developer phase – see image of V model of testing below). This process can be both manually tested or automated.
The QA team can consist of a team of functional testers, automation engineers, business users, or process owners.
Once they’ve carried out system testing and verified that it aligns with the system design, the testing is passed down to the business line which initially set the requirements for the system/feature that has been developed.
User acceptance testing
User acceptance testing is usually carried out by the business line responsible for the software/feature under production.
At this stage, the software is in its final stage before it’s pushed to production.
The testers are normally made up of business users or business experts.
When testing reaches this stage, it tends to be passed around a lot. Those testing the system often end up carrying out all of the testing manually, which can lead to frustration and a lack of productivity.
To be able to automate the testing at this stage, those testing the system have to be enabled to automate. To get to that stage, they have to adopt an automation solution that doesn’t require development skills to use.
Read more: How to Close the Skills Gap in Test Automation
We write about this type of solution in our whitepaper on how to automate functional UI testing.
You can find even more information on the basics of functional testing, how to build codeless functional UI testing, and how to test in an agile way.