Índice
- Introdução
2.1 Estratégia de Teste
2.2 Como Definir uma Estratégia de Teste
- Projetando uma Estratégia de Automação de Teste
3.1 Tenha um Plano
3.2 Capacidade do Time
3.3 O processo
- Criando uma Cultura para Automação de Teste Bem Sucedida
4.1 Comunicação
- Desenvolvendo para Automação de Teste
5.1 Pirâmide de Automação de Teste
5.2 Code Seams
5.3 Seletores de Elementos de UI
5.4 Ferramentas para Automação de Teste
5.5 Coisas para considerar no seu Projeto de Automação de Teste
- Preparando seus Esforços de Automação de Teste para o Futuro
6.1 Execute os Testes em Paralelo
6.2 Evite Colisão de Teste
6.3 Clean Code
6.4 Reusabilidade e Manutenibilidade de Código
- Escalando sua Automação de Teste
7.1 Coisas a Considerar
1. Agradecimentos
- Esse guia foi feito com base no curso “Setting a Foundation for Successful Test Automation” por Angie Jones.
- Curso disponível na “Testing Automation University”.
2. Introdução
2.1 Estratégia de Teste
A maioria das pessoas começa um projeto de automação criando uma POC (Prova de Conceito) quando na verdade deveriam em primeiro lugar criar uma estratégia de teste.
Estratégia > Prova de Conceito.
2.2 Como Definir uma Estratégia de Teste
- Defina um objetivo e uma estratégia de automação de testes que atenda as necessidades do seu negócio.
- Cultive uma cultura dentro da sua organização.
- Escolhe as ferramentas certas.
- Otimize e escale seu projeto de automação.
- Quantifique o ROI (Retorno Sobre Investimento) e compartilhe os valores da sua automação de teste com sua organização.
3. Projetando uma Estratégia de Automação de Teste
3.1 Tenha um Plano
Antes de começar a automação você irá precisar de um plano, ele pode ser definido através de testes de aceitação, scenarios gherkin ou casos de teste.
3.2 Capacidade do Time
Não se engane, o software de automação de teste é um projeto de desenvolvimento de software a parte.
Já que os desenvolvedores de software estão programando novas funcionalidades e os testadores manuais estão testando-as, cabe ao engenheiro de automação de testes trabalhar com desenvolvedores e testadores para incluir a automação na capacidade do time.
3.3 O processo
O trabalho do engenheiro de automação de testes envolve os passos abaixo.
- Escrevendo scripts.
Para o seu projeto de automação você pode escolher uma ferramenta com uma linguagem de programação ou você pode utilizar uma que é “codeless”.
Também é importante desenvolver padrões e convenções para a futura inclusão de mais pessoas no projeto tornando-o mais preparado para o futuro.
- Meça a maturidade do seu projeto de automação de testes.
Dependendo da maturidade do projeto de automação de testes os testes podem ser executados localmente ou em uma “build” CI privada que não é exposta a outras pessoas, então mova para uma “job” CI separada que é visível para todos, mas que ainda não afete os “check-ins” do desenvolvedor.
Uma vez que você tenha confiança o suficiente no seu projeto de automação, adicione-o no processo de desenvolvimento CI.
- Monitore resultados.
Testes não monitorados são testes não confiáveis e sem que o seu time confie nos testes eles vão depender menos deles, levando o projeto de automação à morte.
- Atualize os resultados.
Idealmente qualquer teste irá falhar devido às alterações feitas pelos desenvolvedores e portanto eles podem corrigir o código deles.
Também será necessário atualizar os testes à medida que o comportamento da aplicação é alterado, se novas funcionalidades forem adicionadas você irá precisar escrever novos testes para serem implementados e mantidos.
Obs.: Realizar o “check-in” do código significa subir o código para a “branch” principal do repositório para que o administrador possa revisá-lo e finalmente atualizar a versão do projeto.
4. Criando uma Cultura para Automação de Teste Bem Sucedida
4.1 Comunicação
A automação de testes é mais bem sucedida quando existe colaboração entre os membros do time, os “product owners”, “business analysts”, desenvolvedores, testadores e engenheiros de automação.
A melhor abordagem para convencer o time sobre automação de testes é comunicar o objetivo, estratégia e oportunidades para colaboração.
O time de produto pode fornecer informação sobre quais cenários são os melhores para automação.
Os engenheiros de automação e os testadores podem auxiliar um ao outro já que testes automatizados não substituem os testes manuais, os testadores são necessários para explorar a aplicação sendo os que irão descobrir os bugs mais custosos.
5. Desenvolvendo para Automação de Teste
5.1 Pirâmide de Automação de Teste
Testes Unitários.
- Implementação mais rápida.
- Testes unitários são os testes mais próximos do código de produção.
- Pode identificar bugs na função exata em que aconteceu.
- O maior número de testes automatizados deve ser aqui.
- Deve ficar dentro do projeto e ser escrito na mesma linguagem de programação que o projeto.
Testes de Serviço.
- Testar a funcionalidade do código sem uma UI.
- Testes de API, precisa ser capaz de executar chamadas HTTP e ler os “responses”.
- O segundo maior número de testes deve ser aqui.
Testes UI.
- Mais tempo para escrever e executar.
- Mais custoso.
- O menor número de automação de testes deve ser aqui.
- Precisa de uma biblioteca de navegação para que você interaja com elementos HTML.
5.2 Code Seams
“Code seams” são atalhos na aplicação que fazem a automação ser mais fácil.
Por exemplo, imagine que você precise de automatizar o teste da compra de um produto, pela UI seria necessário três etapas:
- Selecione o produto.
- Adicione o produto no carrinho.
- Clique no botão comprar.
Dado que você queira apenas testar a funcionalidade da etapa 3, e acontece das etapas 1 e 2 possuírem um bug causando a quebra de todo o teste tornando-o “flaky”.
Com um “code seams” você poderia contornar a UI, enviar chamadas HTTP rápidas, acessar a etapa 3 diretamente e depois testar apenas a funcionalidade desejada.
Obs.: “Code seams” adicionais podem ser fornecidos pelos desenvolvedores para que você acesse a UI pela camada de serviço.
5.3 Seletores de Elementos de UI
No nível da UI o projeto de automação de testes interage com elementos HTML.
É importante que o desenvolvedor adicione identificadores para esses elementos tais como ID e os nomes dos atributos.
Lembre e guie os desenvolvedores front-end para adicionarem esses atributos.
5.4 Ferramentas para Automação de Teste
O mínimo necessário para um projeto de automação é uma ferramenta de interação (Selenium, Appium) e uma ferramenta de validação (TestNG, JUnit).
Certifique-se que as ferramentas que você está utilizando suporte os navegadores e os dispositivos que você precisa para executar a sua automação.
5.5 Coisas para considerar no seu Projeto de Automação de Teste
- Você pode adicionar uma biblioteca de relatórios que exiba capturas de tela e/ou vídeos.
- Você pode integrar no seu projeto de automação arquivos de cenário gherkin caso o seu time esteja praticando o BDD (Behavior Driven Development).
- Você também pode adicionar ferramentas para adicionar o seu projeto de automação em uma CI.
6. Preparando seus Esforços de Automação de Teste para o Futuro
6.1 Execute os Testes em Paralelo
Projete todos os seus testes para serem independentes.
Evite alterar dados de teste que outro teste possa utilizar.
6.2 Evite Colisão de Testes
Caso um teste tente alterar os dados enquanto outro teste tenta utilizá-los (por exemplo quando um teste altera a senha e outro teste tenta fazer login), o segundo teste irá falhar.
Para evitar isso, faça com que os testes que necessitam de alterar os dados sejam os únicos testes usando-os.
6.3 Clean Code
Evite:
- Duplicação excessiva de código.
- Classes e métodos longos.
- Esperas ineficientes dentro dos testes.
6.4 Reusabilidade e Manutenibilidade de Código
Utilize “design patterns” no seu projeto:
- Page object model.
- Screenplay.
- Fluent.
- Builder.
- Singleton.
- Factory.
- Facade.
7. Escalando sua Automação de Teste
Leve em consideração que múltiplos ambientes possuem diferentes informações tais como:
Endereços IP, URL, credenciais de login e informações de banco de dados.
Por esse motivo, o melhor é extrair esse tipo de informação do seu projeto de automação e utilizar arquivos de propriedades (properties files).
Conteinerização ajuda a mitigar parte desse problema.
7.1 Coisas a Considerar
- Múltiplos Navegadores (Escolha de acordo com as necessidades do seu negócio).
- Múltiplos Dispositivos (Android, iOS).
8. Medindo o Valor da sua Automação de Teste
- Identifique as expectativas cedo e comunique-as ao seu time.
- Meça quanto tempo leva para o teste de regressão executar.
- Feedback rápido e frequente, eventualmente a automação deve ser capaz de ser executada toda vez que um desenvolvedor realizar o “check-in” do código, entregando feedback rápido.
- Monitore o nível de confiança do time nos testes automatizados, questione-os nas retros.
- Escalabilidade é a habilidade de escalar testes automatizados para executá-los em diferentes ambientes, navegadores e dispositivos.
9. Conclusão
Um projeto de automação de testes não é um projeto paralelo, é um projeto de desenvolvimento de software.
Coisas a serem consideradas antes de iniciar a sua iniciativa de automação de testes:
- Defina um objetivo e estratégia.
- Cultura, garanta que a sua empresa apoie essa estratégia.
- Escolha as ferramentas adequadas para automatizar.
- Escale a sua automação de testes além de executá-las localmente.
- Defina expectativas realistas sobre o ROI (Retorno Sobre Investimento).
Fim.