Performance testing is an excellent example of why we should be motivated by quality characteristics in our testing strategy. Typically, performance is thought of as a “nonfunctional requirement,” but as my colleague Richard Bradshaw once said, “If my application’s features are all working, but it takes over a minute for it to respond to me when I’m using it, then it doesn’t feel very functional to me.”
The problem with the distinction between “functional” and “nonfunctional requirements” is that it can sometimes imply a hierarchy, or priority, over what testing to focus on first. This is why some projects end up in situations where performance testing is rushed at the end, with limited time and resources to plan, implement, execute, and analyze how our application performs in a specific context. However, if we consider performance as an equal quality characteristic to other, more “traditional” characteristics such as completeness, stability, and maintainability, we may begin to realize that performance for some contexts is a high-level quality characteristic, and it should take priority in a testing strategy.