“What is the objective of load test?” I asked the participants attending my workshop. “It is to find out if the system can handle the load” replied one of them. A circular answer, this does not help!
Another person chimed in “Having multiple users use the system at the same time and check if the system functions properly”.
“Does that mean that load test is only applicable for multi-user systems?” I asked. Silence followed.
I have observed that the clarity of understanding of “what some of the common non-functional tests like load, stress, performance, scalability, volume are” is typically lacking. Possibly, because the tests are inter-related. Possibly, because the participants did not go beyond of these jargons!
Using “Joe the promising athlete” as an example I have found it is very easy to explain the objectives of these tests and then delve into the test design techniques for these.Let me share this with you now.
Joe is a young athlete, his coach seeing in him a future world champion. Every day Joe spends significant time at the gym building muscles/strength. He lifts weights and is comfortable lifting up to 40kg snatch a few times.
The coach observing that Joe is comfortable with 40 kgs hands him 50 kg weights. Joe is successful but finds it progressively difficult. After a few minutes, he pauses to catch his breath. The coach hands him 60 kg!
“Coach” Joe whines. “Go on Son,” says the coach in a baritone voice. Joe succeeds, his body glistening with beads of perspiration.
After stating this short snippet, I asked the participants in the workshop “So why is Joe whining?”
“Well he is tired,” says a participant
“Why is he tired? I ask.
“It is pretty obvious, he is run out of energy”, says another.
I continue with my next question “So why has he run out energy?” knowing fully well that my audience will think that I am pretty dumb.
“Well he has done a lot of work and that is the reason Joe has run out of energy”.
“Great. So Joe has expended energy doing work. When his energy has run out, he is unable to continue further” I summarized.
“Now, can you tell me how this story relates to load/stress test?”
I see the participants eyes brighten and one of them chips in “Oh Yes, Load is about subjecting the system to do “work” using the energy i.e system resources. 60 kg is the maximum Joe could lift as he was stressed out, and therefore stress test is finding out the maximum load that the system can “lift” before the energy i.e. resources give out”.
“Wonderful guys. Let us summarize. A load test is about understanding if the system can do the typical real-life work with the given resources while the Stress test is about understanding the maximum amount of work that can be done by consuming ‘all’ the resources”.
Now the coach seeing Joe is tired gives him an energy drink. After a few minutes, Joe is ready to go and the coach hands him 75 kg. Joe now energized, lifts it with aplomb!
“Now what can we learn from this?” I ask. The participants think for a while and then “Well I think Joe got an additional shot of energy from the drink and he was able to lift more” said the guy in the last row.
“Wonderful correlation. Yes, he could do more work with the additional energy. Now can you connect this to scalability test?”
After a momentary pause, the person on the far left says “Yes, once stressed, more energy allows us to do continue to do more work and hence scalability test is about checking if the system when stressed out can indeed do more work if given more resources.”
“Brilliant. Now would one of you summarize this please” I ask.
The short guy with glasses in the first row says “Resources (i.e. energy) enables us to do the various System Operations (i.e. work). The three tests Load, Stress & Scalability” are about connecting these in different ways. I will illustrate this on the board”.
He walks to the board and writes:
“Great summary. Indeed simple. Now how does this relate to performance test?”
“That is easy. Performance does with time, the time taken to do the work (operation). Performance test is about measuring if the time taken to perform the operations is indeed acceptable (with the given resources)”
“Does this mean that the load and performance test can be done at the same time? The objective however of these two tests are indeed different, is it not?” asks the backbencher.
“Yes, you are right, they may be done together, however, their objectives are different,” I say.
“Before we conclude, one last question – What is volume test?” I ask, walking to the end of the room.
After a few seconds, a quiet but firm voice behind me says “System Operations is really about processing data and volume test is about checking if the system can indeed process large amounts of data. By the way, in some systems, a large volume can choke and stress the system”.
“Guys, guess Joe and his coach helped us understand Load, Stress, Scalability, Performance and Volume test. I hope you understand that any kind of system (single/multi-user) can be subjected to these tests. Real life load is about subjecting the system to various types of operations (concurrently if multi-user) and not just subjecting the system to a blast of a specific operation” concluding the class.
“Yes” chimed in the participants with a big smile.
Thank you, guys. I am done with the class.
This is one of the lessons in the online course “Load testing using JMeter” in CleanSoft Academy Online at Cleansoft Academy Online
If you find the article interesting, please ‘like’, ‘share’ or leave a comment below.