15 Different Types Of QA Testing You Should Know

15 Types of QA Testing every QA should know


Software testing is a comprehensive umbrella term for a wide variety of different types of testing. These testing types are categorized based on the purpose, AUTs, or approach. Understanding how these types of QA testing work will help you and your team better develop the test plan. 

In this article, we will learn how the testing types are categorized, 15 most popular testing types, and their place in the Software Testing Life Cycle. Specifically, we will explore:

  1. Unit Testing
  2. Integration Testing
  3. End-to-end Testing
  4. Manual Testing
  5. Automation Testing
  6. AI Testing
  7. Functional Testing
  8. Visual Testing
  9. Performance Testing
  10. Regression Testing
  11. Compatibility Testing
  12. Accessibility Testing
  13. Smoke Testing & Sanity Testing
  14. White Box & Black Box Testing
  15. Testing For Different AUTs

Categorization For Testing Types

There are 6 major ways we can categorize (or name) testing types:

  • By Application Under Test (AUTs): grouping based on the type of software or application being tested (i.e. web, mobile, desktop, etc.)
  • By application layer: grouping based on the traditional three-tier architecture used in software development, including the UI, backend, or API
  • By attribute: grouping based on specific characteristics or properties being tested (i.e. visual testing, functional testing, performance testing, etc.)
  • By approach: grouping based on the overall strategy to do testing (i.e. manual or automated or AI-driven)
  • By granularity: grouping based on the level of detail and scope at which the testing is performed (i.e. unit testing, end-to-end testing, etc.)
  • By testing techniques: grouping based on the way we design and execute the test. It is important to note that categorizing by testing techniques is more targeted and narrowed than categorizing by approach. Examples of this include black-box testing, white-box testing, or gray-box testing

There is a hierarchy to these categories, with the most inclusive being categorization by approach. For example, automated testing is simply testing with the help of automation scripts or tools, and we can automate almost any other types of testing.

15 Different Types Of QA Testing

1. Unit Testing

Unit testing is a critical software development practice. It involves testing small parts of a software application in isolation, such as functions, methods, modules, or classes. These individual units make up the entire application, and if they don't function properly on their own, they won't work well together. Unit testing ensures that each component works correctly before integrating it into the larger system.

A unit test usually requires:

  • Test Fixture: components of a unit test responsible for preparing the necessary environment to execute the test case. They create the initial states for the unit under test to ensure a more controlled execution where there is no interference from external components.
  • Test Case: a script to verify the behavior of the unit being tested
  • Test Runner: a framework to orchestrate the execution of multiple unit tests and also provide reporting and analysis of test results.
  • Test Data: a list of values simulating real-user inputs into the system
  • Mocking and Stubbing: substitutes for real dependencies of the unit under test in case testers need two units to perform the test.

Read More: What is Unit Testing? A Complete Guide

2. Integration Testing

Integration testing between two modules

Integration testing is a software testing method where components are combined and tested together as a whole. These components have passed unit testing, which means that they work well independently, but issues may arise when they interact with each other. Testers use integration testing to uncover defects that arise from code conflicts when the modules are integrated.

There are several strategies to perform integration testing, with the 2 most common approaches being:

  • Big Bang Approach: integrating all components and test everything at once
  • Incremental Approach: integrating and testing several components with closely related logic group by group

Incremental Approach is carried out by 3 different methods:

  • Bottom-up approach: integrating and testing components that are smaller in scope first, then gradually moving to larger components
  • Top-down approach: integrating and testing components larger in scope first, then gradually moving to smaller components
  • Sandwich approach: combining the 2 former approaches

Read More: What is Integration Testing?

3. End-to-end Testing

End-to-end testing, also referred to as E2E testing, is a software testing technique that verifies the functionality and performance of an entire software application from start to finish by simulating real-world user scenarios and replicating live data. 

Thanks to end-to-end testing, testers gain insights into how the application functions from the end user’s perspective, giving them a more comprehensive understanding of the software quality before release.

4. Manual Testing

Manual testing is the process of assessing software or applications by human testers without relying on automated testing tools or running test scripts. Testers interact with the system just like how end users would to discover bugs, defects, and problems that affect the user experience.

Manual testing is the traditional way of doing software testing. It is resource-intensive, time-consuming, and generally not scalable, which is why many QA testers have moved to automation testing to boost efficiency. However, in certain cases manual testing still shines through, especially when we add to include some creativity and human intuition into the process. For example, these QA testing types must be conducted manually:

  • Ad hoc testing: an unplanned and spontaneous approach to manual testing where testers perform tests without predefined test plans. Testers rely on their experience and intuition to identify possible defects in the software, sometimes even making educated guesses.
  • Exploratory testing: an approach similar to ad hoc testing in its emphasis on spontaneity, but exploratory testing is more systematic and involves learning and investigating the software while simultaneously designing and executing test cases on the go.
  • Usability testing: a form of manual testing that focuses on evaluating the user-friendliness, interface, and overall user experience of the software. Testers put themselves in the user's shoes and interact with the system without relying on specialized testing tools. This human touch helps uncover bugs that may have been overlooked by automation testing.

5. Automation Testing (or Automated Testing)

Automated testing, in contrast with manual testing, uses automation frameworks and automation testing tools to automatically run a suite of test cases. The entire process from test creation to execution is done with little human intervention, helping to reduce manual effort while increasing testing accuracy and efficiency.

Read more: What Is Automation Testing? Ultimate Guide & Best Practices

6. AI Testing

AI testing is the evaluation of a system's functionality, performance, and reliability using AI. It follows the same traditional Software Testing Life Cycle, but all of its stages have been significantly improved by AI techniques such as Machine Learning, NLP, or Computer Vision, assisting QA teams in advanced tasks that previously required human intelligence such as data analysis, planning, and decision making.

Several powerful ways AI can help testers include:

  • Generate test cases autonomously based on gathered data of user behaviors
  • Suggest manual test cases based on test plan
  • Automatically waits until all necessary elements are present on screen before continuing with the test.
  • Automatically fixes broken element locators and uses those new locators in following test runs, reducing maintenance overhead.


Start AI Testing With Katalon

7. Functional Testing

Functional testing is a phase where quality engineers confirm if the tested application's features work according to their specified requirements. We can perform it either manually or with automated tools based on the specific test cases. Several examples of functional test cases include:

  • Verify successful login with valid credentials
  • Verify login system behaviors with invalid credentials
  • Verify product search functionality
  • Verify backend data flow

Read More: Top 8 Automated Functional Testing Tools

8. Visual Testing

Visual testing is a software testing technique that focuses on verifying the visual aspects of an application's user interface (UI). It involves examining the graphical elements, layout, and overall appearance of the software to ensure that it matches the expected design and behavior.

Testers have to perform tests for many aesthetic aspects of a visual element, including:

  • Size
  • Width
  • Length
  • Position
  • Visibility (whether the user can see the element)
  • Readability (whether the user can easily read the text and information on the element)
  • Alignment (whether the UI element is well-placed in relation to other elements)
  • Consistency across all screen resolutions (whether the layout remains the same on different screens)

Normally testers have to rely on their own eyes to spot those bugs. If they decide to write automation scripts to do visual testing, they’ll follow the screenshot comparison approach. It involves comparing a reference or baseline image of the desired user interface (UI) with the actual UI to identify any pixel differences between them. This means even visual bugs as tiny as 1 single pixel can’t escape this method. 

However, sometimes pixel differences do not necessarily mean visual bugs. For example, all websites and applications have dynamic elements that change frequently such as date, time, or the Cart icon on eCommerce websites. Visual automation test scripts register those changes as bugs, but real users don’t think so. This is why testers really need AI-augmented visual testing tools that know how to distinguish from bugs that truly impact users and bugs that do not.

9. Performance Testing

Performance testing is a type of software testing that assesses the performance and responsiveness of a software application under various conditions. Its main objective is to identify and measure the system's behavior in terms of speed, stability, scalability, and resource usage.

There are several subtypes of performance testing:

  • Load testing: a type of testing involving the simulation of a specific workload that mimics the normal and peak number of concurrent users, then measures how much the response time is affected. 
  • Stress testing: a testing type involving pushing a software or app beyond its limits. Whatever the average load of a system is, stress testing takes it a step further to identify the breaking point. Insights from stress testing sessions will help development teams better optimize their resources and improve the infrastructure.

10. Regression Testing

Regression testing is a type of software testing conducted after a code update to ensure that the update introduced no new bugs. This is because new code may bring in new logic that conflicts with the existing code, leading to defects. Usually QA teams have a series of regression test cases for important features that they will re-execute each time these code changes occur to save time and maximize test efficiency.

Why is regression testing important

11. Compatibility Testing

Compatibility testing is a type of QA testing that ensures a software application functions correctly across different environments, devices, browsers, and operating systems. The primary objective of compatibility testing is to verify that the application remains consistent and usable across a variety of configurations. This means that there are several terms for different scopes of compatibility testing, including:

12. Accessibility Testing

Accessibility testing is the process of evaluating if software, websites, or digital content can be used by people with special needs or challenges due to impairments. This testing type aims to find and fix barriers in the application that may hinder these individuals from effectively using and accessing the digital product. In accessibility testing, we validate the accessibility or availability of:

  • Keyboard 
  • Screen reader
  • Color contrast
  • Alt text
  • Multimedia

13. Smoke Testing & Sanity Testing

Smoke Testing and Sanity Testing are two types of software testing that are performed to quickly assess the basic functionality of an application. They are often conducted to determine if further testing is needed. Simply put, these 2 testing types are quite similar in scope.


Smoke Testing

Sanity Testing


Verify critical functionalities.

Validate recent changes or fixes.


Broad, covers major functionalities.

Limited, focuses on specific areas affected by recent changes.


Shallow and brief.

Limited regression testing.


Identify show-stopper issues.

Confirm recent changes did not cause major defects.

Execution Time

Quick and executed after each build.

Quick and executed after each small release or bug fix.


Determine if further testing is possible.

Determine if the application is stable for comprehensive testing.


Precedes more comprehensive testing.

Subset of regression testing.


Pass indicates basic functionalities work.

Pass indicates recent changes are stable.

Failure Handling

Fail requires further investigation before detailed testing.

Fail needs further investigation and fixes before complete regression testing.

Read More: Sanity Testing vs Smoke Testing

14. White Box & Black Box Testing

White box testing examines the internal structure of the software application, similar to how we can easily see the inside of a white box. On the other hand, black box testing focuses on validating the application's functionality without knowledge of the internal code or implementation details, similar to how the inside of a black box can’t be seen.

15. Testing For Different Types Of Applications

For each type of application under test (AUT), there is a different term. The most common testing types for AUTs include:

  • Web Testing
  • Desktop Testing
  • API Testing
  • Mobile Testing

Katalon - A Comprehensive Testing Platform

Katalon logo

Katalon is a comprehensive quality management platform supporting test automation, execution, management, and reporting for a wide variety of AUTs (web, API, mobile, desktop) across popular environments, all in 1 place, with minimal engineering and programming skill requirements. Katalon comes with many exciting features that allow QA teams to get started immediately:

  • Low-code/Full-code test creation: Creating test cases can be done much faster by utilizing Katalon Built-in keyword library that allows for simple drag and drop functionality while advanced users also have the choice to switch to Java and Groovy scripting to generate custom keywords for broader test case usage.
  • Data-driven testing supported: Test data can be imported in various formats such as Excel, CSV, or XML. Katalon also allows you to capture data snapshots to check for changes and bind Global Variables to handle test scripts at different development stages.
  • Test artifact management: A built-in centralized object repository stores and provides access to all UI elements, objects, and locators you need for your tests. With just a few clicks, you can easily update these locators and properties across test cases when there are UI changes.

Not only that, Katalon also has state-of-the-art AI features that bring your test to the next level:

  • StudioAssist: Leverages ChatGPT to autonomously generate test scripts from a plain language input and quickly explains test scripts for all stakeholders to understand.
  • Katalon GPT-powered manual test case generator: Integrates with JIRA, reads the ticket’s description, extracts relevant information about software testing requirements, and outputs a set of comprehensive manual test cases tailored to the described test scenario.
  • SmartWait: Automatically waits until all necessary elements are present on screen before continuing with the test.
  • Self-healing: Automatically fixes broken element locators and uses those new locators in following test runs, reducing maintenance overhead.
  • Visual testing: Indicates if a screenshot will be taken during test execution using Katalon Studio, then assesses the outcomes using Katalon TestOps. AI is used to identify significant alterations in UI layout and text content, minimizing false positive results and focusing on meaningful changes for human users.


Start Testing With Katalon Now