Porquê automatizar? A existência de ferramentas de automação cada vez mais poderosas, tornaram a automação de testes um processo mais simples e um investimento cada vez mais seguro.

A execução de testes automáticos tem vindo gradualmente a assumir um papel cada vez mais importante nas equipas de quality assurance (QA) das organizações, possibilitando:

  • A repetição sem esforço das execuções de um caso de teste agilizando, por exemplo, os testes de regressão a cada nova versão do sistema em teste;
  • A redução do tempo de execução de testes complexos, eliminando o tempo como fator de restrição ao âmbito dos testes executados;
  • Eliminar falhas inerentes à interação humana e o eliminar de tarefas repetitivas;
  • Aumento da cobertura de testes aos sistemas.
  • Automatizar processos de criação de massa de dados, economizando tempo na sua criação.
Atendendo a estes benefícios a automação de testes deverá ser sempre tida em consideração em qualquer iniciativa de QA. No entanto, e de forma a evitar investimentos pouco rentáveis, é necessário primeiramente avaliar quais os sistemas ou aplicações a automatizar e dentro destes selecionar qual o conjunto de testes a automatizar.

O que automatizar?

Um processo de automação coerente deverá englobar atividades prévias ao desenvolvimento de scripts, como a definição da estratégia de automação e a análise dos benefícios e viabilidade do processo para a aplicação ou sistema em teste. Esta análise deverá tem em conta os seguinte pontos: 

  • Complexidade da aplicação: É necessário investigar a complexidade da aplicação a ser automatizada e sua integração com a ferramenta de automação. Aplicações complexas podem exigir um elevado esforço na codificação dos scripts de automação ou mesmo serem incompatíveis com determinadas ferramentas de automação, o que poderá inviabilizar a iniciativa;
  • Estabilidade da aplicação:Caso a aplicação não esteja suficientemente madura (sobretudo no início do seu ciclo de vida) e seja previsível que venha a sofrer constantes alterações, a automação é dificultada pelo grande esforço de manutenção dos scripts que é requerido e como tal revelar-se pouco compensadora;
  • Ciclo de vida da Aplicação: Caso o ciclo de vida da aplicação em questão seja expetável ser curto, por exemplo um sistema desenvolvido para uma situação específica que terá seu uso descontinuado em breve, é improvável que a automação seja viável;

Uma vez seguros que uma iniciativa de automação é viável para um dado sistema, deve inicialmente ser realizada uma análise ao âmbito dos testes candidatos à automação. Esta análise irá permitir identificar quais os testes que uma vez automatizados, gerarão maior retorno em relação ao esforço requerido para a sua automação.

Na lista abaixo descrevem-se os critérios tipicamente utilizados pelas equipas de automação da Link quando se pretende avaliar se um teste deverá ou não ser alvo de automação:

  • Ciclos repetitivos (A): Todos os testes que envolvam a repetição dos mesmos passos numerosas vezes com ligeiras variações são candidatos à automação. Testes a funcionalidades como o login, o cadastro e consultas ao sistema são exemplos de candidatos a automatizar;
  • Consumidores de tempo (B): Testes relativos a processos de negócio cuja execução manual consome muito tempo são também geralmente bons candidatos à automação (Ex: validação de um cálculo);
  • Estabilidade (C): Para um teste ser candidato à automação, o comportamento do sistema (resultado do teste) deve ser conhecido e estável. Automatizar testes de funcionalidades não estáveis poderá implicar a necessidade de voltar a automatizar o teste, ou (no pior dos cenários) produzir a deteção de defeitos inexistentes.

Após a avaliação e classificação dos testes de acordo com os critérios acima, a decisão quanto à sua automação poderá ser baseada na combinação dos vários critérios, conforme sugerido abaixo:

  • Casos de testes que estejam na categoria: A + C: Automatizar
  • Casos de testes que estejam na categoria: B + C: Automatizar
  • Casos de testes que estejam na categoria: A + B + C: Automatizar
  • Casos de testes que estejam na categoria: A + B: Não automatizar
  • Casos de testes que estejam somente na categoria A: Não automatizar
  • Casos de testes que estejam somente na categoria B: Não automatizar
  • Casos de testes que estejam somente na categoria C: Não automatizar

Como automatizar?

Um processo de automação deverá necessariamente ser estruturado e coerente de forma a produzir os resultados desejáveis, ou seja reduzir o esforço de testes que se teria casos os mesmos testes tivessem de ser executados manualmente.

De forma a alcançar este objetivo a Link estruturou o seu processo de automação nas seguintes etapas:

  • 1)) Criação de casos de teste: Os casos de testes (mesmo os que venham a ser automatizados) deverão ser especificados e registados numa ferramenta de gestão de testes de forma rastreavel aos requisitos do sistema. Será a partir dos passos e resultados esperados neles descritos, que o analista de testes automáticos criará os scripts de automação;
  • 2) Análise do âmbito a automatizar: Esta análise é de grande importância para o processo de automação, pois define quais os testes a automatizar para um dado sistema. Esta seleção é realizada recorrendo à avaliação dos critérios expostos na secção anterior;
  • 3) Criação dos scripts automáticos: A criação dos scripts é feita com base nos casos de teste especificados manualmente, adicionando os pontos validação de acordo com os resultados esperados. O script deve refletir os passos do teste com precisão e reportar situações inesperadas tratando, por exemplo, mensagens de erro de sistema e documentando-as de maneira a alertar para o erro detetado;
  • 4) Homologação dos scripts: A homologação de scripts consiste na execução prévia dos testes automatizados, juntando-os em grupos lógicos sequenciais pela mesma ordem pela qual serão executados quando estiverem em operação, tentando simular as condições reais de execução. Desta maneira, procura-se antecipar o maior número de problemas possível antes da fase de operação. A partir deste ponto o script está pronto a ser executado no ambiente a que se destina;
  • 5) Execução de scripts automáticos: Após a homologação, os scripts deverão ser disponibilizados aos analistas de testes, para serem executados no ambiente ao qual se destinam, juntamente com a massa de testes, e quaisquer condições de teste que sejam necessárias assegurar;
  • 6) Manutenção dos scripts de teste: A manutenção dos scripts consiste em efetuar ajustes necessários decorrentes de novas versões, alterações de ambientes, ou customização dos sistemas.

De forma a agilizar todo o processo de criação de scripts a Link desenvolveu também uma framework de automação que permite a reutilização de scripts e adaptações rápidas aos mesmos, mantendo a qualidade dos testes. 

A framework é composta por vários módulos que automatizam operações atómicas. Estes módulos são depois encadeados resultando na automação de um cenário de teste específico e podem ser novamente aproveitados na geração de outros cenários, até mesmo em outros projetos de teste. 

Com a utilização desta framework de automação foi constatado um ganho médio de 70% na reutilização de código e uma redução em média de 50% no esforço, quando são necessárias alterações aos scripts.