Adopting a DevOps practice starts with understanding where you are in the implementation journey. Download the DevOps Transformation Roadmap. Brought to you in partnership with Techtown.

Non-functional testing is done to ensure that a system/application meets the specified performance requirements. Here, by performance we do not only mean response time, but several other factors such as security, scalability, and usability of the application as well.

We discuss some of the most common non-functional tests below:

Performance Testing:

In order to ensure that the response time of a system is acceptable, performance testing is carried out. By setting up a considerable load and a production-sized database, the system is tested for response times of several business critical processes.

Load Testing:

To check whether the system can sustain the pressure or load of many users accessing the system at one time, load testing needs to be carried out. The production load is replicated in the test environment in this case after which the application/system is tested.

Stress Testing:

This testing is done to pull the system far beyond its capabilities and see how it reacts. Contrary to load testing in which the maximum allowable load is generated, in stress testing, the load generated is more than what the system is expected to handle.

Volume Testing:

When storage requirements and capabilities of the system are to be tested, volume testing is done. When a huge database size is encountered, the system’s performance and its ability to exchange data and information are tested in this case.

Failover Testing:

To test how well the redundancy mechanism works when the system encounters heavy load or unexpected failure is what failover testing is about. Also, when the specific failed system is back again, it must begin to function as per requirements — this is fail-back testing.

Security Testing:

To test how well the system can preserve itself and the data it holds in situation of malicious attacks is called security testing. Confidentiality, integrity, availability, authentication, and authorization are the main areas that are tested when security testing is considered. Also, network security, system security and application security are other areas that will be tested in this case.

Compatibility Testing:

An application is tested for its coordination with different hardware and software that it is expected to work on. Another testing that can be done is working of the application with different versions or releases of the same hardware or software.

Usability Testing:

To verify the ease of usage of an interface within an application is what usability testing is about. Learnability and memorability of the application are main factors in this case. This testing is particularly important when testing GUI.

Scalability Testing:

When an application is tested for it ability to increase and scale up on any of its non-functionality requirements such as load, number of transactions, number of servers, volume of data etc., it is known as scalability testing.

The above list is not exhaustive since there are more than 150 testing types as of today. The different types of testing (including automated testing) that needs to be done depending upon the scope of the project and maturity of the application under test.