This presentations explains different aspects of software performance testing and give actionable recommendations on how to integrate it into the Agile Software development process
39. Performance Scripting is software development It should follow the same rules and be treated the same way Design, modularization, documentation, guidelines, source versioning, code reviews should all be carried out Allows for long term use and quick adaptability to changes in the system under test Allows for easy creation of new tests Invest in automation of test setup, data population, monitoring, and analysis of results
40. Break down your system-interaction model into a modular framework that can be re-used Design Smart Session X Use Case A This modularization allows quick test changes and creation User Transaction A User Transaction B User Transaction C Use Case B User Transaction C
41. This model allows Focused Tests or any sort of testing to be created quickly Design Smart “Long Running” Stress Test “Check-out” Focused Test Session Type Y Session Type A Session Type Z Session Type X
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.
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
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
- Performance testing is delayed
Use performance spike to validate design decisions Do focus performance testing for completed features
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
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…
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
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.
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
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.
Software is always workingPerformance testing is iterative processPerformance testing is team activity