Pare de Automatizar a Execução dos Testes. Automatize todo o Teste!
A abordagem clássica de automação de teste que automatiza casos de teste escritos manualmente tem muitos problemas. Como resultado desse processo, sua automação de testes geralmente se deteriora com o tempo.
Não existem mais dúvidas de que a Automação de Testes é fundamental para assegurar a qualidade de um sistema em prazos cada vez mais curtos, os benefícios da automatização deixaram de ser tratados como um diferencial e foram estabelecidos como pré-requisitos da cultura de desenvolvimento ágil. Ferramentas e frameworks de implementação foram difundidos pela comunidade e independentemente do orçamento, qualquer um pode aventurar-se com soluções Open Source ou eté mesmo com ferramentas proprietárias, já que muitas possuem uma versão free (com limitações de escala), ou são comercializadas no modelo SaaS (Software como serviço). Isto posto, carecemos então avaliar o custo da curva de aprendizado e o custo de futuras manutenções ou adaptações, dado a volatilidade do negócio (competitividade, mudanças de regras e requisitos), é possível que a “simples automatização do escopo de testes regressivos” (sarcasmo no simples), não seja suficiente para reduzir o tempo de sua esteira de entregas, pela necessidade de uma exaustiva revisão e manutenção dos testes regressivos.
Umas das maneiras de otimizarmos a facilidade de manutenção da automação é o uso de alguns padrões de projeto, como o Page Objects ou App Actions, porém em sua maioria estes padrões abrangem o aspecto técnico (locators, métodos e estruturas), e caso o gatilho de manutenção seja uma alteração nas regras de negócio, estes padrões não serão suficientes para suprimir todo o tempo e esforço de atualizar em tempo, todos os testes regressivos automatizados.
Precisamos de algo mais! Automação além da execução.
Vamos imaginar o seguinte cenário:
Em nossos testes regressivos do App ‘Banco Digital’, possuímos um conjunto de fluxos e processos envolvendo operações de pagamento, os quais iremos automatizar. Independente das funcionalidades que testaremos, identificamos que as regras são baseadas nos seguintes fatores:
Sendo assim, o teste de uma funcionalidade qualquer teria 48 casos de teste ao total:
– OK…Qual a novidade? O que isso tem a ver com a automação?
Quando automatizamos na maioria das vezes, focamos nossa atenção ao esforço de execução, e realizamos manualmente outras etapas do trabalho que também podem e devem ser automatizadas.
Por exemplo os 48 testes anteriormente mencionados, podemos combinar manualmente (tipo no Excel), mas além de ser um desperdício de tempo, essa dependência manual, pode ser a “bola de ferro” acorrentada ao pé da sua automação, quando você mais precisar de agilidade no teste.
Uma maneira inteligente de solucionar casos assim, é através do conceito de Teste Baseado em Modelo (Model Based Test ou MBT para os íntimos), onde definimos em um modelo os dados (como as colunas da tabela anterior), as regras (como combinar os dados entre si) e a partir deste modelo, geramos automaticamente um resultado.
Seguindo nosso cenário poderíamos criar nosso “modelo” em um arquivo de texto e definir uma sintaxe:
A partir da leitura do modelo, podemos obter instantaneamente o produto das combinações:
Estrutura automatiza a escala
Isso significa que quando novas regras forem adicionadas, não necessitaremos revisar estas 48 combinações, bastando apenas atuar no “modelo”. Seguindo nosso exemplo, vamos adicionar regras e novos fatores:
E agora que possuímos 864 combinações, já pensou ter de combinar tudo isso manualmente? Pior ainda, atentar-se que nem todas as combinações serão validas!
Esta é uma situação em que percebemos que automatizar apenas a execução do teste, é insuficiente se tivermos tarefas manuais no processo anterior a execução.
– De volta ao modelo:
As combinações novamente serão realizadas de forma automatizada, inclusive, aplicando as regras (para gerar somente Casos de Teste positivos):
Compreendemos então que o Modelo, é aquilo no qual um programa se pauta para construir outra coisa idêntica em significado.
Este é um exemplo muito simples de geração de casos de teste a partir de modelos, mas este mesmo conceito pode ser aplicado a problemas muito mais complexos, veja abaixo um de nossos cases de sucesso com o nosso serviço Intelligent Quality Robotic Test Automation (iQRTA):
OBJETIVO
Construção de Robôs de Teste Automatizado, para:
- Reduzir os ciclos de entrega e aumentar a Qualidade e Confiabilidade;
- Aumentar a Cobertura de Testes, sem o crescimento proporcional nos custos operacionais;
Para uma rede de restaurantes Fast-food, que precisava diminuir o número de chamados e incidentes de Software
relacionados ao POS nas mais de 1.000 lojas espelhadas pelo Brasil, entendeu-se que o aumento da qualidade e confiabilidade, envolvia o aumento da cobertura de testes (atuais 3.000 condições para mais de 8.000) sem o respectivo aumento de prazo ou pessoas para testes e homologação.
ABORDAGEM
Obter alta confiabilidade por meio de testes na camada de apresentação do usuário final (GUI) tornou-se essencial, uma vez que o software do POS trata-se de um sistema desktop, com a base de dados estruturada em um conjunto de arquivos XML sem estruturas de Serviço e Banco de Dados. Porém, é sabido que quanto mais se concentra o esforço de testes na interface de usuário, mais demorado e caro é o processo de testes e automação, o que nos leva a uma abordagem de testes anterior a GUI, validando os arquivos XML.
Isto posto, nossa abordagem teve foco em abordar os seguintes aspectos:
- Funcionalidades e Mecânicas de Venda;
- Seleção de Produtos (Imagens, Nomes, Preços);
- Conformidade de Códigos de Produtos, Composição de Promoções e Preços na base da dados (XML) e nas telas (GUI);
- Validação das informações enviadas aos periféricos, como impressoras de Cupom Fiscal e Monitores de Pedido na Cozinha (KVS);
DESAFIOS
A automação de testes baseada na construção de scripts e definição manual dos milhares de canários possíveis, por si só era um grande obstáculo, porém, no caso do Software do POS desta cadeia de Fast-Food, era ainda mais grave. Percebemos caso seguíssemos o caminho tradicional, que os robôs de teste exigiriam intensa manutenção e intervenção humana a cada alteração do cardápio ou campanha de promoções, que mudam com alta frequência.
- Como gerar as mais de 8.000 combinações de teste dinamicamente?
- Como garantir a integridade da massa de Testes a Cada mudança de Cardápio?
- Como manter a integridade da Automação (Ids, Locators, Imagens, Coordenadas e etc.) se a cada campanha semanal, os botões, produtos e telas em geral, sofrem grandes mudanças?
SOLUÇÕES
Com uma arquitetura de automação de Testes Baseada em Modelos (model-based testing), os cenários de teste, a massa de testes e os resultados esperados foram gerados automaticamente a partir dos arquivos XML de configuração do Software do POS, lendo Tabelas de Preços, Produtos e Disposição de Telas que alimentam o próprio software sob teste. Com isso, os Robôs de Testes do POS, tornaram-se capazes de se adaptar às frequentes mudanças, com mínima intervenção humana (apenas nos modelos).
COBERTURA DA AUTOMATIZAÇÃO
Apesar da continua evolução do Software do POS, nosso escopo cobre diferentes mecânicas de venda, que por sua vez resultam em mais de 8.150 diferentes combinações de produtos em cada venda, testando em looping sete aspectos fundamentais:
- Aumentamos a Cobertura de Testes Regressivos em 63%, de 3 mil para 8 mil testes.
- Reduzimos o período de Testes Regressivos de 66 horas, para 23 horas.
- Possibilitamos, identificar rapidamente oportunidades de melhoria, inclusive disponibilizando novos testes assim que disponibilizado novos cardápios.
- Conseguimos alta disponibilidade do robô para execuções em múltiplos ambientes.
Sempre se Pergunte: Processo, processo meu, dá para ser mais automatizado do que eu?
Pela criação de Modelos executáveis inteligentes e simplificados de fluxos, dados, parâmetros, configurações, regras de negócio e resultados esperados explicitados nos modelos e ou aprendidos via machine-learning os Nossos serviços de Intelligent Quality Robotic Test Automation (iQRTA) realizam o maior ganho que a automação permite!
Marque uma call com um de nossos consultores e lhe proporemos gratuitamente um plano preliminar de Automatização, para apoiar sua tomada de decisão.