Desenvolvimento orientado a testes de aceitação (ATDD) é um processo colaborativo onde desenvolvedores, testadores e representantes de negócios se reúnem para elaborar requisitos, perceber potenciais armadilhas e reduzir a chance de erros antes de começar a codificação. ATDD é escrito da perspectiva do usuário e responde à pergunta "O código está fazendo o que deve fazer?"
O primeiro passo no ATDD é reunir todas as partes envolvidas e realizar um workshop de especificação. Uma vez definidos e esclarecidos os requisitos no workshop, os testadores podem criar testes automatizados a partir dos critérios especificados. Os testadores de garantia de qualidade (QA) trabalham com os desenvolvedores a fim de implementar o primeiro teste e automatizá-lo. O ATDD também facilita a implementação de testes unitários.
ATDD formato de teste
Testes ATDD geralmente aderem ao seguinte formato:
Given: A setup, specified state.
And (optional): Setup continued.
When: Trigger, an action or event happens.
Then: Verification. State has changed or output is produced.
An example using the ATDD format:
Given: Movie listed on catalog of video streaming app.
And: User is a paid subscriber.
When: User selects movie to watch from app catalog.
Then: Movie is streamed for user.
Benefits of ATDD
ATDD brings everyone involved in development together to discuss the criteria around which an app is built. A clareza dos requisitos ajuda a reduzir o desperdício de esforços e compreender como uma empresa espera que as coisas funcionem pode reduzir a recodificação e os erros. ATDD pode muitas vezes ser benéfico para desenvolvedores que usam Agile.
Even nos casos em que os testes não são automatizados ou os testadores têm pouco conhecimento de codificação, ainda há valor no esclarecimento das condições e lógica do negócio. Todas as equipes podem se beneficiar da colaboração com especialistas em negócios e da discussão antecipada de como testar para que os requisitos necessários sejam preenchidos. O resultado final do ATDD é uma aplicação melhor e mais confiável.
ATDD vs. TDD
Enquanto o ATDD se concentra na colaboração e nos testes de funcionalidade para o usuário, o desenvolvimento orientado a testes (TDDD) segue mais uma abordagem focada no desenvolvedor. O TDD concentra-se em executar e automatizar testes unitários e é mais fácil de implementar. Tanto o ATDD quanto o TDD visam reduzir o código desnecessário e os recursos do desenvolvedor, enquanto criam requisitos e testes abrangentes continuamente para garantir que um produto atenda às expectativas do usuário.