When it comes to application performance, one of the most common problems organizations make is the problem of omission. When it comes to application performance, far too many organizations fail to properly articulate what acceptable performance actually is, and without a basic description of how an application is supposed to perform, when problems arise, nobody knows how to deal with them.
So how do you effectively define the performance requirements for your applications? Using the SMART mnomic is a good start, meaning that any performance requirement you have should be:
With this in mind, a good performance requirement might read something like this: “98% of all round-trip response times, when uploading a file less than 50K in size through screenA, should be should be sub-second."
Passing the SMART test
As you can see, this requirement is very specific, describing both the scenario in which the application is being used, and the particular part of the application, namely screenA, that needs to meet the requirement. Furthermore, the requirement is easily measured and certainly attainable with modern hardware. It is relevant to the user, and it can be effectively timed, so by all means, this requirement passes the SMART test.
And of course it cannot be stressed enough that a performance requirement must be capable of being tested. If a performance tester looks at a given requirement and has no idea how to test its veracity, you've got a serious problem. After any performance requirement is articulated, the question as to how easily this requirement can be tested must be asked. If the answer is not clear, the requirement needs to be rephrased and reworded.
But to actually test a performance metric the requirement must actually exist in the first place, and it is defining sensible and testable performance requirements that organizations often fail to do. Performance should never be an afterthought, but instead, a high-priority requirement that gets defined clearly and early on in the application lifecycle management process.