Os 3 principais desafios dos testes contínuos

Times ágeis reconhecem a importância da prática dos testes contínuos, mas a grande maioria não o praticam. Neste artigo, listamos os 3 principais motivos.

Não existe software atemporal, a cada semana surgem novas tecnologias no mercado. Por conta destas mudanças e novidades, é preciso perceber o desenvolvimento de softwares como algo mutável.

Para conseguir um desenvolvimento de software que sobreviva às inovações, é preciso feedback rápido, isso evita que um erro fatal possa ser publicado e afete funcionalidades centrais para as operações de uma empresa. São em cenários assim que os testes contínuos se destacam, gerando respostas rápidas e auxiliando no ciclo de desenvolvimento.

A automação de testes é essencial para os testes contínuos, mas isso por si só não é suficiente. No caso dos testes contínuos, o objetivo é de providenciar informações se o software pode ser lançado ou não. Outras práticas envolvidas nos testes contínuos são as de alinhar os testes com os riscos do negócio, virtualização, gerenciamento dos dados de testes para a integração contínua e rodar testes exploratórios para expor os principais problemas no início de cada etapa. Esta metodologia contínua não se trata apenas de ferramentas e mão de obra, ela é um processo mais profundo que requer uma mudança de dinâmica nos processos e membros da equipe.

A prática de testes contínuos é imperativa hoje, ainda mais com 97% das empresas tendo adotado metodologias ágeis e 71% praticando ou implantando DevOps. Uma pesquisa afirma que a utilização de testes contínuos é um dos fatores principais presentes em equipes com melhores desempenho. Apesar disso, muitas empresas não possuem ainda um processo contínuo de testes amadurecido.

A automação de testes já vem sendo utilizada por uma parcela maior de empresas, automatizando geralmente alguns testes de UI que acabam sendo integrados aos testes contínuos. Porém, no geral, o processo de testes contínuos fica apenas nisso. Os desafios para a expansão deste processo pode ser resumido em três categorias:

Tempo e recursos

As equipes geralmente subestimam o tempo e os recursos necessários para implementar testes automatizados sustentáveis. Programar alguns testes básicos de UI para rodar automaticamente é um excelente começo, porém, é preciso também:

  • Privilegiar os testes unitários e na camada de serviços (APIs e Web Services).
  • Evitar que testes famosos por serem frágeis forneçam falsos positivos para a equipe.
  • Criar teste para cada requerimento novo ou modificado (ou determinar onde focar os esforços e o que pode ser ignorado).
  • Estabelecer um framework de testes que suporta reuso e testes com base em dados, ambos são essenciais para fazer a automação de testes sustentável no longo prazo.

Saiba o que é um framework de automação de testes e as dicas de como configurá-lo.

  • Manter os testes individuais e o framework de testes mais amplos em sincronia com a constante evolução da aplicação.
  • Determinar como automatizar casos de testes mais avançados e como mantê-los rodando de forma constante em um ambiente de testes contínuos.

Com ágil e DevOps, o tempo para criar, fazer manutenção, executar e analisar um teste é extremamente limitado. É preciso encontrar formas de se certificar de que um feedback rápido esteja acontecendo.

Complexidade

A quantidade de tempo e habilidade necessárias para automatizar casos de testes básicos é diferente da necessária para automatizar áreas críticas de uma operação. Casos críticos muitas vezes envolvem múltiplas tecnologias, web services, interfaces mobile, entre outra. Portanto, exigem uma implementação e orquestração mais sofisticadas.

É preciso garantir que:

  • Os engenheiros de testes entendam como automatizar os testes em uma gama de tecnologias diferentes e juntar os dados e resultados de uma tecnologia para outra.
  • Possua dados de testes compilados e seguros necessários para montar um teste realístico, assim como rodar o teste por várias etapas complexas.
  • Acesso confiável, contínuo e econômico a todos os sistemas dependentes necessários para seus testes, incluindo APIs e aplicativos de terceiros que podem ser instáveis, em evolução ou acessíveis apenas em horários limitados.

Além disso, será preciso criar uma forma sistemática para detectar e reportar erros críticos que somente podem ser percebidos da perspectiva de um usuário. A automação de testes é excelente e pode ser usada repetidas vezes, mas ainda existem certas verificações complexas que são melhores avaliadas pela experiência do usuário.

Sem um feedback rápido e confiável de como as mudanças implementadas afetam a experiência do usuário, como saber que esta implementação será benéfica para a empresa?

Resultados

A reclamação mais comum quanto aos resultados dos testes é a quantidade exorbitante de falsos positivos gerados. No início da automação de testes é preciso lidar logo com os falsos positivos. À medida que as suítes de testes crescem e a frequência de execução aumenta, os falsos positivos se tornam um problema imensurável. Se não forem tratados, os falsos positivos tornarão sua camada de testes automatizados praticamente sem utilidade para a tomada de decisões.

Na era de equipes ágeis e DevOps, as decisões de entrega precisam ser feitas rapidamente, quase automáticas. Você precisa saber quais casos de testes falharam e sua criticidade. Os reports precisam ser suficientemente detalhados e confiáveis para sua análise. Se seus relatórios não indicam a criticidade dos casos de testes, se há falsos positivos em excesso, então você não será capaz de tomar uma decisão racional. Os resultados dos testes podem gerar pontos cegos, o que pode levar a sérios problemas devido a velocidade das metodologias ágeis.

Automação de Testes - O Guia do Gestor

Conforme os sistemas crescem, é impossível garantir qualidade sem o uso de uma boa camada de testes automatizados. Regras de negócios cada vez mais complexas, a necessidade de uso de grandes massas de dados, além das inúmeras plataformas onde as aplicações precisam ser executadas, obrigam as organizações a investirem na automação dos testes. Não há como escapar.

Este é um tema bastante extenso e complexo. É impossível resumi-lo em algumas poucas páginas. No entanto, procuramos selecionar alguns tópicos essenciais, sem os quais qualquer implantação estaria fadada ao fracasso. Esses são os fundamentos para qualquer gestor comprometido com seus projetos.

Baixe agora mesmo