Automação de testes é um dos assuntos importantes quando falamos de qualidade.
Existem muitos artigos, tutoriais e vídeos explicando como automatizar e a motivação para isso.
Mas sem uma estratégia bem definida e clara, a probabilidade destes testes serem abandonados é alta.
Neste artigo, vamos explorar uma estratégia simples, embora exija esforço, que pode ajudar você a decidir o que testar em um teste end-to-end.
Testes end-to-end#
Um dos componentes importantes de uma boa estratégia é saber qual o problema que ele resolve.
Ou seja, saber por que devemos escrever testes end-to-end ajuda a clarear a estratégia.
O teste end-to-end é um tipo de teste que exercita o seu sistema por completo ou sua maior parte integrada. E o ambiente de testes deve ser muito próximo ao ambiente de produção.
Então aqui vai a primeira dica de quando não escrever testes end-to-end
- Não está exercitando o sistema por completo ou a maior parte integrada
- O teste é realizado em um ambiente de teste muito diferente de produção
Para explicar estes pontos, vamos pensar um pouco na famosa pirâmide de testes:

De acordo com a pirâmide, não é interessante escrever muitos testes end-to-end pois:
- 💰São custosos. Precisamos manter um ambiente de teste e orquestra-la para subir o sistema por completo ou sua maior parte integrada.
- 🔍 A possibilidade de um falso-positivo é grande. O teste pode depender de rede, banco de dados, da aplicação subir corretamente, massa de dados apropriados e etc. Qualquer um destes pontos é um possível ponto de falha.
- 🤔 Quando falamos de microsserviços, surge o debate de quem é o responsável pelos testes.
Mas mesmo assim, é recomendado escrever alguns testes end-to-end. Então quais são as vantagens que um teste end-to-end tem que não tem nos testes dos níveis inferiores?
Vamos lembrar o foco de cada tipo de teste:

Ou seja, quando um teste end-to-end falhar, é porque alguma jornada ou um processo importante do usuário final ou cliente não está funcionando.
Para confirmar se uma jornada ou um processo importante não está funcionando corretamente, é fundamental ter um ambiente de testes que se aproxime do ambiente de produção.
É essencial simular a situação mais perto da realidade possível.
Além disso, os processos importantes em um sistema não costumam ser muitos.
Aqui estão alguns exemplos que justificam a escrita de testes end-to-end:
- 💳 Uma jornada para cadastrar o cartão de crédito para poder finalizar a compra
- 📦 Processo de separação dos itens do estoque para ser despachado
Então devemos escrever testes end-to-end que garantam que jornadas e processos importantes do usuário final sempre estejam funcionando!
A estratégia para testes end-to-end#
Sabemos agora que um bom teste end-to-end verifica jornadas ou processos importantes. Mas como definir o que é importante? Duas perguntas podem ajudar você a encontrar estas jornadas ou processos
❓Como sua empresa ou seu negócio ganha dinheiro?#
Cada aplicação/software de uma empresa gera dinheiro (ou valor) através de funcionalidades principais que são definidas por uma série de interações do usuário cada vez mais valiosas.
Esses itens serão sua maior prioridade para automação
❓Quais funcionalidades da sua aplicação estão sendo usadas?#
É provável que sua aplicação/software ofereça um conjunto de funcionalidades que vão além das funcionalidades encontradas na pergunta anterior.
E se você estiver baseando essas respostas em dados de uso (por exemplo, Google Analytics, etc.), elas estarão divididas entre as mais utilizadas e as menos utilizadas.
Ordene a prioridade dos testes de acordo com base na frequência de uso e veja quais valem ter testes end-to-end
Com estas duas perguntas, você deve ser capaz de montar uma lista de testes end-to-end que seriam legais de ser feito
Orientação da estratégia#
Outro componente de uma boa estratégia é a orientação. Principalmente quando falamos de testes end-to-end.
Escrever testes end-to-end não é a parte mais difícil e a mais custosa.
É o ambiente de teste.
Existem vários tutoriais e vídeos explicando como escrever testes. Mas independente da ferramenta, estas orientações devem ser seguidas:
- O ambiente de teste deve ser replicável em qualquer computador e servidor
- A replicação deve ser automatizada
- Para cada teste, o banco deve voltar para o estado inicial conhecido
- Cada teste é responsável por criar a massa de dados necessário para a execução do teste
- Massa de dados comuns a todos os testes deve estar presente no banco de dados antes da execução dos testes
- Se o teste end-to-end estiver complexo de escrever, devemos melhorar a testabilidade do software para facilitar a escrita do teste
- Deve ter um teste que valida o próprio ambiente de teste. (Ex: Verifica se o banco de dados subiu, se a massa de dados foi carregada com sucesso e etc)
Estas orientações são cruciais para facilitar a escrita de um teste e principalmente alterar um teste já escrito.
O maior problema de um teste end-to-end é quando ele falha. Como podemos ter falso-positivo, é crucial poder encontrar a causa da falha do teste o mais rápido possível.
Então, muitas das orientações acima existem para melhorar e acelerar o feedback sobre o teste e o ambiente de teste.
E percebam que para executar estas orientações exige uma habilidade maior do que só escrever testes. Exige um esforço da equipe, ou de várias equipes.
Se você ou sua equipe não consegue seguir estas orientações, provavelmente não vale a pena escrever testes end-to end, pois no início vai funcionar. Mas a longo prazo irão ficar abandonados e ignorados.
Ações da estratégia#
O último componente importante de uma estratégia são as ações concretas e coerentes.
Já sabemos o que testar e temos a orientação.
Um exemplo de um conjunto de ação seria:
- ❓ Realizar as perguntas com o gerente de produto
- ✅ Validar as respostas do gerente de produto com usuário final ou cliente
- 📝 Selecionar um teste para ser escrito em end-to-end
- ⚙️ Montar um ambiente de testes simples com a orientação definida acima
- 📂 Verificar se o ambiente de teste é replicável em todos os computadores da equipe
- 🌐 Verificar se o ambiente de teste mais próximo a ambiente de produção é replicável em um ambiente de integração contínua(CI)
- ✍️ Escrever o teste
- ✅ Verificar se roda em todos os computadores da equipe e também no ambiente de integração contínua(CI)
- 📊 Para cada novo teste, incrementar em passos pequenos o ambiente de testes em relação a massa de dados, relatório, logs e etc.
É só um exemplo! O ideal é você e sua equipe, entenderem o contexto atual e criarem sua própria lista de ações.
Mas tente pensar em ações que você veja o resultado em, no máximo, uma semana.
E depois de cada ação, veja o que aconteceu e ajuste as ações posteriores de acordo com o que foi descoberto.
Finalizando#
Uma boa estratégia de testes end-to-end irá garantir foco em o que testar.
Além disso, com orientações e ações concretas e coerentes, é possível implementar estes testes em passos pequenos, o que possibilita ganhar já algum benefício no início e ajuda também a pivotar a ideia a qualquer momento.
É fundamental aprender a utilizar ferramentas como Playwright, Cypress, entre outras. No entanto, saber quando usar essas ferramentas é o que realmente diferencia você e sua equipe!
Tomara que tenham curtido e obrigado por ter lido até aqui.
Qualquer dúvida, correção, sugestão, podem comentar à vontade.
Até a próxima!


