In our previous article, we described the types of functional testing, now we provide an overview of non-functional test methodologies so that decision-makers in other fields, in addition to IT professionals, are aware of what testing methods can be used to test a software.
The purpose of non-functional testing is to determine if the software response time is fast enough to meet business requirements. There are overlaps in the IT literature between certain test types because their operation and application are similar. These types of tests are close to each other and, although they differ in only a few aspects in terms of their objectives, they bring different values to the system.
Accessibility test determines whether the software can be used/accessed by people with disabilities. This may apply to a user who is: blind, deaf, visually impaired, has a learning disability, or is elderly.
Compliance testing is a non-functional testing technique performed to validate whether a developed system meets the standards of the organization or not.
Compatibility test checks the behavior and operation of the software in another environment: e.g. on different web servers, hardware and networks in different configurations. There are several types of compatibility tests, the literature separates Interface, Backward and Platform compatibility tests. The Backward compatibility test checks to see if newly developed or updated software is compatible with older version. This is because if any part of the software is updated, it should work well with the previous version of the software.
The efficiency test tests the amount of resources required by the program to perform a given function.
Install / Uninstall test is performed to verify that the software is installed with all required components and the application is working as expected. This testing is important because installation is the first interaction with end users. Installation and uninstallation testing is performed in full, partial, or upgrade installation/uninstallation processes on different operating systems, in different hardware or software environments.
Load testing is a non-functional test in which the system is loaded to determine how much load or maximum traffic it can handle without degrading performance. This form of testing is used to find the maximum capacity of the system and to detect any problems that arise. Load test is a type of performance test designed to evaluate how an application or system is operating under real-world conditions.
In the case of operational testing, the software is evaluated before the production phase. Operational testing ensures the compliance of the system and its components during the operation of the application.
Performance test is used to verify that the system meets the performance requirements. This method allows you to determine how the system is performing in terms of sensitivity and stability under a workload. To perform a performance test, the system is usually overloaded.
Portability testing is the testing of the transfer of a product or software from one environment to another.
Recovery test determines how well an application or system can recover from crashes, hardware failures, and other similar problems.
Reliability testing is a software testing process that verifies the software is able to perform an error-free operation for a certain period of time in a given environment, that it works reliably for its intended purpose.
Scalability testing is a non-functional test methodology in which application performance is measured by its ability to increase or decrease the number of user requests or other performance measurement attributes. Scapability testing can also be performed at the hardware, software, or database level.
The purpose of security tests is to check how secure the software/application/website is against internal and external threats, and how much can be intruded into a system to disrupt it and/or copy information. Typically, security grounding is split between Red and Blue teams, a group of testers (Red team) trying to attack security systems, and an opponent group (Blue team) trying to protect them.
Stress test is performed to check how and when a system fails. This is accomplished by placing a heavy load on the system, such as performing complex database queries, generating continuous input into the system or database.
In usability testing, real users test the application or system. Meanwhile, testers monitor users and check the operation of applications while using the software, and then document any problems that arise.
Volume testing is performed by putting pressure on a software or application, “flooding it” in order to generate huge amounts of data to control system behavior and response time.
During White-box testing, the internal structure or operation of the application is tested. For testing, the internal perspective of the system is used to design test cases. To perform White-box type tests, you need to know the internal software and how the codes work.