http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8048644
- rising code base size and complexity
- requirements for development spped and agility
- distributed teams
- write tests for routines
- keeps tight focus on requirements
- helps with testable design
- better test coverage
- lost of unit tests
- "selective doce of component and integration tests", e.g. REST service calls
- A few end-to-end tests
- run tests after each commit
- what code and percentage is covered by the automated tests
- low/decreasing levels are warning signs
- examine test effectiveness
- measure runtime
- measure brittleness
- feature only released to a sub-set of users
- compare the behavior of different groups
- use feature toggles
- easy way to measure outcome: detailed server logs with user interactions
- e.g. with projects like Lombok
- tools for intelligent selection of test cases to run => reduce test execution time
- flag and correct brittle tests
- have a stable staging environment