Agile development styles centered on continuous integration are leading to new ways of thinking about various parts of the software development life cycle (SDLC). Requirements gathering and project management have been affected. Now, the Agile emphasis on continuous processes is being heard more widely in performance testing and management.
Continuous performance management -- or continuous performance testing -- applies the principles of performance testing to the practice of continuous integration, according to Steven Haines, Java domain expert at Quest Software. Quest and Haines have fashioned a tool kit, now in beta and available to the Quest community, that embodies some of the ideas of continuous performance management.
Performance testing should be integrated into automated continuous integration builds, Haines and others advise. That means having tight test script incorporation within a continuous integration server.
Continuous performance management in Haines' view is closely associated with test-driven development (TDD). Both methodologies, he has indicated, can lead to shorter development cycles, faster triaging and greater confidence in deployments. Haines, author of Pro Java EE 5 Performance Management and Optimization (Apress), has written extensively about TDD, continuous performance management and other matters of application tuning.
Load- and unit-testing secondary builds
Achieving Agile goals requires some juggling. There is a consensus that individual commit builds, if they are to be done often, cannot consume too much time.
"There are a lot of shortcuts one may take to keep the commit build under, say, 10 minutes," Haines said. "But a more extensive secondary build test can be planned for another time interval." Such a test would be expected to find more problems than the simpler tests.
"If we have a commit build that does the functional, smoke testing, then the secondary build is a cool place to bring in performance testing," he said.
In a first phase, teams should consider going through test cases and profiling them in three ways, according to Haines.
- Do a memory profile of each test's case.
- Do code performance profiling to find the number of lines a piece of code may execute, how much time is spent executing each line, how much time is spend executing each method, and so on.
- Do a coverage study to see what percentage of code is executed.
In a second phase, performance load testing should be applied to the secondary build, Haines indicated. This is different than integration testing, he noted.
"The difference here is that the integration test is interested in only a single request at a time," Haines said.
Meanwhile, performance load tests, naturally, show what new problems arise when load is applied. "Load has a funny way of making little problems that you don't really see into big gaping holes," Haines said.
Haines said the developer kit Quest is creating for continuous performance efforts parses through code, finds test cases and configures the company's JProbe tool to capture the memory, code and coverage profiles thus described. The kit will take results and builds a single aggregate report.
Quest and Haines are not alone in arguing that performance management has to be considered in the context of continuous processes.
Some of this has to do with the advent of service-oriented architecture (SOA), in which diverse services are gathered to form unique applications.
Test software vendors such as iTKO Inc. have discussed the need for a continuous form of validation of SOA applications, which constantly change. In addition, SOA tester MindReef Inc. discusses a regimen of continuous validation that is part testing and part performance.
Also, writers such as Cody Menard, now general manager for Microsoft Business efforts at ThePlanet.com, have discussed the paramount importance of continuous performance as long ago as 2003.
Jason Barry, performance architect at DeCare Systems in Ireland, has worked on developing new Agile approaches to continuous performance management with Quest's technology. He said health system builder DeCare needs to monitor applications in production and is working with Quest technology to build an optimal professional services model to ensure full life-cycle support between development and operations.
"The idea of continuous performance management links up between our continuous integration environments and performance management. It allows developers to be proactive rather than reactive," Barry said.