A qualidade do software é essencial para garantir a satisfação do cliente e a perenidade dos negócios. Uma maneira de engajar esse importante stakeholder, é assegurar que os produtos sejam feitos com precisão e previsibilidade, e uma forma de fazer isso é com a automação de teste.
A automação é uma das estratégias para tornar esse processo mais preciso, que usa ferramentas para reduzir o envolvimento humano em atividades manuais repetitivas. Com isso, é possível fazer testes com maior amplitude e profundidade.
Isso é particularmente útil em testes de regressão, quando uma ou mais funcionalidades são retestadas para identificar defeitos que possam ter sido introduzidos ao incluir novas funções. Quando a abordagem de teste é manual, é difícil para a equipe acompanhar a demanda.
Com a automação de testes, é possível fazer esse processo de forma contínua e, o melhor, com menor chance de erros. No post de hoje, apresentamos alguns dos maiores desafios da automação de testes. Venha com a gente!
1. Arquitetura de automação de teste
O primeiro grande desafio para a automação de teste é planejar a arquitetura que será utilizada antes de começar a codificá-los. Você acha que automatizar testes é interagir com a aplicação utilizando uma ferramenta de gravação e reprodução? Não é só isso.
Muitas aplicações, algumas vezes, são muito complexas e têm uma grande quantidade de telas e de regras de negócio. Para aplicações desse tipo, é preciso utilizar uma ferramenta mais robusta para que seja possível uma maior personalização do código de teste.
É isso que garante que os testes mais “específicos” sejam executados de forma mais eficiente do que na utilização de uma ferramenta de automação de record and play, por exemplo.
Interferência humana
A participação do ser humano na execução do teste automatizado deve ser mínima. É fundamental, portanto, que a escolha da ferramenta para um determinado projeto leve em conta o fato de que a execução de um teste automático deve ser rápida!
Hoje em dia, com a alta das aplicações web, a ferramenta Selenium é bastante utilizada para a automação de testes. Ela tem um conjunto de componentes úteis: a Selenium IDE (record e play), Selenium RC (Remote Control), Selenium Grid (concorrência de testes) e Selenium WebDriver (alta personalização de código).
A WebDriver é uma das ferramentas mais poderosas da Selenium e a mais utilizada pela Monitora, pois se trata de uma versão estendida da Selenium RC com inúmeras vantagens. Além disso, estende o suporte a vários navegadores e plataformas, ao contrário da Selenium IDE, e apoia vários drivers para aplicações web móveis.
2. Paradigmas de automação de testes
Existem várias abordagens para a automação de testes e eles são normalmente agrupados de acordo com a forma como interagem com a aplicação. Os dois tipos mais usados são os baseados na interface gráfica e os baseados na lógica de negócio. Saiba mais a seguir!
Interface gráfica
Os testes interagem diretamente com a interface gráfica da aplicação. Para isso, simula um usuário e grava suas ações para depois transformá-las em um script que pode ser reproduzido posteriormente.
Entre suas vantagens, estão o fato de não requerer modificações na aplicação para a criação dos testes automatizados e de não ser preciso tornar a aplicação mais fácil de testar. Por outro lado, exige que a interface gráfica seja bastante estável e tem baixo desempenho quando são necessárias muitas repetições.
Lógica de negócio
Neste caso, os testes automatizados não interagem com a interface gráfica. Essa alternativa se baseia no entendimento de que 80% das falhas estão associadas a erros na lógica de negócio.
Por isso, a maior vantagem é justamente o fato de o foco estar na camada em que há a maior probabilidade de haver erros. É a abordagem mais adequada quando há a necessidade de muitas repetições. Seu aspecto negativo é a necessidade de que sejam feitas grandes modificações na aplicação para que os testes sejam executados.
3. Custo da automação e manutenção dos testes
Ao longo dos anos, a automação de teste vem ganhando um papel importante na área de engenharia e qualidade de software, pois tem como objetivo diminuir o uso de mão de obra em testes que são executados frequentemente e de forma manual.
Assim, há a diminuição de custos e o aumento da velocidade do processo. A atividade de implementação da automação de teste geralmente é mais demorada na etapa inicial, onde os primeiros scripts são criados de acordo com os casos de testes descritos pela equipe de qualidade de software.
Deve-se ter muito cuidado na escolha da estrutura de pacotes e classes do projeto, das formas de acesso aos objetos e elementos das páginas que serão recuperados pela ferramenta de automação, das boas práticas de programação (como o uso de PageObject e do PageFactory) e da convenção de nomes.
O custo da automação de testes é maior nessa etapa — em conjunto com a implementação inicial —, pois é preciso estudar e planejar atentamente cada detalhe da estrutura do projeto para a codificação.
Se isso for feito isso de forma correta, os testes automatizados serão mais fáceis de manter, caso alguma propriedade venha ser alterada ou adicionada, e consequentemente o custo será menor tanto em tempo quanto em retrabalho.
Um ponto fundamental para utilizar todas as ferramentas da Selenium é a localização dos objetos nas páginas web. Com o uso do PageObject, os elementos são modelados e isolados entre os detalhes da página e a lógica dos testes. Além disso, o PageFactory instancia os objetos do PageObject antes que eles sejam utilizados pelos testes.
Um exemplo pode ser visto a seguir:
4. Profissionais qualificados
Para trabalhar com automação de teste é necessário saber programar? Sim, porém não é necessário ser um expert em programação. Existem ferramentas, assim como a Selenium, que suportam algumas linguagens de programação como Java, C#, Ruby, Python e Javascript (node), portanto não é necessário o conhecimento de várias linguagens.
Os requisitos mínimos para trabalhar na área é ter o conhecimento de orientação a objetos, controle de condições, controle de loops e tratamento de exceções. Como um plus, é importante que tenha conhecimento de algum framework de teste unitário da linguagem (se existir).
O profissional de automação de teste deve conhecer alguma linguagem de programação suportada pelas ferramentas de automação, as técnicas e estratégias de teste de software, as ferramentas de teste não funcionais, as soluções de integração contínua, a geração de arquivos de logs e os relatórios de execução e evidências de testes de forma automática.
Com a Monitora University, os profissionais têm a oportunidade de se aperfeiçoar ainda mais com cursos de automação de testes e de inglês — afinal, a conversação no idioma é necessária para contato com o cliente —, e também com a aprendizagem e troca de conhecimentos entre os colaboradores da equipe. Como consequência, há um melhor nivelamento dos profissionais na área de automação de testes.
5. Ambiente de teste
Outro desafio encontrado em automação de testes é o ambiente. Mais especificamente em testes de desempenho, de carga e de estresse, algumas diferenças podem ser encontradas no resultado quando eles são realizados antes da entrega à produção (validação) se comparados com os resultados após a entrega.
Isso acontece justamente por causa do ambiente e de limitação e/ou expansão de hardware entre os dois ambientes (o consumo de memória, por exemplo). Nem sempre os servidores têm a mesma capacidade de hardware para executar um teste de estresse, por exemplo — caso o ambiente (servidor) de teste seja um pouco/muito pior em relação ao hardware do que o servidor de produção.
Por isso, é preciso estar sempre ciente da configuração tecnológica dos servidores utilizados para cada ambiente antes de realizar os testes não funcionais. Tendo em vista que as configurações de hardware para o ambiente de teste são piores do que as do ambiente de produção do cliente da Monitora, essas informações devem ser levadas em consideração.
Assim, evita-se a criação de casos de testes automatizados irrelevantes, como, por exemplo, com um tempo de resposta esperado do servidor que é impossível de ser atingido, se tornando assim um caso de teste inválido.
6. A garantia da qualidade
O que garante a qualidade do desenvolvimento de software é a continuidade e a repetição dos testes. Assim, sempre que houver alterações, os testes devem ser refeitos — e devem abarcar todas as plataformas e configurações suportadas.
De forma manual, isso seria algo quase impossível, em razão da quantidade de tempo necessária para fazer o processo. Com a automação de testes, depois de criados, eles podem ser executados quantas vezes forem necessárias.
O teste automatizado não cansa de testar nem deixa de anotar os resultados obtidos — qualquer profissional, por mais dedicado que seja, tem seu limite físico. Os testadores, podem, então, se dedicar a tarefas mais estratégicas, seja desenvolvendo novos testes, seja lidando com problemas realmente complexos.
O desafio, porém, é desenvolver um script que realmente seja capaz de testar as aplicações das formas mais completas possíveis. Isso, além de garantir a qualidade do produto final, ajuda a reduzir custos de forma bastante efetiva.
Cobertura dos testes
Esse aspecto é importante também quando é considerada a profundidade dos testes. Só assim será possível executar milhares de casos diferentes e complementares de forma a avaliar a aplicação em sua completude.
Em outras palavras, a automação de testes faz o que os processos manuais não podem fazer. Não existe no mundo uma estrutura de testes manual capaz de simular a atuação de milhares de usuários, por exemplo. Já uma automação bem feita pode fazer isso facilmente.
Outra grande vantagem é que os desenvolvedores podem encontrar falhas antes mesmo de enviar o produto para o controle de qualidade. Basta, para isso, programar os testes para serem executados a cada mudança de código e informarem a equipe caso haja defeitos. Além de agilizar a resolução de problemas, ajuda a melhorar as habilidades da equipe.
7. Expectativa de que o retorno de investimento em automação seja de curto prazo
Os testes candidatos a serem automatizados sempre devem ser aqueles que são executados frequentemente, ou seja, a cada nova versão de sistema que é desenvolvida, ele é testado.
É o caso dos testes de regressão, de funcionalidades críticas do software e com cálculos matemáticos complexos. A partir disso, deve ser feito um planejamento com os testes candidatos e suas respectivas prioridades para automação.
Desde a primeira fase de implementação dos testes, de acordo com as descrições dos casos de teste e de seus respectivos passos até a sua primeira execução, de fato, pode levar um tempo maior nessa etapa, talvez pela sua maior complexidade.
A médio e longo prazos, o retorno sobre o investimento (Return On Investiment — ROI) deve acontecer, pois com toda certeza os testes automatizados irão executar muito mais rápidos do que os testes manuais. Isso naturalmente diminuindo o custo, o tempo e o retrabalho desses testes a cada versão desenvolvida e ainda garante a qualidade de software.
Mercado
A automação de testes no mercado de trabalho está em alta graças aos benefícios que ela traz. Entre eles estão a diminuição do tempo de execução de testes muito repetitivos e trabalhosos, e o ROI ao longo do tempo.
Na Monitora, essa área — e a respectiva equipe — tem crescido cada vez mais. Os profissionais têm trabalhado bastante na automação de microsserviços (uma arquitetura relativamente nova no mercado), sistemas web e para dispositivos móveis, tanto para sistemas operacionais iOS quanto para Android.
A quantidade de casos de testes automatizados também aumentou, apesar de haver muitos projetos em que a automação de teste ainda precise ser implementada. Estão em uso, inclusive, testes de regressão automatizados para alguns sistemas.
Um dos sistemas com testes automatizados usado na Monitora leva 90 minutos para executar (via integração contínua com jobs agendados) cerca de 40 testes. Se isso fosse feito de forma manual, por uma única pessoa, demoraria em torno de quatro dias. E o melhor: ao final, todos os resultados (de todos os passos e de todos os casos) são exportados para a ferramenta de gerenciamento automaticamente.
Animado com este tema? Assine nossa newsletter e saiba das novidades da área de automação de teste sempre em primeira mão!
Com colaboração de Thiago Gaspar Levin, Analista de Automação de Testes – MonitoraTec