Wednesday, April 23, 2008

What's performance testing to a tester?

I think performance testing requires more than just seeing how many users can bang on the system. A lot of systems don't differentiate between performance testing and subsections of that type of testing. Yesterday I gave a quick intro to a tool that allows you to "performance" test a web application. In fact, that covers everything but storage testing.

When I'm thinking of heuristics and how to remember all of them, it helps me to use analogies. Here are some of the analogies I use regarding how performance testing should work. Feel free to comment if think I'm way off base.

  • Volume Testing - Think of your body. Try drinking a glass of water. Now, drink a glass of water each hour for the rest of the day. Tomorrow, do the same thing execpt drink one glass every half and hour. Every day keep decrementing the time spent between each glass. This is what volume testing an application is like. Finding the breaking point, except if you combine this will all-pairs testing, you can get glimpses into cross-configuration testing as well.
  • Stress Testing - Think of any stress you have had on your body; have you been in a car accident? Have you had someone shoot you out of a cannon? These are all stresses, whether plausabile or not, each still have the same type of result... or do they? Stress testing an application is the same and two ways of stress testing an application may not fully express all the stresses that a system can take.
  • Load Testing - Have you ever studied for an exam? How about two at the same time? how about 10? As you go up, the harder it is to juggle all of the data. Some people can handle 10 exams while others may not be able to handle one. If that person who could handle 10 exams, the load test here would be to pump that up incementally until they cannot handle any more.
  • "Performance" Testing - How fast can you run? I can't run that fast. Some people aren't built for speed or sometimes they have other factors that limit their speed. Same in software - sometimes millisecond response time might lead you in a certain direction, but more often than not it is because of something you didn't expect.
  • Storage Testing - How much can you eat? How far back can you remember in your memory? This one is pretty self explanatory. One could say that I'm somewhat famine proof because of the result of my storage capacity. :-)
These are just a few heuristics I use when I do performance testing. Load generation and configuration management is a huge part of this too, but I'll get into those another time.