What Is Functional Testing?
Functional testing verifies what software does. It makes sure everything works properly. It confirms that the software fulfills functionality requirements. And it ensures that your software is ready to be shipped.
You’ll typically use functional testing to check:
- Core functionality
- Basic usability
- Accessibility
- Error conditions
Table of Contents
Types of Functional Testing
There are many different types of functional testing that verify your software. Here are some of the most common ones.
Unit Tests
Unit testing is done on the code level. You can use unit testing to check for mistakes in your code. This might include code that is accidentally modified. Or it could simply be code with errors.
It includes line, path, and method coverage. It can be static or dynamic.
There are different types of unit testing that are specific to programming languages, such as JUnit tests for Java and NUnit tests for Microsoft .NET.
More on testing Java code >>
Integration Tests
Integration testing checks if your existing system will still work properly after you’ve introduced a new component.
Integration testing can be bottom-up — from the lowest module to upper modules. Or it can be done top-down — from the topmost module to lower modules.
More on system integration testing >>
Interface Tests
Interface testing checks if two different pieces of software can communicate with one another.
You may do interface testing for:
- Workflows
- Edge cases
- Performance, load, and network testing
- Individual systems
Smoke Tests
Smoke testing verifies that software works well enough to move into the testing phase. It’s typically done after a build is complete, but before further tests are done. This reduces defects found later in testing (which makes your testing efforts more cost-effective).
Smoke testing is often done manually. But it can be automated to accelerate your testing process.
Regression Tests
Regression tests ensure that existing functionality works after code changes. In regression testing, you simply rerun tests that you’ve run before.
It takes a lot of time and resources to run regression tests. So, it’s usually best to select a subset of tests rather than rerun the full test suite. This minimizes costs while maximizing results.
Sanity Tests
Sanity testing verifies that bugs have been fixed after minor code changes are made to a build. In DevOps, sanity tests are done during the release phase. And they’re usually run on just the affected components.
You can use sanity tests to verify that the software functions roughly as it’s expected. Like smoke tests, sanity tests provide a way to save time in the testing process.
Acceptance Tests
Acceptance tests verify that the software meets expectations. This is also known as beta testing or usability testing.
Acceptance testing can be done by people within the organization. This is known as internal acceptance testing. Or it may be done by people outside of your organization. This is known as customer acceptance testing and user acceptance testing.
System Tests
System testing is done on an integrated application. It verifies the entire system against compliance requirements.
This usually means testing:
- Load
- Recovery
- Migration
- Hardware/software
More Types of Software Testing
Back to topFunctional Testing Tools
Functional testing can be done using an automated tool, such as Selenium. Some functional tests may be done manually.
You may use multiple tools for functional testing. And that’s why it’s important to have a central test management tool that brings everything together.
With Helix ALM, you can get visibility into all of your testing efforts. Helix ALM includes a test case management module — Helix TCM — that makes it easy to manage every test.
See how testing teams around the world use Helix ALM.
Examples of Testing in Helix ALM