Demystiyfing Performance, Load and Stress testing

Software development is evolving, its not too old a science where practitioner have found the magic bullet and converted that into neat and working processes and manuals. Its not yet reached to the level of predictability as that of an automobile manufacturing plant and it would take so much more time to get it as defined as “Tax” or ‘Accounts’, both of which Indian Software Engineers dont love too much.

While anything is evolving fast, new and new definition are added, new acronyms gets introduced and virtually anyone who is someone gets active. Such is the state of Software Development currently.

OK, so far so good, whats the context and why such a title if we are going to talk about the evolution of Software Development. Well, I wanted to briefly touch upon this before we go about de-mystifying three kinds of testing which is so often interchangeably used, more so because we try to generalize things. So to be short, let me start with the first.

1. Performance Testing – Measure the performance (startup time, time to save a db commit, time to get results from db etc) under controlled conditions. Repeat.

Performance testing is about setting up a system with a pre-definied criteria like so and so memory, so and so free disk, so and so OS, disk fragmented status, avail memory status and then run some predefined tests over builds (over releases) and analyse whether what you get matches with what you want.

Performance test is not about launching an app on any xyz system and measuring its startup time. The goals would always need to be associated with condition, i.e. we need a startup time of 5 seconds on a 1.8 GHZ Intel Core Duo having a RAM of 1 GB on Windows Vista and so on. We would measure time for a series of builds and then report.

2. Load Testing : Load is about load, carrying power. How many documents MS Word can open at one point of time, how many queries can be made simultaneously, how big a document can Adobe Photoshop open and so on. Its very simple. When you do load testing, you are just exercising the extremes to see the application behavior. Load is not about measuring performance, its about seeing how does an application react if we load it too much.

3. Stress Testing: Put the app under duress by making the system stress full i.e low memory conditions, low free space, band width bottle neck etc. The purpose of stress testing is to figure out the impact the app can have either on the system or the system can have on the app.

This in nutshell is the definition. Now in real life world, which testing we need and we perform is all driven by Test Strategy, requirements and other factors and all of us do what we think is right. So ir-respective of what testing you are doing, please remember the distinct difference between the three and find more bugs.

Leave a Reply

Your email address will not be published.