O Guia Definitivo de
Testes Contínuos
Qualidade Reconhecida Por
Índice
07. Verificações Automatizadas¶
As verificações automatizadas consistem em uma máquina que executa verificações ou casos de teste automaticamente, lendo sua especificação de alguma forma, que poderia ser scripts em uma linguagem de programação de propósito geral ou uma específica da ferramenta, a partir de planilhas, modelos etc. O objetivo de automatizar é aumentar a "largura de banda" dos testadores; ao automatizar certos processos repetitivos, os testadores podem se dedicar a outras atividades.
Aqui estão apenas alguns dos benefícios da automação:
- Executar mais testes em menos tempo, acelerando o time to market e aumentando a cobertura
- Melhoria da imagem, aumento da confiança do usuário
- Capacidade de execução multiplataforma
- Avaliação do desempenho da aplicação em diferentes versões e ao longo do tempo
- Execução sistemática, sempre testando a mesma coisa e da mesma forma, sem perder nenhuma etapa de verificação
- A detecção mais precoce de erros leva a menores custos de correção
- Aumento da motivação do testador, ao liberar tempo para atividades mais desafiadoras
- Facilitação da integração contínua
Um dos objetivos desejados da automação é receber feedback sobre o status da qualidade do software o mais cedo possível e reduzir custos não apenas associados aos testes, mas também ao desenvolvimento.
É bem sabido que automatizar o caos traz um caos mais rápido. Para o sucesso dessa atividade, é essencial selecionar adequadamente quais casos automatizar em cada nível e escolher aqueles que prometem um maior retorno sobre o investimento.
O problema típico é que o que vem à mente da maioria das pessoas quando pensam em automação é automatizar as ações do usuário no nível da interface gráfica, mas essa não é nem a única nem a melhor opção. Para entender isso, dê uma olhada na pirâmide de automação de Mike Cohn.
A pirâmide de Cohn estabelece que há vários níveis de verificações, indicando em que grau elas devem ser automatizadas. A situação ideal seria ter:
- Muitos testes/verificações unitárias automatizadas durante o desenvolvimento, já que é um ponto primário para detectar falhas. Se uma funcionalidade falhar neste ponto, os testes/verificações poderiam falhar nos níveis subsequentes: integração, API etc.
- Alguns testes/verificações no nível de API e de integração de componentes e serviços, que são os candidatos mais estáveis para a automação
- Menos testes/verificações de GUI automatizados, já que são mais difíceis de manter, mais lentos que os outros na execução e dependentes de muitos outros componentes
Realizar testes/verificações de GUI proporciona um maior grau de tranquilidade, já que verificam a funcionalidade de ponta a ponta, mas não é aconselhável almejar ter apenas esse tipo de verificação automatizada, nem que seja a maioria do conjunto de testes.
Para referência, o Google afirma ter 70% de suas verificações automatizadas no nível unitário, 20% no nível de API e apenas 10% no nível de GUI.
O objetivo desse esquema é que chegue um momento em que uma maior cobertura de testes seja cada vez mais alcançada, ao mesmo tempo em que se investe a mesma quantidade de recursos.
Há um problema muito interessante que ocorre neste nível. O design e a programação de casos de teste unitários sempre foram um espinho no pé do desenvolvedor de software. Os testes unitários são um passo fundamental para adicionar um trecho de código ao sistema, mas nem sempre há tempo, recursos ou vontade suficientes para fazê-lo. Embora esse nível de teste seja reconhecido como uma boa prática para melhorar a qualidade do código (e evitar a dívida técnica), também é verdade que, muitas vezes, ao projetar, preparar e planejar a conclusão de uma tarefa de programação, coisas que não são consideradas absolutamente fundamentais são deixadas de lado e, assim, os testes unitários podem ficar pelo caminho. Na Abstracta, recomendamos fortemente não deixá-los de fora.
Talvez este seja o problema mais profundo: os testes unitários não são considerados parte do desenvolvimento e acabam sendo encarados como uma atividade opcional, de apoio.
Claramente, as verificações unitárias automatizadas são extremamente úteis para um esquema de integração contínua no qual os erros são identificados o mais cedo possível.
Além disso, é essencial definir uma boa estratégia para as verificações automatizadas seguindo a pirâmide de Mike Cohn: uma base forte em testes unitários, alguns testes no nível de serviço e apenas os mais críticos no nível da interface gráfica. É importante sempre considerar a manutenibilidade dos testes a fim de sustentar uma boa relação custo-benefício.
As verificações automatizadas são os testes mais importantes no nível funcional. A bem da verdade, não é possível alcançar a integração contínua sem elas, então as equipes devem buscar executá-las com frequência.
Baixe o Guia Definitivo de Testes Contínuos em PDF
Tudo o que as equipes precisam saber para o shift-left testing e alcançar o nível de maturidade nos seus processos de engenharia de qualidade que viabiliza o CI/CD.
O conteúdo deste material está em inglês. Você pode solicitar o download normalmente pelo formulário.





