Automação de testes: objetivos, abordagens, vantagens, desvantagens e limitações



  • Automação de testes: objetivos, abordagens, vantagens, desvantagens e limitações

    Neste artigo escrevo um pouco sobre a automação de testes, grande parte da informação descrita aqui foi tirada do Syllabus da ISQTB para a certificação CTAL Test Automation Engineer, quaisquer dúvidas ou sugestões são bem vindas.

    O que é automação de testes?

    “Automação de testes, por definição, consiste em utilizar um software externo (que não faça parte do software que está sendo testado) para controlar a execução dos testes e a comparação dos resultados encontrados com os resultados esperados. “ (IZABEL, 2014)
    Basicamente fazendo uso de algum outro software os testes até então manuais e seus resultados são mapeados e parametrizados para que sejam executados e validados sem que haja a necessidade direta de interferência humana.
    Vale ressaltar como afirma Bakker et al. (2017): “A automação de teste é mais do que um mecanismo para executar um conjunto de testes sem interação humana. Envolve um processo de criação do testware, incluindo: Software, Documentação, Casos de teste, Ambientes de teste e Dados de teste”.

    Qual o objetivo da automação de testes?

    A automação de testes tem como objetivo ajudar a executar muitos casos de testes de forma consistente e repetidamente em diferentes versões do sistema ou ambientes, permitindo um melhor escalonamento dos casos de testes. Também é um objetivo a melhoria da qualidade do software com um todo, pois testes automatizados proveem uma melhor cobertura quando se tratam de testes que buscam validar se defeitos antigos e que já foram resolvidos não ressurgiram (testes de regressão).

    Quais são a abordagens possíveis em um automação de testes?

    Existem três abordagens possíveis para automação de testes, são elas:

    • Testes de API: Onde vamos usar um software ou Framework específico para validar o funcionamento das interfaces públicas para classes, modulos, métodos e bibliotecas do sistema, essa abordagem foca no Back-end do sistema.

    • Teste de interface de usuário: Nessa abordagem iremos testar e validar a interface gráfica do sistema (GUI), onde será validado além do funcionamento a integridade do Front-end do sistema.

    • Teste de serviços ou protocolos: é uma abordagem mais específica que busca testar e validar um serviço específico oferecido por um sistema ou um protocolo, por exemplo um serviço de transmissão de arquivos por protocolo FTP oferecido por um determinado software.

    Vantagens da automação de testes

    As vantagens que se tem com a automação de testes são muitas, como por exemplo:

    • Mais testes podem ser executados a cada versão nova do software: Toda vez que é lançado uma nova versão do software podemos executar cada vez mais testes ao incluir novos testes automatizados e fazendo mais testes manuais com o tempo liberado devido a automação.

    • Possibilidade de criação de testes que não podem ser feitos manualmente: Um exemplo são testes paralelos, remotos e testes de carga do sistema.

    • Possibilita o aumento da complexidade dos testes: Pois uma vez que o teste é automatizado fica mais fácil aumentar a complexidade do mesmo seja por adição de novas regras ou validações, também a execução do teste não terá um custo muito maior de tempo mesmo com essa adições.

    • Reduzir os erros humanos na execução dos testes: Quando usamos testes automatizados tudo é mapeado e parametrizado o que acaba eliminando fatores como erros técnicos e ambiguidade a qual uma pessoa está suscetível na hora de criar e executar os testes de forma manual.

    • Elevar a eficácia e eficiência dos recursos de teste: O testes passam a ser mais assertivos e otimizados e liberam mais tempo para os testes manuais.

    • Feedback mais rápido e organizado sobre a qualidade do software: É possível ao término de uma execução de minutos obter um relatório completo e descritivo da qualidade do software.

    • Maior confiabilidade do sistema: Fica muito claro se o sistema possui consistência através de repetição exaustiva de vários cenários de teste.

    Desvantagens da automação de teste

    Como foi descrito anteriormente, a automação de testes traz inúmeras vantagens, porém também temos algumas desvantagens quando adotamos a automação de testes sendo algumas delas:

    • Custos adicionais envolvidos: Que incluem custos desde ferramentas a profissionais e equipes qualificados.

    • Investimento inicial para configurar o testware: Leva-se um tempo e esforço até que o ambiente para testes automáticos seja montado, além disso algumas vezes é preciso adquirir máquinas ou recursos específicos, isso é muito válido para quem trabalho com infraestrutura em cloud.

    • Necessita de tecnologias adicionais: Serão inseridos novos softwares, Frameworks e até mesmo linguagens de programação novas ao projeto.

    • A equipe precisa ter habilidades de desenvolvimento e automação: Não são muitos os profissionais de testes no mercado que possuem conhecimento em desenvolvimento ou automação.

    • Pode desviar-se dos objetivos de teste: Por exemplo, concentrando-se na automatização de casos de testes às custas da execução dos testes manuais.

    • Os testes podem se tornar mais complexos: Um teste pode acabar virando complexo devido a requisitos e regras que o façam se encaixar na automação.

    • Erros adicionais podem ser introduzidos pela automação: Haverão testes que iram acusar falha, porém a falha às vezes será no teste automatizado e não no recurso que foi testado.

    • Manutenção constante dos testes automatizados e do ambiente de testes automáticos: Será necessário tempo e pessoas afim de corrigir eventuais problemas nos testes e nos ambientes.

    As limitações da automação de teste

    A automação de testes possui algumas limitações que devem ser levadas em conta, são elas:

    • Nem todos os testes manuais podem ser automatizados: Alguns testes não podem ser automatizados, um exemplo são testes de usabilidade ou alguns testes que possuem dependência de outros softwares e informações externas.

    • A automação só pode verificar os resultados interpretáveis pela máquina: Ou seja, testes cujo resultados não sejam resultados exatos não podem ser automatizados.

    • Não é um substituto para testes exploratórios: Como a cada versão de um software a sua complexidade tende a aumentar os testes automatizados por serem parametrizados e mapeados não dão conta de testar todos os casos possíveis, incluindo nesse contexto os novos casos de testes, sendo assim, o teste automatizado não substitui os testes exploratórios.

    Referências

    IZABEL, Leonardo Roxo Pessanha. TESTES AUTOMATIZADOS NO PROCESSO DE DESENVOLVIMENTO DE SOFTWARES. 2014. 65 f. TCC (Graduação) - Curso de Engenharia Eletrônica e de Computação, Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2014. Cap. 3. Disponível em: http://monografias.poli.ufrj.br/monografias/monopoli10012548.pdf. Acesso em: 03 out. 2018.

    BAKKER, Bryan et al. ISTQB® Advanced Level Test Automation Engineer. São Paulo: Istqb, 2017. 81 p. Disponível em: http://www.bstqb.org.br/uploads/syllabus/syllabus_ctal_tae_2016br.pdf. Acesso em: 03 out. 2018.