QA testing may sound like a catch-all term — and in some ways, it is. “QA” stands for Quality Assurance, and all of the different types of software testing have this goal. But each type of testing achieves it differently. As a result, they’re best used for different purposes. Find out how what the different types of software testing are, and when to use them.
What Are the Different Types of Software Testing?
The main types of software testing are:
- Manual Testing
- Automated Testing
- API Testing
- Performance/Load Testing
These types of testing can be done on websites, mobile apps, and other software.
Manual Testing is done by hand. This doesn’t mean not using technology — far from it. But it does mean manually going through different sections of a mobile app, websites, or other software, looking for any problems. Unlike automated, API, or performance testing, all you need for manual testing is access to the website or app. The other main types of software testing typically involve using other software or tools to test and/or find bugs.
To learn more about manual testing, see our guide: What is Manual Testing?
Automated testing may sound magic, but it can take quite a bit of time to write and maintain the code. And anytime an aspect of the website or app gets updated (for example, a link, or the placement of a button), the code will need to be updated. Otherwise, the script will tell the browser or device to go to the wrong area.
In addition, only certain aspects can be tested with automated testing. For example, it’s great for checking whether links work, or images load. But it can’t tell you whether something “looks bad” or has less than ideal user experience.
The most popular web automation framework is Selenium WebDriver. The most popular mobile app automation framework is Appium.
Learn more about the differences between manual and automated testing.
API stands for “Application Programming Interface.” While this may sound confusing, API functionality is actually pretty straightforward. It can be helpful to think of an API as a virtual tunnel that sends information back and forth. For example, say that you open Google.com and perform a search for the term, “What are the different types of software testing?” When you click the search button, it sends a request to a server. This server processes the request, and sends a response.
API testing involves using software programs/tools to check the reliability, accuracy, and consistency of APIs. For example, you might use a popular API testing tool called Postman to make sure that a server is returning the right status for an action like user sign-up. You could also make sure that when a user clicks “Delete” on the front end, the API sends the information correctly and deletes the relevant info from the database.
API testing can be automated as well, to make sure that the API is sending and receiving data correctly at all times.
Performance and Load Testing
Load testing measures the performance of an app or site while increasing the number of users on it. For example, the load tester can keep adding (virtual) users until the server starts to show signs of slowing down, denying access, or other erratic behavior. The goal of load testing is to be able to find out the breaking point for your site or app’s stability.
Performance testing is similar to load testing. But instead of trying to find the breaking point, performance testing measures the performance of an app or site with the typical number of users.
For example, if you know that a site gets around 5,000 users per hour, you could do tests to observe how many seconds each page takes to load when there are 5,000 people on it at the same time.
One of the most popular software testing tools for performance/load is Jmeter. Both performance and load testing can also be automated.
Software Testing Methods
There are also different ways to use the above types of software testing. Some of these include smoke testing, regression testing, cross-browser/device testing, accessibility testing, ad-hoc testing, security testing, unit testing, and exploratory testing. (For more, see QA Testing Vocabulary.)
Software Testing Processes
The main software development processes for QA testing are Agile and Waterfall.
The Agile QA process involves making changes on the fly, and doing releasing regular updates to the app or website in short development timelines called “sprints.” To learn more, see our article on the Agile QA Process.
The Waterfall QA process is much less flexible than Agile – and much less popular these days. In a Waterfall process, each phase of software development is distinct and planned. For example, the requirements for the features being developed must be completely mapped out before development can even begin under Waterfall.
You can also read more on the different phases of QA testing.