Zen-Dreams

Zen-Dreams.com

Why stress testing applications ?

Stress testing is one of the most important part of development lifecycle as computers have taken a big part in our working life. Everybody working in an office is using a computer, and with that, software installed on it or shared over a network. Applications are probably going to be used by more than one person at a time and you must make sure that, whatever the number of users you have, the application will keep on working in an acceptable way.

We can define software in three categories, local, remote and web applications.

For application that runs directly on the computer, optimization is not really a problem anymore as computers are running faster and faster everyday. Software development companies tend to skip optimization phases and try to focus on adding more features that might not even be used by end users. The consequence of this behaviour is the reduction of development costs but on the other hand, it forces customers to change their computers more often, as you can see with the great example that is Windows Vista, or MS Office 2007.

For application that runs on a remote server like Citrix(1) servers, Terminal Server(2) , X11(3) or any other system made to export the display, the behaviour is quite the same as you just put more power into your server. But sometimes developers know that the application is to be used in a multi-user environment and therefore try to optimize their code or they should.

The last group of applications as the same principle as remote application as there are run on a remote server but through a web server(4). Main aspect of using a web server is that any user can use the application, even lightweight terminals such as PDAs or Smartphones. The main difference between those two groups is the sharing of resources but also multi-level components, making optimization more complex.

The goal of stress testing is to check every components(5) of your application and to be sure that the final result is what was expected from a functional point of view and that the application is matching your SLR(6). Tests are also made to find bottlenecks and to correct them.

Prior to test the applications, you must define a test plan from a functional point of view and define your targets, meaning that you must know how many users you want to simulate during the tests, how long the processing of a page can take, and so on. Just define your test plan before running the tests or you will waste lots of time tweaking it.

Having identified bottlenecks, optimization has to be performed, most of the time, optimization just consists of upgrading servers but it should also include optimization of the code/database/system parameters/network. Just find how much the optimization process will cost and what you have to gain for each part of the optimization.

1 : Citrix servers are commonly used in a graphical environment to export display to clients computer while having everything else processed on the remote server.
2 : MS Terminal Server is included in most of Windows Server environments exporting the display to a client computer while having the software run on the Terminal Server
3 : X11 is the graphical environment in most Unix Systems, the display can also be exported
4 : Apache, Tomcat, iPlanet, Websphere, Weblogic, RoR etc…
5 : Host server, webserver, application, database, network, authentication system, etc…
6 : Service Level Requirements, this define how the service must behave regarding customers.

By Anthony

Post a Comment

Your email is never shared. Required fields are marked *

*
*