Non functional Testing: Types & Examples
A Software Development Lifecycle (SDLC) is undoubtedly incomplete without testing. The testing phase comes right after the Post Development Review (PDR) once the documented business rules of a feature are verified. While functional testing focuses on the working of the functional areas of your application, non functional testing provides insights regarding the response of your application under different scenarios.
Before we move on to a detailed look into the non functional testing types, a quick announcement: Diffy has got you covered even if you are a newbie in the testing field. Do check our comprehensive guide on functional and non functional testing to understand the basis of these two types of testing.
In this article, we’ll go a bit further to help you understand the types of non functional testing through both definitions and relevant, hands-on examples, and the best tools to do your own testing. Here’s what we’ll cover:
- What are the types of non functional testing?
- How are they performed?
- Which is the best tool for each type of testing?
Without further ado, let us walk you through a detailed look into the types of non functional testing.
Want to skip to the best part? Start using Diffy for free for all your non functional testing needs!
What Are the Types of Non Functional Testing?
Non functional testing is divided into the following types:
Moving further, we will expand each type with a detailed overview of it, relevant test cases, and the best tools around to get the job done well!
What Is Performance Testing?
Suppose you get a new car. As you go for your first drive, you increase the RPM, place a hard foot on the gas, and turn on the AC in order to get an idea of how stable and responsive your car remains while doing all of these actions. This is a real-life analogy of performance testing.
Coming back to SDLC, performance testing is defined as the testing done in order to determine how stable and responsive a system remains under a certain workload. Therefore, performance testing aims to test an application’s scalability, speed, and stability.
For instance, how much time does an application take to respond when the number of users is >=1000 is an example of performance testing.
Performance testing can be further segregated into
- Load testing
- Stress testing
- Volume testing
- Scalability testing
How Do You Perform Load Testing?
An application is placed under maximum load while performing load testing. The objective is to check the application’s performance and identify any bottlenecks under the maximum anticipated user load.
How Is Stress Testing Performed?
In stress testing, your goal is to determine the response of the application in maximized data processing scenarios. Therefore, stress testing aims to identify the point where the application chokes.
How Does Volume Testing Work?
Volume testing deals with the scenarios where humongous amounts of data need to be populated from the database. As the name suggests, volume testing deals with the performance of the application under fluctuating database volumes.
What Is Scalability Testing?
Scalability testing tests an application’s response to a sudden increase in the number of users. It is done in order to identify how well the application behaves in case there is a sudden spike in the number of active users.
To sum it up, take a look at the following table:
|Performance Testing Type
|Example Test Case
|Test the application under a huge number of concurrent users and find any performance bottlenecks
|Check the application’s response time when 1000 users are simultaneously using it
|Test the application in maximized data processing requirements and high traffic to identify the breaking point
|Increase the number of concurrent users exponentially to the extent that the application crashes and note how long does it take to recover
|Test the application in cases where huge amounts of data needs to be retrieved from DB and populated on the front end to identify how long does the application take to retrieve data
|Concurrent users performing actions on the UI for the database to fetch and populate a large dataset in order to note the time taken by the system to fetch require data
|Tests the application in cases where there is a sudden yet huge increase in the number of users to determine the ability of the application to scale up
|Midnight sales on a clothing brand website can result in a huge spike in the number of users. The website’s response to that increase is what falls in scalability testing
What Is Failover Testing?
Failover testing is one of the most critical non functional testing types. It determines a system’s ability to shift to backup resources during a server failure.
For instance, think about a banking system.
When there is a server failure, operations come to an immediate halt, and considering the number of ongoing banking transactions, things can get extremely chaotic extremely fast. Therefore, prior to an application going live, failover testing is performed so that you know how long the system takes to shift to a backup resource.
What Are the Key Factors in Failover Testing?
While performing failover testing, we look for the point of failure in the system. Once the failure is identified, a solution is designed around it that aids the resolution whenever a crash happens.
However, the following factors need to be kept in mind before testing a system for failover:
- Cost of the failure is the most important thing here as the failure of the frameworks in the system comes with a hefty cost.
- The time required to resolve the issues that cause the failure.
What Is an Example of Failover Testing?
Consider a telecom application. Before it goes live, quality assurance engineers sit together and identify the time taken by the application to recover when the primary server fails. Moreover, they identify the financial impact of server downtime.
Based on these two factors, they design a solution to enable the application to shift to a secondary server when the primary one fails. After that, they determine the system’s ability to shift to the secondary server and how well it handles it. This minimizes the downtime and cuts the losses incurred due to server failure.
What Are the Recommended Tools for Failover Testing?
Some of the widely used tools for failover testing are:
This takes us to the next type of non functional testing i.e. compatibility testing.
What Is Compatibility Testing?
Compatibility testing tests your application’s ability to run on a number of hardware configurations, operating systems, networks, devices, web browsers, and versions.
Let’s look at a real-life example: your car may be great to drive in the city. But what if you don't drive it on a public road? Will it hold up off-road? What if you change the fuel type -- how will its performance be affected?
This is exactly what happens with applications in compatibility testing: you try various scenarios to see how well it holds up in each of them.
What is an Example of Compatibility Testing?
Let’s say we want to perform compatibility testing for Snapchat. This will require testing the application on both Android and iOS (Operating Systems).
For that, we will take an Android phone and an iPhone. After that, we will test the application on Android 9.0 and Android 10.0 versions. Similarly, we will test the application on iOS 14 and iOS 15.
After that, we will test the application over a Wi-Fi network and a mobile data network. Rinse and repeat with as many combinations of the parameters above as possible.
What Are the Recommended Tools for Compatibility Testing?
Recommended tools for compatibility testing include:
What Is Usability Testing?
Usability testing deals with the user experience side of the application. That is why it is also known as User Experience (UX) testing.
It determines the ease of use, intuitiveness, and the ease for real users to reach their end goals. This type of testing is performed by onboarding real users and watching them use the application.
How Is Usability Testing Performed?
Let’s say you are required to perform usability testing for a banking application. The testing can be broken down into the following phases:
This is the initial part where you will recruit potential customers in order to perform usability testing of the application. Working with real third-party users is the best way to get meaningful insights regarding the UX of the application.
Test Cases Breakdown
Break the application modules and assign tasks to the recruited users. For instance, a test case could be to add a local beneficiary. Another could be to make an online transfer.
These tasks can be assigned to the group of recruits in order to get real user experience insights.
Identify the Loopholes and Propose Fixes
Once the test cases are executed, you will get meaningful reports regarding the usage of the application. Recording the test case execution of the complete flow is a good practice as this provides a chance to go through it again and identify the broken flows so that a fix could be developed for it.
What are the Recommended Tools for Usability Testing?
Some of the popular usability testing tools include
Wrapping It Up
When you’re working on a new mobile or web app, you want to launch it as soon as possible. I get that -- time to market is always important.
But if you launch an app without proper testing, it may fall flat on its phase. Non functional testing is crucial before any launch. But, even if it may seem tedious at first glance, with the proper tools, a lot of it can be automated and you can shorten your time to market.
For instance, have you seen the Diffy demo yet? If not, check it out! If you’re a stickler for accuracy in visual regression testing, you’re going to love it. Plus, you can test Diffy for free for 14 days, so what have you got to lose?