Skip navigation.

A minor performance problem?

non-functional testing | performance testing | performance testing patterns
Returning to Yury's comment:
At the same time in my world, typically, under load some transactions fail or have a longer response time. Nevertheless my clients are happy.

I want to elaborate the subject a little further. Yes, it indeed is very typical and probably the biggest problem I see in performance testing for now.

Unfortunately clients (for example, development teams) are happy to finish the project, move it in production, get bonus, etc., and move to next project. Most developers are not very exited by perspective of debugging code for small memory leaks or hunting for a rare error that is difficult to reproduce. So the development team becomes very creative in finding "explanations". For example, for growing memory and periodic long-running transactions in Java - that's a garbage collection. False in most cases. In few cases when it's true – let's tune garbage collection and prove that the problem went away.

Another typical approach is to say that the requirements are that 99% of transactions should be below X seconds, and for this test we have less than 1% of failed transactions. So everything is fine. Well, doesn't look so for me. It may be okay in production over time consider network and hardware failures, OS crashes, etc. But if the performance test was run in controlled environment and no hardware/OS failures were observed, it looks pretty much as a serious bug. For example, it can be a functional problem for some combination of data.

And in corporate environment performance testers quite often are eager to accept these "explanations". They have their own pipeline of projects, they don't have time to dive into details. And they have a good excuse: they were told that it is not a problem.

I am never comfortable when under load some transactions fail or have a longer response time in controlled environment and we don't know why. That indicates that we have a problem (or a few). And while customers are happy at the moment, it could change. When we have an unknown problem, why not to trace down and fix it in the controlled environment? What if that few failed transactions are a view page for your largest customer and you won't be able to create any order for that customer? Say, the view page fails when you have more than x orders for that customer?

So quite often performance testing starts from validation testing at the end of the project. And when found issues are not an absolutely evident showstopper, quite often some kind of "explanation" is suggested saying that it is not a problem. Sounds meaningless for me because we don't know what IT is at that point. First we need to find what IT is and only then decide whether it is a problem. Instead of doing some investigation the project is wrapped up.

Maybe that approach has background in functional testing where as soon as you found problem you usually can figure out how serious it is. Not the case for performance testing: usually you have no idea what cause the observed symptoms and how serious it is, quite often the original explanations turn out to be wrong.

With great pleasure I found that Michael Bolton in More Stress, Less Distress (see the end of the article) wrote that idea down very concisely. Can't fight temptation to add the illustration from Michael's article:

As Richard Feynman said in his appendix to the Rogers Commission Report on the Challenger space shuttle accident, when something is not what the design expected, it's a warning that something is wrong. "The equipment is not operating as expected, and therefore there is a danger that it can operate with even wider deviations in this unexpected and not thoroughly understood way." When a system is in an unpredicted state, it's also in an unpredictable state.

It isn't about requirements

Yury, really I got your point and it is quite valid as you wrote it here. I just tried to illustrate one more side of it: quite often small anomalies from expected behavior are signs of bigger problems and you shouldn't ignore that, you need at least to figure out WHY you get them.

My post is NOT about requirements at all. When you have 99% of response times 3-5 sec (with the requirement 5 sec) and 1% 5-8 sec I wouldn't worry much (and you and Scott commented here on this situation), but my post wasn't about that. If you get that 1% failed or with strangely high response times (for example, more than 30 sec with 99% 3-5sec) using unrestricted isolated test environment that, by my opinion, should be investigated. Not because it is above some kind of artificial requirement, but because it is an indication of an anomaly in system behavior or test configuration. And my concern is that this situation (behavior anomaly) usually is analyzed from requirements point of view, but it shouldn't at least until the reasons for that behavior become clear.

I see these two sometime similar looking situations as completely different: 1) system missing a requirement, but results are consistent: that is rather a business decision like cost vs. response time trade off 2) results are not consistent in some way (while it even can meet requirements): that may be an indicator of a problem (and its scale isn't clear until investigated).

Well said...

At the end of the day, this is just one more way to make the points of :

- What *is* a "performance requirement" anyway?? (i.e. What makes them different from goals or targets? And why do we spend so much time trying to "meet" arbitrary requirements instead of trying to figure out whether or not we have any potentially bigger problems than missing an arbitrary number by 1%.)

- What is the point of performance testing in the first place?? (i.e. If all we want to do is verify, or dis-verify, the presumption of complying with some arbitrary requirement, let's make our life easy and just design tests that pass. If we actually want to *learn* something about the performance -- the speed, stability and scalability -- of the application, let's design some tests with real information value.)

::sigh:: In 43 days it will be 7 years I've been "singin' this tune". I feel like my message has gotten sharper and that every year more folks are "learning to sing along -- or adding their voice with their own version of the song", but (to beat the analogy to death) it's still a LONG way from becoming a top 40 hit.


--
Scott Barber
Chief Technologist, PerfTestPlus
Executive Director, Association for Software Testing
sbarber@perftestplus.com

And what about our customers?

I am sorry for being not so clear Alex, but you missed my point.

1) Because of statistical nature of concurrent online processing we have a distribution of response times.
For a typical system we would get quite a few slow responses (which are significantly longer than the average response time).

2) At the same time these slow responses do not threaten a value of the product for our clients.

Let's assume that a client has a choice of:
A) having 0.2% of all responses longer than a documented requirement target
or
B) spending $1,000.000.00 to have 100% of all responses within this target.

In this case a client may choose an option "A".

It's not about "explanations" or "forcing a sign off".
It's about knowing what our customers really need and about making our customers happy.


Yury
http://www.softwaretestconsulting.com

Comment viewing options

Select your preferred way to display the comments and click 'Save settings' to activate your changes.