O post de hoje irá tratar sobre testes de aceitação (TDA), um dos tipos de testes usados para validar e verificar se o produto desenvolvido está de acordo com o que foi estabelecido nos requisitos. Esses testes são construídos a partir de situações de uso do sistema, estabelecendo valores de entrada, saída, tempo de resposta, etc. O objetivo do TDA é garantir que o sistema seja capaz de executar a funcionalidade acordada da forma desejada, e, consequentemente, garantir a qualidade do produto em desenvolvimento.
Os testes de aceitação envolvem testar uma funcionalidade do início ao fim, dando entradas para o sistema e observando o comportamento de saída. O resultado deve estar compatível com os requisitos do sistema em termos de tempo de resposta, validade do resultado, facilidade de uso e qualquer outro critério que o cliente tenha estabelecido.
É possível executar testes de aceitação de forma automatizada. Nós, utilizamos o JUnit e o Selenium para automatizar nossos testes. Dessa forma, a reprodução dos testes pode ser feita automaticamente, sem a necessidade de uma pessoa executar todos os passos manualmente a cada vez que tiver que retestar uma funcionalidade. Vale lembrar que, automatizados ou não, os testes de aceitação devem ser baseados em casos de testes elaborados pelo cliente, porque só o dono do negócio pode decidir se a funcionalidade está adequada para seu uso.
O TDA envolve um tipo de teste chamado "Teste de caixa preta", onde a importância do teste se encontra apenas no resultado obtido. Se o sistema apresentar a resposta esperada para uma determinada entrada, aquela parte do software pode ser considerada válida. É importante ressaltar que tão importante quanto testar a operação normal é testar também as situações em que o sistema deverá apresentar erro ou impedir uma ação do usuário. Se o produto responde corretamente a uma entrada válida não significa que ele irá responder negativamente a um valor incorreto. Cabe ao dono do negócio priorizar quais as operações que são mais importantes no sistema e quais as possibilidades de entrada que serão testadas.
Em métodos ágeis, utilizamos esse tipo de teste a cada porção de software funcionando entregue ao cliente. Dessa forma, podemos garantir que todas as funcionalidades entregues estão de acordo com a solicitação do cliente e o retrabalho é evitado. Uma vez que o desenvolvimento de uma User Story é finalizado, ela estará em pleno acordo com as funcionalidades que foram solicitadas.
Testar seu produto permite verificar e validar se o desenvolvimento do mesmo está convergindo para o idealizado pelo cliente. Quanto antes as divergências forem encontradas, mais barato é corrigi-las. O teste de aceitação é particularmente importante porque sua execução é feita na própria interface do software, validando o sistema para o cliente da maneira que ele será usado.