Automation brings several key advantages to your development environment and you should use it wherever possible. Some of these benefits are:

  • It increases speed and reduces the likelyhood of an error.
  • Automated processes can be tested, just like the code that's written by developers.
  • It can be version controlled. Each change is recorded in the version control along with comments as to why that change needed to happen; with manual steps there's no such history.
  • It lets testers and developers spend more time on adding or fixing functionality instead of monotonous tasks.
  • Something that is automated can be verified and thus can be trusted.

Tasks that are great for automation:

  • Build of the system under design
  • Deployment of the system under design
  • Execution and report generation of:
    • Unit tests
    • Code coverage
    • Functional testing
    • Load testing
    • Code quality metrics and conventions
  • Health check of systems

Tools and Further Reading

Check out O'Reilly's The Environment Is Automated in the Code and Tests Done in Code, Not by a QA Department for more information and various tools for implementation.