Regression testing makes sure we do Regression testing makes sure we do
not make the same mistake twicenot make the same mistake twice
Write code
Execute
regression
test
Deploy or fix changes
Regression testing also helps us to make Regression testing also helps us to make
sure we are not re-introducing more bugs sure we are not re-introducing more bugs
Performance regression testing helps Performance regression testing helps
ensure we are not breaking performanceensure we are not breaking performance
Write code
Execute
performance
test
Deploy if performance is OK or fix changes
Performance regression testing Performance regression testing
can/should be done on several metricscan/should be done on several metrics
Performance regression testing Performance regression testing
can/should be done on several metricscan/should be done on several metrics
Performance regression testing Performance regression testing
can/should be done on several metricscan/should be done on several metrics
Performance regression testing Performance regression testing
can/should be done on several metricscan/should be done on several metrics
Directions in research on Directions in research on
performance regression analysisperformance regression analysis
Directions in performance Directions in performance
regression analysis researchregression analysis research
1. Execution profile comparison
2. Source code analysis
3. Visualization
Disadvantages of execution Disadvantages of execution
profile comparisonprofile comparison
- Actually needs performance tests
- Need to run performance tests
several times because of variation
- Small changes may be difficult to
interpret
Source code analysisSource code analysis
Identify risky commits and recommend
those for testing (Huang et al. @ ICSE 2014)
Disadvantages of source Disadvantages of source
code analysiscode analysis
- Can not replace 'real' performance
measurements (yet)
Visualization of Visualization of
performance regression performance regression
analysis resultsanalysis results
Control charts Control charts
(Nguyen et al. @ MSR 2014)(Nguyen et al. @ MSR 2014)
Differential flame graphsDifferential flame graphs
(Bezemer et al. @ SANER 2015)(Bezemer et al. @ SANER 2015)
Deciding on the baseline Deciding on the baseline
performanceperformance
Deciding on the acceptable Deciding on the acceptable
performance deviationperformance deviation
Reporting results to the Reporting results to the
developerdeveloper
Availability of Availability of
performance testsperformance tests
Execution time of testsExecution time of tests
Performance regression testing helps Performance regression testing helps
ensure we are not breaking performanceensure we are not breaking performance
Write code
Execute
performance
test
Deploy if performance is OK or fix changes
Directions in performance Directions in performance
regression analysis researchregression analysis research
1. Execution profile comparison
2. Source code analysis
3. Visualization
Availability of Availability of
performance testsperformance tests