Ir para o conteúdo

Automatizar testes de software é uma tarefa comum dentro de times de desenvolvimento. A grande maioria dos projetos já adotou, ou planeja adotar, essa atividade como parte do processo de qualidade da organização, visto que existem muitos ganhos em relação à utilização desse recurso. É trivial encontrarmos muitos artigos que fazem referência ao tema e que abordam diferentes formas de tornar a automação algo real no seu projeto com distintas linguagens de programação e frameworks. Contudo, é bem mais difícil encontrarmos, de forma direcionada, o que realmente precisa ser feito antes de colocar a mão na massa para que o sucesso e a alta expectativa da automação não se transformem em fracasso e frustração.

O planejamento da automação de testes é de suma importância, assim como em qualquer coisa da nossa rotina profissional ou pessoal. Ou seja, se não planejarmos de forma estratégica com objetivos traçados e com metas alcançáveis, infelizmente, haverá uma grande possibilidade da automação naufragar em algum momento do projeto.

O sucesso da automação depende de um bom planejamento – Imagem retirada do Google imagens

O primeiro passo para realizar um bom planejamento é definirmos qual tipo de automação vai ser realizada. A automação pode, por exemplo, ser feita com foco em serviços, na interface da aplicação ou de forma regressiva. É importante sabermos o que automatizar para conseguirmos direcionar o esforço para um nível de teste automatizado que agregará, efetivamente, valor ao projeto e ao cliente. Além disso, é necessário avaliarmos qual plataforma vai ser priorizada, pois em um determinado projeto, podem haver, por exemplo, demandas que estão direcionadas tanto para backend, quanto para frontend e estarem divididas entre aplicativos, sites e outras aplicações. Um recurso que pode ajudar na tomada de decisão nessa etapa é a nossa boa e velha pirâmide de testes, você lembra?

Para quem não lembra, ela, basicamente, aborda de uma forma visual e simplificada quais tipos e níveis de testes devemos realizar, considerando que, quanto mais na base da pirâmide estivermos, mais agregará valor e segurança. Em outras palavras, através dela podemos nos guiar para elencarmos dentro do nosso contexto o que poderá ser automatizado em um primeiro momento.

Pirâmide de testes de software – Imagem retirada do Google imagens

Outro ponto que deve ter atenção no planejamento é definirmos quais cenários serão automatizados. Nesse contexto, é importante refletir sobre os cenários de testes já escritos e aprovados anteriormente pela área de negócio, pois eles já são cenários consolidados e maduros, ou seja, já estão aptos para automatizarmos, portanto, vão agregar um valor muito grande ao projeto. Vale o destaque para que a escrita dos cenários de testes e técnicas utilizadas sejam padronizadas e de conhecimento de todo o time, visto que em muitos projetos quem escreve os cenários não necessariamente os automatizará. Após isso, é muito importante definirmos quais deles possuem maior prioridade, criticidade ou severidade de acordo com a área de negócio. Essa definição pode ser feita através de uma planilha de enquadramento, por exemplo. Nessa planilha, conseguimos fazer o mapeamento dos cenários de uma forma bem visual, onde identificamos quais deles são mais críticos e importantes à área de negócio. Desta forma, ocorre um “alinhamento” em relação aos cenários que devem ser automatizados primeiro e quais podem ficar no backlog da automação. Seguindo esse caminho, o planejamento está sendo direcionado para realizar uma cobertura de testes automatizados que foquem nos fluxos críticos do produto e que, caso falhem, a automação possa antecipar e sinalizar o possível problema o quanto antes, trazendo agilidade ao processo.

Uma outra forma de realizarmos um planejamento de sucesso é sabermos qual a melhor ferramenta para o projeto a ser automatizado, pois a má utilização dela ou o próprio desenvolvimento de código podem resultar em uma manutenção rotineira elevada. É crucial avaliarmos com o time qual a linguagem de programação utilizada no projeto para que seja possível a colaboração de todos que estejam interessados na codificação da automação. O analista de testes não é o único responsável pela automação, contudo, normalmente a iniciativa parte do mesmo em relação a incentivar a cultura de automação dentro do time. É primordial também analisarmos o perfil adequado para compor a equipe, pois em caso negativo é provável que ocorram impactos no progresso da automação dos cenários de testes, bem como no tempo e no custo planejado.

Exemplos de algumas das inúmeras ferramentas disponíveis para automação de testes – Imagem elaborada pelo autor

Esse tipo de situação ocorrendo, pode impactar de forma negativa, visto que o projeto poderá até ficar “congelado” por não haver uma pessoa qualificada para realizar as tarefas necessárias, ou poderá atrasar de forma demasiada também, resultando até mesmo em frustração, expectativas não atingidas e desmotivação para todos os envolvidos. É por isso que precisamos realizar um alinhamento de expectativas que seja totalmente realista junto ao cliente e ao time, sendo transparente quanto aos frutos que poderão ser colhidos a curto, médio e longo prazo e também sobre os possíveis riscos e obstáculos que mapeamos.

É necessário a atenção quanto a qualidade do código, bem como planejar quais padrões serão utilizados, porque se não for bem codificado o teste automatizado, poderemos ter cenários de testes que falharão na automação, porém ao executar manualmente, o teste não falhará. Ou seja, será um “bug” gerado pela automação e que, por consequência, vai ser investigado e analisado por algum profissional, gerando esforço em uma atividade que não é necessária, tampouco prevista. Para sanar esse tipo de problemática, uma das melhores soluções para prevenção já é bastante conhecida por todos: O Pair Programming. Através dessa técnica, podemos ter uma maior garantia da qualidade do código automatizado, além de ser um momento enriquecedor para troca de conhecimento.

Pair Programming é apenas uma das formas de garantir qualidade de código – Imagem retirada do Google imagens

Inclusive, podemos utilizar ferramentas de apoio direcionadas a esse propósito, como por exemplo, o SonarQube. Ou então, caso o contexto permita, podemos adotar o ATDD (Acceptance Test-Driven Development ou “Desenvolvimento Orientado a Testes de Aceitação”, em Português) como forma de desenvolvimento da automação aproximando time de desenvolvimento com a área de negócio.

Ciclo do ATDD – Imagem retirada do artigo “Acceptance Test-Driven Development(ATDD), passo a passo” de Paulo Rebelo (https://www.infoq.com/br/articles/atdd-passo-a-passo/)

Tendo em vista os argumentos apresentados, podemos concluir que sem o planejamento prévio da etapa de automação de testes, provavelmente, em algum momento do projeto, a automação poderá não atender as necessidades dos envolvidos e, principalmente, de negócio. A chave para o sucesso é o planejamento focado na priorização de quais cenários precisamos automatizar num primeiro nível, analisar as ferramentas disponíveis que dispomos e entendermos como podemos aproveitá-las da melhor forma no contexto do projeto, realizar a análise dos riscos existentes, considerar a equipe técnica que temos, balizar as expectativas e fazer medições através de métricas de qualidade. Seguindo esses passos, certamente, estaremos muito mais seguros em relação ao trabalho a ser realizado e, muito provavelmente, rumando em direção ao sucesso da automação. 

Outras publicações