Today, I am gonna discuss the very basic thing….Type of Performance Testing (Non-functional Testing). We know that software system or an application should be tested against the Speed, Stability and Scalability under a variety of load conditions; so that it’s true performance can be find-out before Go-Live. Non-functional testing encompasses a range of different tests which enable analysis of various aspects of the system. Non-functional testing tells about what needs to be fixed before going live (mainly the issues faced under the variety of load conditions). Many people have the different opinion on Load, Endurance, Stress and Volume Test. Some are considered them as one type of tests and some are having different views. I will explain what are the types of non-functional test and how they are different from each other:
Performance Test: Performance test is performed, to ascertain how the components of a system are performing in a particular situation. Resource usage, scalability and reliability of the product are also validated under this testing. Load SLA of performance test are either average load or expected load (not to break the system). Performance Test usually conducts in regression manner where small changes are being applied on the daily or weekly basis on the application. Generally, the time duration of the performance test is 1 hour (steady state); it may vary as per your SLA/requirement. The typical user load graph of the performance test is given below:
Note: Performance Testing is a generic term which is used to represent Non-Functional Testing. Performance Test is one of the tests under Non-functional testing.
Load Test: Load Testing is a type of non-functional testing to check system with constantly increasing the load on the system until the time load reaches its threshold value. This type of test is conducted with an increase in load (number of concurrent users, transactions) and then checks the behaviour of an application under test. It helps to identify the maximum operating capacity of an application as well as any bottlenecks and determine which element is causing degradation. E.g. If the number of users is increased then how much CPU, the memory will be consumed, what is the network and bandwidth response time. Load testing is performed to make sure that what amount of load can be withstanding the application under test without impacting the response time. The typical user load graph of Load test is given below:
Stress Test: The main idea behind stress testing is to determine the failure of the system. Stress testing is a negative testing where we load the software with a large number of concurrent users/processes which cannot be handled by the systems hardware resources. This testing is also known as Fatigue testing. It puts greater emphasis on robustness, availability, and error handling under a heavy load, rather than on what would be considered correct behaviour under normal circumstances. The typical user load graph of the Stress test is given below:
Spike Test: Spike testing is a subset of Stress Testing. A spike test is carried out to validate the performance characteristics when the system under test subjected to workload models and load volumes that repeatedly increase beyond anticipated production operations for short periods of time. Generally, the time duration of the spike test is 1 hour; it may vary as per your SLA/requirement
Volume Test: Volume test as the name suggested; refers to a test with the bulk of data to be processed to check the efficiency of the application. The main goal of this testing is to monitor the performance of an application under varying database volumes. Generally, the time duration of volume test is 1 hour or time required to process n number of records; it may vary as per your SLA/requirement. The best example of volume testing is to test a batch with millions of records.
Endurance testing: Endurance testing involves testing a system with a significant load extended over a significant period of time, to discover how the system behaves under sustained use. That is, to ensure that the throughput and/or response times after some long period of sustained activity are as good as or better than at the beginning of the test. It is basically used to check the memory leaks. Generally, the time duration of Endurance test is 6-8 hours; it may vary as per your SLA/requirement. The typical user load graph of the Endurance test is given below:
Soak Test: Another name of Endurance Test. Soak Test is carried out on average load.
Scalability Test: Scalability Testing is conducted to determine the application’s capability to scale up in terms of user load, the number of transactions, the data volume etc. The purpose of a scalability test is different from stress or load test. Suppose; a company expects the six-fold load increase on servers within the next two months. They may need to increase the server performance and shorten the request processing time to better serve visitors. If the application is scalable then you can shorten this time by upgrading the server hardware, for example, you can increase the CPU frequency and add more RAM. Also, you can improve the request performance by changing the server software, for example, by replacing text-file data storages with SQL Server databases. To find a better solution, first, you can test hardware changes, then software changes and after that compare the results of the tests.
Recovery Test: Recovery testing is done in order to check how fast and better the application can recover after it has gone through any type of crash or hardware failure etc. Recovery testing is the forced failure of the software in a variety of ways to verify that recovery is properly performed. In recovery testing, the main focus is given on recovery time, % of the recovery, % of loss and performance of the application after full recovery.
There are some more types of Non-functional test which are considered as NPNFT (Non-Performance Non-Functional Test)
Compatibility Test: Compatibility testing is performed to ensure compatibility of the system/application/website built with various other objects such as other web browsers, hardware platforms, users (in case if it’s very specific type of requirement, such as a user who speaks and can read only a particular language), operating systems etc. This type of testing helps to find out how well a system performs in a particular environment that includes hardware, network, operating system and other software etc.
Security Test: Security testing is used to check whether the application or the product is secured or not. It checks to see if anyone hacks the system or log in to the application without any authorization then the application should not be vulnerable to attacks. The security testing is performed to check whether there is any information leakage in the sense by encrypting the application or using a wide range of software and hardware and firewall etc. The six basic security concepts that need to be covered by security testing are confidentiality, integrity, authentication, availability, authorization and non-repudiation.
Usability Test: In usability testing basically the testers tests the ease with which the user interfaces can be used. It tests that whether the application or the product built is user-friendly or not. Usability testing also reveals whether users feel comfortable with your application or Web site according to different parameters – the flow, navigation and layout, speed and content – especially in comparison to prior or similar applications. Usability Testing tests the following features of the software.
- How easy it is to use the software?
- How easy it is to learn the software?
- How convenient is the software to end user?
Accessibility Test: This is a subset of usability testing, and it is performed to ensure that the application being tested is usable by people with disabilities like hearing, colour blindness, old age and other disadvantaged groups.
Localization Test: Localization Testing is a software testing technique, where the product is checked to assure that it behaves according to the local culture or settings. In other words, it is a process of customizing software application as per the targeted language and country.
The major area affected by localization testing includes content and UI.
It is a process of testing a globalized application whose UI, default language, currency, date, time format and documentation are designed as per the targeted country or region. It ensures that the application is capable enough for using in that particular country
Internationalization Test: Internationalization is a process of designing a software application so that it can be adapted to various languages and regions without any changes.