During performance testing, the quality of the application is checked in various circumstances, because the test engineer leads to load of the database, server and running multiple actions simultaneously in the same application. These actions can be the result of a real load when the tester puts many users using the application or the potential one when we create virtual users who "pretend" the behavior of real users - similar to Threads in jMeter.
Such non-functional tests are carried out not only in optimal conditions in accordance with the customer's requirements, but also in the face of extreme stress simulations so as to check what will happen when many users perform the same activity, eg. ordering a product or generating an invoice. This allows ensuring satisfactory operation even in the case of critical loads.
On the basis of this, it is considered that the purpose of performance testing is to determine the system's behavior, meet performance criteria, constantly monitor the application status in this respect and, if necessary, optimize. It is worth devoting a bit of marketing data to this last one.
Optimization is extremely important, even basic tests allow to find the cause of problems related to the long loading time of the application. Sometimes it's enough to compress the size of the graphics used, optimize the code or enter caching of repeatable elements on the page, to feel more comfortable using the application.
This topic was devoted to numerous studies, from which we learn, among other things, that 53% of users resign from further exploring the Internet portal if its loading time is more than 3 seconds. Harris reaches similar conclusions in his research (2013, 2015). He proved that 46% of users doing online shopping will not return to a slowly loading website. 67% of users using mobile devices come from such websites, while 22% of users decide for the final purchase from the competitors. Conclusion? Test and optimize.
Load testing, as the name suggests, aims to continually and proportionally increase the load on servers, applications or databases until the test criterion has been reached. It is important to monitor user increment and report analysis in order to determine in which places and under what load, the website operation has slowed down (if it appears). The real and very likely load created by real users of the application is often set as a criterion. Currently, numerous tools allow effective implementation of Load tests on almost every web project, including jMeter, LoadRunner, BlazeMeter (as a web application or plugin for Chrome) or NeoLoad.
Applications with the long response time from the server and low performance can be quickly diagnosed by load tests even at the early stages of development - mainly due to the detection of bottlenecks that reduce application performance. This allows you to prevent a situation where we release an ineffective application to the end-user. Besides, the sooner the problem is identified, the less the cost of its repair will be at this stage of the project.
Stress tests (sometimes called torture testing) are examples of non-functional and negative testing of applications. They are used to check the stability and reliability of the product in an extreme load situation. Conducting appropriate stress tests is not an easy task for the tester, because it requires them to devote special attention to the maximum number of users and their activity, where the application remains stable. When the application stops responding, there should always be an appropriate message that will inform you about the current state of the application. An important element is the creation of a report on the behavior of the application and making sure that the load caused by us has not led to, for example, a breach of data security. For half-success, we can consider the situation in which the application automatically "returns to the world of the living" and does not require external administrator intervention, eg manual server restart. It is essential that all components and data remain intact after the system returns to normality. We can use this kind of tests, for example, on websites related to a popular event, eg a film festival, e-sports championships or in the case of large online sales such as Black Friday or Cyber Monday. For performing stress tests, we can use the same tools that were mentioned in the case of Load Tests.
- Load Testing consists in testing applications as required, this is an example of positive testing.
- The tester gradually loads the application to check its behavior under "natural" conditions.
- The result of successful Load Testing is not a crash or corruption of the application.
- Stress Testing is based on testing the application above the requirements, we try to spoil the application, so it is negative testing.
- The tester gradually exceeds the "natural" conditions to check the bandwidth limit.
- It often ends with server crashes, it checks what happens when you reach the application limits.