Incorporating Performance Testing in Agile ProcessMichael VaxPresident, onmaas Softwarewww.onmaas.com
Need Performance Numbers for the Web Site
Types of Performance TestingPerformance TestingLoad TestingStress TestingFocused TestingCapacity Testing
Performance Project PhasesProactiveReactiveSizing and Capacity PlanningPerformance EngineeringPerformance TestingMonitoring & Troubleshooting
What do we need to test performance?
Performance Testing & WaterfallSizing and Capacity PlanningPerformance EngineeringPerformance TestingMonitoring & TroubleshootingProblems No functional system until the very end
Bugs prevent test execution
Last minute changes across the board
Test script development is delayed
 Testing is delayed to the end of the project
Too late to fix performance unfriendly design decisions
Developers may not be available by the time the performance testing startsPerformance Testing in Agile ProjectBenchmark TestBenchmark TestBenchmark TestFocus TestFocus TestFocus TestFocus Test Test environment setup
Tools selection
Performance requirements
Test data preparation
 Load tests
Stress tests
Capacity testing
Resilience testingPerformance Testing is Iterative ProcessDone in collaboration with Senior DevelopersMultiple Test Cycles are NeededDoing performance test right before the launch day is not helpful.You need Calendar time!
Performance Testing is Team ActivityPerformance analystPerformance tester Senior developer / architectDBANetwork engineer
Performance Testing and IterationsPerformanceSpikeFeature A Test requirements
 Test developmentFeature A - Focus testFeature B - Focus testFeature B Test requirements
 Test developmentFeature C Test requirements

Incorporating Performance Testing in Agile Development Process

Editor's Notes

  • #4 What is performance testing?Performance testing is a real-life investigation into a system’s responsiveness and scalability. This typically includes stability considerations as well.What is Load Testing?Load testingLoad testing takes performance testing and applies a “normal” amount of load, reflective of real-world numbersLoad testing shows us bottlenecks with different user levels and any immediate problems when typical load is appliedWhat is stress testing?Stress testingStress testing takes load testing even further and applies above normal or “peak” amounts of load and possibly for extended periods of timeAll of this testing is essential to truly understand the systems performance characteristicsWhat is Capacity Testing?To determine how many users and/or transactions a given system will support and still meet performance goals.Focused Testing?All of these are essential to truly understanding the performance characteristics of your system.
  • #5 Sizing and Capacity PlanningSystem usage scenariosLoad during normal usage and peak hoursPerformance requirementsRight-sizing systems to meet needs without wasting money and creating unnecessary complexity.Performance EngineeringProactively engineering for performanceTechnical design with performance in mindTools SelectionTest environment & data preparationTest script design and preparationPerformance TestingTests executionResult analysisRecommendationsFix problems Monitoring and TroubleshootingUnderstanding systems and solving problems in production
  • #6 Test environmentYou need a separate hardware environment to test performance, including separate network It should be as close to production as possibleToolsTest scriptingMonitoring applications, DB, h/w (CPU, memory), network bandwidthWorking system- You cannot do performance testing on unstable systemSkills- See next slide
  • #7 - Performance testing is delayed
  • #11 Use performance spike to validate design decisions Do focus performance testing for completed features
  • #14 NetworkingDNS, routers, load balancers configuration network monitoring toolsDatabases Monitoring Tuning Load balancing Backup Disaster recovery CachingApplication serversTuning Failover Load balancing Caching LogsDevelopment environments- Programming languages Virtual machines Debuggers Profilers Stack trace ExceptionsApplication domainWhat system does How it is used Integration points
  • #15 automation is software development – use Agile process to manage itA fair amount of software/script/automation development needs to occur during performance testing and tuning. Therefore…
  • #16 Performance testing is endlessCan be extremely time consuming with little resultsIn order to get through all the previously mentioned tests, it would take a full teama week, at which point they would need to start again because the next build would be out.It’s possible to measure a number of different performance characteristics in a single test. For exampleWe also have
  • #18 What is performance testing?Performance testing is a real-life investigation into a system’s responsiveness and scalability. This typically includes stability considerations as well.What is Load Testing?Load testingLoad testing takes performance testing and applies a “normal” amount of load, reflective of real-world numbersLoad testing shows us bottlenecks with different user levels and any immediate problems when typical load is appliedWhat is stress testing?Stress testingStress testing takes load testing even further and applies above normal or “peak” amounts of load and possibly for extended periods of timeAll of this testing is essential to truly understand the systems performance characteristicsWhat is Capacity Testing?To determine how many users and/or transactions a given system will support and still meet performance goals.Focused Testing?All of these are essential to truly understanding the performance characteristics of your system.
  • #19 Throughput testing – typically load generation tools will simply measure this with respect to data flow, such as bytes/second. This isn’t all that useful. I much more meaningful metric is how many user transactions per second can be completed. One user transaction can be thought of as a single click on the website, such as clicking on “view product”. The response time is then measured for the time it takes the request to come back in its full user-end response.Saturation Testing – involves pushing the system to its maximum throughput capacity where the throughput will level out to a max, and the average response times will simply increase with additional user loadEnd-user Response – this sort of testing is typically executed measuring end user response time and gives a good indication of the end-user experience. The Apdex performance statistic is useful for measuring this a meaningful manner.Server Response – this sort of testing gives an indication of how well the server is responding under the load an is usually measured by system resource statistics such as CPU, memory, hard disk and network use
  • #21 Most commercial systems today employ a multi-tiered architecture with redundancy and failover methodologies applied at each tier in order to provide some level of protection against component failure, and therefore allowing their services to continue operating in a lower throughput state.  By avoiding a single point of failure in this way, system downtime can be reduced and High Availability (HA) can be achieved.  Maintaining High Availability is especially valuable for 24-hour sectors such as e-commerce, where problems cannot be fixed overnight and the failure of a retail website for even a few minutes may result in loss of sales.
  • #23 Software is always workingPerformance testing is iterative processPerformance testing is team activity