Performance Testing in Agile World!

In the era of hyper-connected world everybody want things to be done efficiently and effectively. Agile methodology came into existence to solve few of the time bound problems related to Software Development Life Cycle, but there are many challenges when it comes to Performance testing in the Agile World. In this article, I have discussed about my research on fitting performance testing in the Agile World and briefed about the challenges and processes one can follow to get good and fast results.

Goal
The goal is to test the performance of the application or feature as soon as it is built and when it is ready for functional testing, so that Functional and Performance testing can be conducted in the same sprint. Benefits of testing early is tremendous as cost of fixing of performance bottlenecks are less.

Performance Testing in Agile
Below diagram depicts performance testing methodology for Agile (Scrum methodology is considered) which is a summary of my research on the topic.We can divide the whole performance testing efforts into three stages S1, S2 and S3.  Theses stages are tagged to each stages of Agile scrum.

Stage 1. Unit Performance Testing

This stage can be started as soon as the development activity starts. This stage is referred to as Unit Performance testing, which concentrates on method or code level testing. The following are the steps:

  • Understand the technology and feature being developed (do not disturb)
  • Recommend on best performance practices of technology or web server container or app configuration (but do not insist)
  • Prepare Unit Performance test stories for required features
  • Once coding is complete, measure method level response time and resource usage. Method level performance analysis can be conducted using profilers
  • Use Test or Dev Environment for Performance Testing , since high load simulation is not required at this stage
  • Try Open source tools/profilers for performance testing (hence reducing the cost)
  • Measure and baseline the results and always ask for feedback
Metrics
  • Code Profile
  • Response time (end user and method level)

Stage 2. Focused/Component Performance Testing

Stage 2 referred as Focused or Component Performance Testing. This is not a Typical Performance Testing Category where Load testing is concentrated on a specific component (feature or functionality). Instead of waiting for complete code freeze of the application, we can test the feature what is already built and design load model based on the feature to be tested.The following are the steps:

  • Load on a specific feature or functionality
  • Run repeatedly after each sprint
  • Measure the Response Time of the new feature under normal load as designed
  • Can be conducted in Functional Test Environment (Low end configuration)
  • Do not waste time in enhancing scripts but concentrate on how to load functionality/feature
Metrics:
  • Response time of the feature
  • System Resource usages under the Load
  • Throughput and other performance metrics under load

Stage 3. Performance Integration Testing

This stage is a regular performance testing activity. These activities include planning for load , stress tests for whole application at system configuration level. Stage 3 can be planned during hardening sprint (or once 3 to 4 sprints of development is completed). The steps are:

  • Prepare workload model for entire system
  • Setup performance monitoring at each application tiers
  • Design and execute load , stress and endurance tests to discover bottlenecks at system level
Metrics:

System stability, capability and responsiveness

Advantages:

  • Involvement of performance team during the sprint will help building a well performing application.
  • Early bottleneck detections would reduce cost of fixing performance issues at a later stage
  • Working on performance fixes in hardening sprint will have great positive impact on system stability and capacity

β€œThe bitterness of poor quality remains long after the sweetness of low price is forgotten.”— Benjamin Franklin

 

Share