fbpx
Escolha uma Página

Porquê automatizar?

Como qualquer parte de um projeto de teste (ou de software, em geral) para que se obtenha sucesso na automação dos testes é necessário planejamento.

Nesse sentido, é necessário decidir qual o melhor momento para incluí-la, juntamente com outros fatores como quais ferramentas serão utilizadas para tal, quais níveis (fases) de teste ela cobrirá, com quais técnicas (caixa preta, caixa branca, mutação, exploratóŕio) e quem os conduzirá.

Automatizar o teste de software significa muito mais que utilizar de ferramentas específicas de automação. E é claro que as ferramentas irão auxiliar a:

  • controlar bem a execução dos testes;
  • gerar e inserir dados;
  • comparar os resultados obtidos com os esperados;
  • gerar relatórios baseados em métricas definidas;
  • realizar os testes automaticamente em cada deployment (ou “deploy”).

Os motivos para essa automação são vários, dentre eles destacam-se alguns:

  • atender a pressão de mercado por entregas mais rápidas;
  • necessidade de maiores taxas de cobertura;
  • software como fator estratégico para sucesso das empresas;
  • recursos escassos, variantes;
  • “pequenas modificações” geram grandes taxas de reteste.

A automação pode ser inserida em praticamente todas as fases do processo de teste, desde unidade, passando por integração, sistema e até regressão. Em cada nível de teste existem diferentes responsáveis por essa automação.

Quando automatizar?

Que legal! se a automação pode ser inserida em qualquer fase do projeto, então vamos automatizar todos os testes e resolver os nossos problemas de cronograma e orçamento! Não é bem assim. 

Ao contrário do senso comum, nem sempre a automação é a resposta para apertos no orçamento ou tempo. Primeiro, é natural que para se utilizar de automação, a equipe tenha um certo grau de conforto tanto com as ferramentas tanto com o produto sob teste, e isso leva tempo. Também, para desenvolver e configurar automações tempo é gasto, e quase sempre não é uma tarefa rápida. Segundo, se o orçamento é apertado, e a equipe não possui expertise em automação, dificilmente bons resultados serão obtidos. 

Caso a equipe possua os conhecimentos necessários, para em pouco tempo incluir automação nos testes  (o que quase sempre acarreta em gastar pouco a mais do orçamento) é possível ganhar em qualidade do produto ao incluir automação. Do contrário, pouco provável.  

Em vias gerais, para automatizar é necessário verificar se com automação haverá ganhos para o projeto. Se haverá economia de tempo e esforço dos analistas de teste (o que influencia na entrega como um todo); se a qualidade do produto será melhorada com isso (com a automação é possível se testar mais casos, aumentando a cobertura); se os testes serão reutilizados; etc. Se não houverem ganhos reais a serem obtidos com a automatização, dificilmente você conseguirá explicar para os diretores/gerentes/clientes porque o orçamento e tempo foram gastos com isso. 

Pontos a se observar para a automatização dos testes

Para incluir automação de testes em algum projeto sugiro que se observem alguns pontos: 

1. A equipe tem um certo grau de conhecimento sobre as ferramentas, técnicas, linguagens que serão utilizadas?

Caso seja o primeiro projeto em que a equipe utilizará automação, tempo a mais para essa automatização será necessário, uma vez que será a partir desse projeto que a equipe começará a ter noções de tempo, dificuldades, etc.  Além do tempo a mais de aprendizado, que cada membro da equipe terá. 

2. O cronograma e o orçamento do projeto são extremamente apertados?

Caso o cronograma e o orçamento do projeto sejam muito apertados, só vale a pena automatizar caso o primeiro item dessa lista de observações seja respeitado. Se a equipe ainda não possui expertise, provavelmente não é uma boa ideia começar a automatizar em um projeto restrições nos recursos. Pelo menos não como um todo. Mas é possível começar por pequenas partes, que são possíveis de serem feitas mesmo nessa “correria”. 

3. O produto possui requisitos com certo grau de estabilidade?

O cliente quase nunca sabe o que quer com certeza,  ou pode ter vontades voláteis Vivemos em um mundo de constantes mudanças. Assim, dificilmente os requisitos estarão fechados. No entanto, em um determinado momento do projeto, eles começam a ser relativamente estáveis. E é a partir daí que se pode desenvolver automações para os testes. Gastar recursos para desenvolver automações para funções que certamente serão mudadas é desperdício de esforço e tempo. 

4. Tarefas repetitivas.

Sempre existe aquele fluxo que a gente tem que passar zilhões de vezes para garantir que está tudo certo (softwares que lidam com financeiro ou sessões críticas tem muito isso).  Como esses fluxos tendem a ser mais estáveis, são grandes candidatos a automação e podem se beneficiar muito (em termos de profundidade e cobertura) da automação. Além de ampliar a qualidade, diminui o cansaço do testador em realizar diversas vezes a mesma coisa. 

Automação e teste de carga

Além dos pontos comentados anteriormente, alguns tipos de teste seriam praticamente impossíveis de serem executados se não houvessem a automação, técnicas e ferramentas específicas para os tornar possíveis. O teste de carga é um desses tipos de teste. 

O objetivo do teste de carga é verificar a quantidade de usuários/requisições/solicitações um produto consegue atender simultaneamente (ou seja, qual a carga esse produto consegue suportar). Assim é possível se ter uma noção de como a aplicação se comportará quando houver vários usuários utilizando-a ao mesmo tempo, e como isso, tomar decisões quanto a alocação de recursos para tal.

Como se trata de um teste no qual é necessário a simulação do acesso de várias pessoas, nada mais natural que a necessidade de uma ferramenta para tal simulação. Sendo assim, a escolha de uma ferramenta é um fator essencial para o teste de carga.

A escolha da ferramenta depende de qual fase de teste o teste será aplicado. Muito provável que esse teste será aplicado na fase de sistema, quando o produto já estiver com a funcionalidade pronta para ser apresentada ao usuário.

Esse tipo de teste é extremamente importante para grandes aplicações que recebem imensos volumes de acesso em determinados períodos, por exemplo: sites onde são divulgados resultados de concursos; sites de notícias; sistema da receita federal; sistemas de vendas de ingressos para shows.  

Concluindo

A automação de testes pode sim contribuir para o desenvolvimento de produtos com maior qualidade, por meio da ampliação da profundidade e cobertura dos testes e diminuição do esforço gasto. Porém, para que seja utilizada, alguns pontos devem ser observados. 

Sugestões de Ferramentas Gratis para Automação

Se você é um profissional de teste, certamente já ouviu falar do Selenium para automação de teste em navegadores. Particularmente eu o acho bem versátil e poderoso, principalmente quando utilizado com alguma linguagem de programação (gosto muito de java =}).  Ele possui duas versões:

  • IDE: é um plugin que se instala no navegador. Possui o funcionamento mais simples, e é o mais indicado se você está começando agora comSelenium. Funciona como “capture/replay”, ou seja, gravando e executando ações que se quer;
  • WebDriver: um pacote java (JAR) com as funções mais elaboradas. Utilizando essa versão você terá maior versatilidade e poder de teste. Pelo fato de se poder utilizar uma linguagem de programação para criar os testes, é possível fazer bastante coisa com essa versão. Para agilizar, você pode gravar partes do fluxo com o IDE e exportar para a linguagem que deseja utilizar.

Além do Selenium, existe o Jmeter que pode ser utilizado para testes funcionais também, mas que proporciona um maior poder de teste para testes de carga/estresse. 

Outras ferramentas super importantes para automação são Capybara, Rspec