Performance testing is an awkward topic because it is usually very difficult to pin-down what you want / need. Honestly, everyone would really love it if every system could be blindingly fast. I can’t tell you the number of projects / systems where that was the goal. Whether that was achievable or not, is a different story.
A few months ago, I was asked a question about whether we should do performance testing on a project that was nearing completion. I had three answers pop into my head at the same time: 1) Absolutely yes, 2) No, it is a distraction, 3) It doesn’t matter. The person who posed the question was really hoping for a “yes”, but it wasn’t exactly that easy.
I would like to explain why each answer was correct. Btw, this is applicable to nearly any project.
- Yes, we absolutely should do performance testing – Why not, after all, what have you got to lose. Do the test. It might show that everything is great, or it might reveal some kind of problem. At least you know where you stand.
- No, it is a distraction – Most projects have a primary directive like this: “complete these features, by this date”. With a few addendums like “oh, yeah, it also has to be bug free. That’s all. No, wait. It also has to be really fast, and secure, and following standards, and um, it probably should be supportable, and oh yeah, it must use contemporary technologies, and stuff”. If you re-read this charter statement, you will see that performance, is pretty far down on the list. Face it, if you don’t get the required features done by the due date, nothing else will matter. Keep your eyes on the prize. Plus, if you are an experienced programmer, you already have been using best-practices all-along. The system will already be running as fast as it can. Do you need a test to tell you that?
- It doesn’t matter – What do you really expect to learn from the test? “is the system fast enough?” So, what if it is not, then what? You will either choose to optimize the system, or just learn to live with it. However, if the system was made by experienced people, you are probably already getting maximum performance from the system. You will only be able to optimize it, if you made some mistakes along the way. Otherwise, you are not going to be able to squeeze much more power from the system, without rewriting portions of it. If your system was not written by experienced developers, then you might-as-well count on doing some optimizations anyway.
The point is this: The system is either fast enough or it isn’t. So, optimize the system or don’t. But keep in mind that none of it really matters until you hit your deadline and feature set. The fastest system in the world isn’t worth jack, if it doesn’t do anything.