Para começar, não acho que isso seja uma repetição de outras perguntas sobre testes de unidade . Estou procurando ajuda para articular seu valor a uma equipe de programadores, analistas, gerentes e testadores. Por testes automatizados, acho que não preciso fazer uma distinção entre testes de unidade (por exemplo, JUnit), BDD (por exemplo, JBehave, Fitness) e interface do usuário (Selenium, Watir) porque acho que todos eles fornecem valor semelhante (mas sinta-se à vontade para escreva uma resposta que discorde :))
A seguir está uma lista que identifiquei, estou procurando respostas que ajudem a expandir ou refinar:
- Economia de tempo / custo : escrever testes automatizados pode levar mais tempo do que casos de teste escritos. No entanto, considerando que os testes são executados várias vezes, o trabalho marginal (ou seja, custo / tempo) para executar testes automatizados é várias ordens de magnitude a menos. O fato de os testes automatizados serem baratos facilita a alteração do sistema ao longo do tempo.
- Documentação : não há maneira mais verdadeira de saber como um sistema funciona do que seus testes. Qualquer outra documentação geralmente está desatualizada no momento em que é escrita, mas os testes (pelo menos os que passam) revelam como as coisas realmente funcionam. Isso vale para a documentação do usuário final E da API.
- Qualidade do código : a escrita de teste obriga a:
- considere clientes porque os testes são um cliente
- quebra dependências nas quais tornar o código testável geralmente significa descobrir como fazer com que esse código não exija que outro sistema grande esteja disponível