Make it easy
- Build frameworks which Mock and Stub out portions of the system
- Set up examples
- Use frameworks which allow reuse for integration testing (BDD frameworks work well here)
Make it beneficial for the Developer
Use new technology
Treat it as an R&D project
Allow Developers to use the test classes as areas to expand their skills
Make it fun
Do challenges
Have group sessions/knowledge transfers
Explain Benefits
Prevent:
Calls at nightCalls at nightQA-Dev loopQA-Dev loopUndefined sections of codeUndefined sections of codeUnclear ramifications of making changesUnclear ramifications of making changesDifficult refactoringDifficult refactoringLow code qualityLow code qualityPoor understanding of requirementsPoor understanding of requirements
Give Team ability to reject Unclear Requirements
Possibly the most important piece, ensure that the team has the ability to reject the requirements or create a research task to define them. If during planning the team can not define the majority of the basic tests for the requirements than they are unclear. By having the team more enthusiastic about testing, it will give them the ability to define the tests up front and understand what changes need to be made. If they are unable to define the tests than the requirements should be redefined to make it clearer.