Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

O que são testes de aceitação automatizados?

Penso que testes de aceitação mostrados aqui antes do desenvolvimento se referem a testes realizados pelo desenvolvedor para avaliar a viabilidade do desenvolvimento do software. Não consigo entender como poderia ser automatizado.

3 respostas
solução!

Olá Elias,

quando falamos de teste de aceitação estamos falando de um teste automatizado da ótica do usuário do sistema. Muitas das ferramentas de teste de aceitação trabalham diretamente com a interface, interagindo com a tela como se fosse o próprio usuário mexendo nela. Isso evita que na sua empresa você tenha que ficar investindo naqueles testes de mesa com pessoas/usuários de verdade, dado que agora a máquina fará este trabalho. Uma ferramenta famosa que você pode olhar que faz isso é o Selenium.

Por exemplo, se eu estou trabalhando em um sistema web que é uma livraria, um teste de aceitação que poderia ter no meu código seria subir um servidor de teste do projeto, abrir um navegador, acessar a tela de admin para fazer login, acessar a página de cadastro de livros, preencher os campos textos, clicar no botão cadastrar, fazer o logout como admin, acessar a home da livraria e verificar se o livro cadastrado pelo admin aparece para os clientes da loja comprarem.

Quanto a ideia de fazer o teste de aceitação antes do desenvolvimento, isto segue uma técnica chamada BDD (Behavior-driven development). Seguindo essa técnica, você primeiro dá um foco em criar um teste de aceitação que te forçará a pensar em como será o fluxo do comportamento do seu usuário, sem se preocupar com o código das lógicas de fato. Sabendo o passo a passo do que seu usuário será capaz de fazer, ai sim você começa a implementar a lógica (front e back end) que farão o teste de aceitação passar. E como você já estruturou no teste de aceitação todo o processo que o usuário precisará, em teoria isto te auxilia a implementar apenas o que é realmente necessário na sua lógica. Fora que você terá um teste que garante que o sistema como um todo funciona.

Qual a diferença entre BDD e TDD (Behavior-driven development x Test-driven development) ?

O TDD é focado especificamente na lógica/código que será implementado. Então você escreve testes de unidade ou de integração primeiro, escreve o código que faz o teste passar e depois refatora se surgir a necessidade.

Já o BDD é focado no comportamento do usuário. Então você escreve primeiro um teste que simula como será a iteração do usuário com o sistema. Por exemplo, como ele navegará pelas páginas, de que forma ele preenche os formulários e quais informações deveriam aparecer numa tabela de um relatório. Para fazer este teste passar, ai sim você faz vários ciclos de TDD para implementar cada uma das lógicas internas do sistema que, em conjunto, produzem este comportamento do usuário.

Neste link tem uma imagem com o clico do BDD e do TDD.