Escolhendo uma ferramenta de automação de testes para seu projeto
De acordo com a pesquisa levantada pela InfoWorld, cerca de 72% das empresas de desenvolvimento de software estão trabalhando com testes automatizados, 76% adotaram metodologias ágeis e 55% utilizam práticas de DevOps.
Com esse cenário em vista, é possível afirmar que, eventualmente, um time de desenvolvimento irá se deparar com um momento em que deve decidir qual ferramenta de testes deve utilizar para automatizar em seu projeto.
Alguns acreditam que deve ser a ferramenta mais popular atualmente. Outros, a que já têm conhecimento prévio. Existem até mesmo aqueles que evitam a todo custo aprender programação e partem para as ferramentas visuais ou de alta abstração.
Mas qual o seria correto? Qual a melhor ferramenta de testes automatizados para o meu projeto?
Depende! Não existe uma bala de prata que irá resolver todos os seus problemas e se adequar perfeitamente ao projeto logo de cara.
Existem perguntas que precisam ser respondidas na hora de tomar essa decisão. Para facilitar, vou listar e explicar algumas delas, a fim de ajudar você a encontrar a resposta.
Qual objetivo vocês querem atingir a curto prazo?
Automatizar todos os casos de teste de um projeto grande, com apenas uma pessoa e sem alocar tempo na sprint, é impraticável. Você precisa se perguntar, com base na sua realidade, qual é o primeiro objetivo que deseja atingir.
Pode ser o caminho feliz do usuário, somente as features principais ou cobrir a cada sprint todas as entregas do time. O importante é ter um objetivo traçado, saber quais são os próximos passos e se será possível atingi-lo.
Quem irá atuar na automação de testes e quanto tempo dessas pessoas será dedicado?
Você irá automatizar sozinho? Apenas os QAs? Ou os desenvolvedores participarão também? Quanto tempo será dedicado a cada sprint para o desenvolvimento dos testes?
Essas respostas nos ajudam a limitar as possibilidades de ferramentas com base em dois fatores: nível de conhecimento e tempo disponível para aprendizado.
Um projeto em andamento, com prazos curtíssimos, dificilmente terá tempo livre o suficiente para que todos possam estudar, criar uma prova de conceito e depois aplicar a ferramenta no projeto.
Nesse caso, o melhor pode ser optar por um framework que já seja conhecido pela maioria e que utilize a mesma linguagem de programação do código fonte.
Dessa forma, é reduzida a curva de aprendizado necessária para começar a automatizar e minimizam-se os problemas que podem aparecer ao integrar a execução dos testes no processo de CI/CD do projeto.
Por outro lado, se o seu projeto estiver no início e todos tiverem tempo suficiente para estudar e analisar com calma, talvez esse seja o melhor momento de avaliar novos frameworks recomendados pela comunidade.
Para fazer isso, vocês podem criar dois ou três pequenos projetos como provas de conceito, levantar vantagens e desvantagens, e por fim, tomarem juntos a decisão de qual ferramenta devem seguir.
E qual o objetivo a longo prazo?
Da mesma forma em que inicialmente foi estabelecido um objetivo a curto prazo, é preciso pensar no futuro. Projetos de software tendem a crescer, evoluir e com isso, ter um aumento significativo em sua complexidade.
Ter um objetivo a longo prazo, ajuda a planejar para que as suítes de testes automatizados cresçam e evoluam, assim como o projeto, e que sejam escaláveis e de fácil manutenção.
Vamos supor que você está em um time que irá desenvolver uma plataforma Web para vendas de carros. Entre os requisitos, está a necessidade de suportar o uso em três diferentes browsers: Chrome, Firefox e Safari.
À medida que o número de testes for aumentando, consequentemente, o tempo de execução irá também. Com isso, passa a ser interessante o uso de paralelização a fim de reduzi-lo. Ou seja, você poderá executar os mesmos testes, em browsers diferentes, de forma paralela.
Esse é um exemplo de objetivo a longo prazo. Não precisa ser extremamente consolidado, até porque, como costumava dizer um de meus professores na faculdade:
Se existe uma certeza na Engenharia de Software, é que os requisitos vão mudar.
Desde que você saiba que pretende paralelizar os testes no futuro para execução em diferentes browsers, você saberá que deve buscar uma ferramenta que auxilie nisso.
Conclusão
Volto a dizer, o contexto de cada projeto é diferente, então busque, além de utilizar as perguntas desse post como referência, se perguntar quais outras necessidades irão ajudá-lo a decidir a ferramenta que é melhor para a sua equipe.
Lembre-se de envolver outros membros, como QAs, desenvolvedores, Product Owner e Scrum Master na decisão final. Escolher uma ferramenta é uma coisa, aplicá-la no dia a dia, é outra. Por isso, é necessário o apoio do time, visando o atingimento dos objetivos e o desenvolvimento dos testes da melhor forma possível.
Recomendo o curso grátis Setting a Foundation for Successful Test Automation de Angie Jones, pela Test Automation University, pois lá o assunto que iniciamos aqui é ainda mais desenvolvido, com a adição de várias outras informações que auxiliam em uma boa fundação dos testes automatizados.
Referências
Test automation comes of age, por Ryan Yackel
Setting a Foundation for Successful Test Automation, por Angie Jones