Here's a nice success story from the JIRA development team regarding how they investigated and overcame several performance problems in their most recent release.
Boiled down to its basics, the JIRA development team did several things right:
- They had invested in a suite of performance tests
- The performance tests detected the problem
- The performance tests maintained a history, so they could get clues about when the problem arose (in their case, they narrowed it down to a single day!)
- The performance tests compiled extensive statistics about the behavior of the system, so they could elaborate their theory with real data
Congratulations to the JIRA team! This is not an easy thing to do, and they must be quite pleased that their investment in these tests paid off.
At work, I am part of a team which build and maintain a fairly similar set of automated performance regression tests. These tests are hard to write, and hard to maintain, so I am quite familiar with all the effort that went into a setup such as the one the JIRA team describes. Over the years we have successfully used our performance tests to catch and resolve a number of performance problems during development, before they reach our customers. Each time we get a success like that, it becomes slightly easier to persuade the company of the benefits and value of the performance test suite.