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.
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;
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.