Incorporating Performance Testing in Agile Development Process

23
Incorporating Performance Testing in Agile Process Michael Vax President, onmaas Software www.onmaas.com

description

This presentations explains different aspects of software performance testing and give actionable recommendations on how to integrate it into the Agile Software development process

Transcript of Incorporating Performance Testing in Agile Development Process

Page 1: Incorporating Performance Testing in Agile Development Process

Incorporating Performance Testing in Agile Process

Michael VaxPresident, onmaas Software

www.onmaas.com

Page 2: Incorporating Performance Testing in Agile Development Process

Need Performance Numbers for the Web Site

Page 3: Incorporating Performance Testing in Agile Development Process

Types of Performance Testing

Performance Testing

Load Testing Stress Testing

Capacity Testing Focused Testing

Page 4: Incorporating Performance Testing in Agile Development Process

Performance Project Phases

Proactive Reactive

Sizing and Capacity Planning

Performance Engineering

Performance Testing

Monitoring & Troubleshooting

Page 5: Incorporating Performance Testing in Agile Development Process

What do we need to test performance?

Performance testing

Test Environment

Skills

Working System

Tools

Page 6: Incorporating Performance Testing in Agile Development Process

Problems- 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 starts

Performance Testing & WaterfallSizing and Capacity Planning

Performance Engineering

Performance Testing

Monitoring & Troubleshooting

Page 7: Incorporating Performance Testing in Agile Development Process

Performance Testing in Agile Project

Iter.0 Iter.1 Iter.2 Iter.3 .... Iter.x-1 Iter.x

Benchmark Test Benchmark Test Benchmark Test

• Test environment setup• Tools selection• Performance

requirements• Test data preparation Focus Test Focus Test Focus TestFocus Test

• Load tests• Stress tests• Capacity

testing• Resilience

testing

Page 8: Incorporating Performance Testing in Agile Development Process

Performance Testing is Iterative Process

Analyze

Fix

Test

Doing performance test right before the launch day is not helpful.You need Calendar time!

Multiple Test

Cycles are Needed

Done in collaboration with Senior Developers

Page 9: Incorporating Performance Testing in Agile Development Process

Performance Testing is Team Activity

• Performance analyst• Performance tester • Senior developer / architect• DBA• Network engineer

Page 10: Incorporating Performance Testing in Agile Development Process

Performance Testing and Iterations

Iter. n-1Feature A

Iter. nFeature B

Iter n+1

Feature C

Feature A• Test requirements• Test development

PerformanceSpike

Feature A - Focus test

Feature B• Test requirements• Test development

Feature B - Focus test

Feature C• Test requirements• Test development

Page 11: Incorporating Performance Testing in Agile Development Process

Performance Testing - Agile Best Practices

• Put performance tasks on a SCRUM board• Make fixing functional bugs that block

performance tests a high priority• Do not delay fixing performance issues identified

by tests• Retest after fixes are applied to know if they

worked• You cannot guess where the next bottleneck is• Don’t pre-optimize before testing

Page 12: Incorporating Performance Testing in Agile Development Process

Performance Testing-Agile Best Practices (2)

• Understand the production environment• Analyze logs• Know when performance is good enough• You can always add more h/w • Apply low level load to the system under test

during manual testing• Use load test scripts:

• to find functional and stability bugs• to look for memory leaks• to reproduce intermittent problems• as part of smoke test

Page 13: Incorporating Performance Testing in Agile Development Process

Skills

• Networking

• Databases

• Application servers

• Development environments

• Application domain

Page 14: Incorporating Performance Testing in Agile Development Process

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

Page 15: Incorporating Performance Testing in Agile Development Process

• Break down your system-interaction model

into a modular framework that can be re-used

Design Smart

Session X

Use Case A

Use Case B

User Transaction AUser Transaction BUser Transaction C

User Transaction C

This modularization allows quick test changes and creation

Page 16: Incorporating Performance Testing in Agile Development Process

• 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 Z Session Type ASession Type X

Page 17: Incorporating Performance Testing in Agile Development Process

Types of Performance Testing

Performance Testing

Load Testing Stress Testing

Capacity Testing Focused Testing

Page 18: Incorporating Performance Testing in Agile Development Process

Load Testing

• Load Testing can encompass a large number of tests specific

to some area of performance, such as:

• Throughput testing

• Saturation testing

• End-user response

• Server response

Page 19: Incorporating Performance Testing in Agile Development Process

Capacity Testing

• Capacity Testing is typically more specific than general load

testing

• Involves measuring “sizing” statistics, such as:

• Peak Active Sessions

• Sessions / Hour

• Transaction / Hour

Page 20: Incorporating Performance Testing in Agile Development Process

Stress Testing

• Stress Testing is typically based off load testing but pushes

things even further until the break point

• Resilience and Availability Testing

• Disaster recovery

Page 21: Incorporating Performance Testing in Agile Development Process

Focused Testing

• Not a ‘typical’ performance category

• Allows us to put strain on a specific aspect or functionality of

the system such as product views, check-out, or user

registration.

• Short duration

• Heavy load

• Usually run repeatedly with small tweaks

Page 22: Incorporating Performance Testing in Agile Development Process

In Conclusion

Agile Development Process enables performance testing throughout the

entire development cycle and ensures the adequate performance

by the end of the project

Page 23: Incorporating Performance Testing in Agile Development Process

Q & A

?