Session: Cutting testing time with Parallel Automated Functional Tests
Thursday 15.40 - 16.30
Room: Keyboard Cat
Automated functional tests provide valuable feedback to developers by notifying them when they break functionality. Additional value can be derived from the tests by providing fast feedback, as the problem is likely to be fresh in the developers mind and quicker to fix.
A Typical functional test suite can take many hours to run because the tests can only be run sequentiality. The main cause for the sequential tests is the dependence on data, common practice has tests clear the application under tests database and populate it with the required data before a test starts. This high level of database manipulation does not allow the tests to run in parallel because each test will interfere with the database at different times causing false positive test failures.
The common solution for long running serial only test suites is to break them into multiple groups and run each group on a separate machine with its own instance of the application under test. This is not true parallelism and has scalability issues which will be discussed during the session introduction.
The real solution is to solve the creation of test data and interference of data created during other test executions. This can be done for most applications by creating data unique to each test. A simple way of achieving this is the creation of a API based on the Data Builder Pattern to create this unique data.
Alan Parkinson
Alan Parkinson is the Founder of StoryIQ, a company that helps teams adopt Acceptance Test Driven Development. He has been working in software development for 12 years and has focused on automated testing for the last 4 years. This software development experience is across many sectors including embedded real-time systems, safety critical systems, e-commerce and financial trading applications. When not helping companies adopt automated testing through training and coaching he contributes to testing related open source projects.