What is Non-Functional Testing?

Non-functional testing is a type of software testing that checks the non-functional aspects (performance, usability, reliability, etc.) of a software application.

An excellent example would be checking how many people can simultaneously log in to a software.

In simple terms, how well the system performs is assessed in non-functional testing.

Advertisement

It refers to various aspects, including:

  • Performance
  • Load
  • Stress
  • Scalability
  • Security
  • Compatibility

The main focus is to improve the user experience by checking how fast the system responds to a request.

We assess the software's performance under different conditions.


Types of Non-Functional Testing


Performance Testing

Performance testing focuses on the speed of the application.

It checks how fast the system responds under different conditions.


Load, Stress, Volume & Soak Testing

Load Testing

Testing the stability and response time of an application by applying a load that is less than or equal to the desired number of users.

In simple terms:

Gradually increase the load, then check the speed.

Here, load means data.

Stress Testing

Testing the stability and response time by applying a load more than the desired number of users.

In simple terms:

Suddenly increase or decrease the load and check the speed.

Volume Testing

Testing stability and response time by transferring large or huge volumes of data.

Here, we load large amounts of data into the system until it hangs.

This is generally done to check how the system responds to a large number of users at once.

Soak Testing

Testing the stability and response time by applying load continuously for a particular period of time.


How to Do Stress Testing

The stress testing process is done in the following steps:

Planning the Stress Test

  • Gather system data.
  • Analyze the system.
  • Define the stress test goals.

Create Automation Scripts

  • Develop stress-testing automation scripts.
  • Generate test data for the stress scenarios.

Script Execution

  • Run the automation scripts.
  • Store the stress test results.

Results Analysis

  • Analyze the stress test results.
  • Identify bottlenecks.

Why We Need Stress Testing

  • During festival time or a sale announcement, an online shopping site may witness a spike in traffic.
  • To check whether the system works under abnormal conditions.
  • To display appropriate error messages when the system is under stress.
  • System failure under extreme conditions could result in enormous revenue loss.
  • It is better to be prepared for extreme conditions by executing stress testing.

Endurance, Spike & Scalability Testing

Endurance Testing

Done to make sure the software can handle the expected load over a long period of time.

Spike Testing

Tests the software's response to sudden, large spikes in user-generated load.

Scalability Testing

A type of performance testing (under non-functional testing) used to check an application's performance by increasing or decreasing the load in particular scales.

It is executed at the:

  • Hardware level
  • Software level
  • Database level

It is defined as the capacity of a network, system, application, product, or process to function correctly when modifications are made to the system's size or volume to meet increasing needs.

Example

  • Web page scalability depends on the number of users, CPU usage, and network usage.
  • Web server scalability depends on the number of requests processed.

The main objective is to control how the application balances an increasing workload and identify the point at which the product stops scaling and why.


Security Testing

Security testing checks how secure our application is.

Two key aspects are:

Authentication

We verify whether the user is valid.

Authorization / Access Control

The permissions of a valid user.

We verify whether we are giving permission to the right user or not.


Recovery Testing

Recovery testing checks how the application recovers from crashes and hardware failures.

It checks whether the system returns from an abnormal state to a normal state.


Compatibility & Configuration Testing

Compatibility Testing

It includes:

  • Forward compatibility
  • Backward compatibility
  • Hardware compatibility (Configuration Testing)

Configuration Testing

A combination of hardware and software in which we test whether they are communicating properly.

In simple words, we check how the data flows from one module to another.


Concurrency, Fuzz, Interface & Storage Testing

Concurrency Testing

Accessing the application simultaneously by multiple users to ensure system stability.

It is mainly used to identify deadlock issues.

Fuzz Testing (Fuzzing)

A black-box technique of putting invalid or random data into a software system to discover coding errors and security loopholes.

Data is inserted using automated or semi-automated techniques.

The system is tested for exceptions such as:

  • Crashes
  • Failures of built-in code

Fuzzing usually:

  • Finds the most serious security faults.
  • Is very cost-effective.
  • Produces more effective results when combined with Black Box Testing, Beta Testing, and other debugging methods.

Interface Testing

Done to check whether individual modules are communicating properly as per specifications.

It is mostly used to test the user interface of GUI applications.

Storage Testing

Verifies whether the software:

  • Stores relevant data in the appropriate directories.
  • Reads data files from the correct directories.
  • Has enough disk space to prevent unexpected termination due to insufficient space (Stack Overflow).

FAQs

1. What is Non-Functional Testing?

Testing that assesses non-functional aspects such as:

  • Performance
  • Usability
  • Reliability
  • Security
  • Compatibility

It checks how well the system performs.


2. What is the difference between Load Testing and Stress Testing?

Load Testing

Applies a load less than or equal to the desired number of users to check stability and response time.

Stress Testing

Applies a load greater than the desired number of users to see how the system behaves under abnormal conditions.


3. What are the types of Performance Testing?

  • Load Testing
  • Stress Testing
  • Volume Testing
  • Soak Testing
  • Endurance Testing
  • Spike Testing
  • Scalability Testing

4. How is Stress Testing performed?

  1. Plan the stress test.
  2. Create automation scripts.
  3. Execute the scripts and store the results.
  4. Analyze the results to identify bottlenecks.

5. Why do we need Stress Testing?

  • To verify the system works under abnormal conditions.
  • To handle traffic spikes during sales or festivals.
  • To ensure appropriate error messages appear.
  • To avoid revenue loss due to failures under extreme conditions.

6. What is Scalability Testing?

A type of performance testing that checks an application's performance as the load is increased or decreased at the hardware, software, or database level.

It identifies the point at which the application stops scaling.


7. What is the difference between Authentication and Authorization in Security Testing?

Authentication

Verifies whether the user is valid.

Authorization

Verifies whether a valid user has the right permissions.


8. What is Recovery Testing?

Testing how well the application recovers from crashes and hardware failures.

It checks whether the system returns from an abnormal state to a normal state.


9. What is Fuzz Testing?

A Black Box Testing technique that feeds invalid or random data into the system to uncover coding errors and security loopholes.

It often reveals serious security faults.