Previously we have covered the topic of Quality Assurance in general. Since we are definitely not fans of the thing commonly referred to as “bliss” — now it is time to get a little deeper into the specifics. This time — we are going to explain the importance and certain nuances of performance testing and also explore certain challenges that it helps to solve.
There is nothing more important in the application than its smooth, stable functional operation and ability to maintain big and bigger than big workloads. These are the foundational parts of any website or application essential to its success. However, they are rather sensible and need a lot of care in order to carry on. That is what performance testing is for.
What is it? PT (short for “performance testing”) is a type of testing that measures, validates and verifies operational capabilities of an application or a website. It consists of a wide variety of methods designed to monitor and determine the quality and capabilities of certain aspects of the system’s operation. This reveals how the system acts in various situations.
Performance testing is commonly considered as one of the central parts of software testing routine as it directly deals with the software capabilities to do what it supposed to do.
While it might seem like no big deal but PT is rather complicated in its nature. The pieces of it are relatively simple — but the overall procedure needs to be thought-through step by step in order to gain maximum effectiveness. The first and foremost thing the tester needs to do is to define a strategy for testing routines. If not — then info will be simply a jumbled mess with no particular use.
Basic performance testing strategy includes:
- Defining which tests are required;
- Writing test scenarios;
- Selecting time in-between of test cycles
- Selecting the number of iterations the test will be performed;
- Comparing the results of various iterations with one another and with general requirements;
Usual suspects of PT are well-known and rather notorious. It is a cesspool of processing flaws in the system regarding speed, stability, and scalability. I.E.:
- if the site runs slow with several users on board;
- If the program presents inconsistent results;
- if the thing stumbles on a different operating system;
- If the system misbehaves significantly because of internal updates;
In other words — PT keeps performance smooth and sweet while routinely trying out its various aspects. It helps to calculate how many parallel users the site handle, shows how implemented changes affect the performance behavior. The endgame is fine-tuning of the entire system.
Without it — the thing will likely mess itself up at some point and subsequently fall apart and you will have once in a lifetime chance to learn how to pronounce “mistakes were made” in as solemn and somber manner as possible.
Basically, Performance testing serves as a riot squad watchdogs of well-rounded operation according to stated expected goals and documented requirements.
Another important aspect of PT is gathering data on the system’s activity in a certain scenario with a workload of varied extent. The results of performance tests serve as a basis for future feature specific tests. This gives a clear understanding of systems limitations and provides direction on what to refine and improve.
Aside from helping to locate problems but it also provides directions for possible solutions via results and comparative tests. It makes clear when and why the problem occurred and what causes it to happen.
- Assessing the system’s workload capabilities against standard criteria;
- Under normal circumstances;
- Under peak conditions;
- Also includes the system’s ability to restore to normal operation;
- Estimating the response time
- Under max load;
- Finding problematic points in the system’s operation;
- Defining breaking points and bottlenecks in operation;
- Comparing test results on multiple systems;
- Defining limits of system’s operation from the user’s standpoint;
- Estimating optimal hardware configuration required for adequate system maintenance;
All that allows seeing the heatmap of the application.
Performance testing routines are usually broken down into several types:
- Stress — studies the system’s behavior and checks its stability in situations when the hardware is unable to maintain software. I.e. if CPU, memory, disk space are lacking;
- Spike — aimed at studying specific segments of performance upon increasing load way beyond the projected scope for short periods of time;
- Scalability — regarding an ability to adapt to changing workload. Specifically — testing user load, a number of possible actions, data volume.
- Volume — used to monitor the efficiency of the operation by subjecting the program to large amounts of data.
- Endurance — used to study the system’s behavior over long periods of time. Tests the system with the expected amount of load to check for memory leaks, processual fails or scrambled acting;
- Load — involves testing the system with increasing load until it reaches the breaking point in order to define threshold value;
- Isolation — repetition of a test in order to check whether detected error or issue was fixed.
Every test is measured by certain metrics. The most common parameters are:
- Response time (average & peak)
- Amount of errors that occurred over the course of the test;
- Throughput ability;
- CPU / Memory load;
Every application is a tight knot of various functions connected with one another. This means every element of the program has to be durable enough to carry the excessive and intense workload and don’t fail miserably in the process. But that is not the thing that happens on its own.
The smooth and stable operation is achieved by thorough and through and through the testing process. Test after test the process is polished to utter perfection.
It takes time and a lot of effort but it is definitely worth trying. It is a kind of guarantee that any significant issue will be solved before it gets badly out of control.
That is what performance testing is all about.