There are a number of different methods for automated testing and manual testing. We’ve talked about many of these before here on this blog and we’re big believers in leveraging both automated testing and manual testing at various parts of the software development process.
In this post, we look at three types of automated testing methods: unit testing, integration testing, and functional testing. Specifically, we’re going to discuss the difference between these types of automated tests. Let’s start with unit testing.
The goal with unit testing is to test that individual pieces of software are functioning as required per the specifications. You can think of a “unit” as a small part of the application or service under test, or a single part of the software designed to have a single function. Unit testing is more of a microscopic approach to testing than the other types of testing we talk about in this post. That is, you’re testing a very small piece of the overall application. Unit testing happens early on in the software development process. Developers typically conduct unit tests throughout the development process. You can learn more about unit testing here.
Integration tests can begin once unit testing is complete. The purpose of integration testing is to see how the individual units work together, or how they integrate with each other. In other words, individual components and modules are tested as a group in integration testing. Integration testing aims to ensure those pieces of your application work well together. Thorough integration testing will have your application running like a well oiled machine in production.
Functional testing is intended to test the software functionality broadly against the business requirements. The inner workings (units) of the software are not considered in this type of testing, as the underlying goal to to ensure the application is functioning as it required to function. How it behaves “under the hood” to accomplish those things doesn’t matter in this type of testing. That has already been tested and understood in the development and unit testing phase. Functional testing involves understanding the business requirements, defining test input data, determining results, executing the tests, and comparing the actual results to the expected results. A successful functional test’s results match that of the expected results. You can learn more about functional testing here.
The biggest differences in these testing methods are what is being tested, and how it’s being tested. Unit testing involves testing individual pieces of code, while integration testing involves testing how the units work together. Functional testing is meant to ensure the business requirements are being met.