Um mapa de ferramentas de teste por ganho exclusivo

Unitário

  • Detecta de forma exclusiva: lógica errada, em milissegundos, com a localização exata da falha.

  • O feedback mais barato que existe. Nada o substitui.

API

  • Detecta de forma exclusiva: comportamento errado na fronteira do serviço, incluindo casos que nenhuma interface expõe.

  • Mais rápido e mais preciso do que controlar um navegador.

Ponta a ponta

  • Detecta de forma exclusiva: o produto montado falhando enquanto cada parte funciona.

  • A mais lenta e a única camada que responde à pergunta do usuário.

Ao redor delas ficam três especialistas: contrato para desvios de formato entre serviços implantados de forma independente, carga para capacidade, e varredura de segurança para classes de vulnerabilidade conhecidas. Cada um detecta algo que as três camadas principais não conseguem detectar, e nenhum deles substitui essas camadas.

Onde costuma estar a lacuna

A maioria dos times tem testes unitários e alguma cobertura ponta a ponta, com um meio fino. Isso é o inverso do ideal, porque a camada de API detecta a maior parte dos defeitos visíveis ao usuário por uma fração do custo da camada acima dela.

A segunda lacuna comum é a cobertura ficar atrás do volume de código. Isso não se resolve com mais uma categoria de ferramenta, e sim com cobertura que não depende de quanto alguém consegue escrever.

A pergunta que vale mais do que uma tabela de recursos

Seja qual for a camada em que você está procurando, pergunte como uma falha aparece para quem vai corrigi-la e se uma execução que nunca chegou às suas asserções é reportada como aprovada. Essas duas perguntas preveem o valor de uma ferramenta melhor do que qualquer coisa na página de comparação dela.

A ferramenta que você já tem e não está usando

Antes de adicionar qualquer coisa, vale conferir o que já está instalado e parado, porque a maioria das organizações tem mais capacidade de teste do que usa.

Quase sempre existe um framework de testes unitários com um punhado de testes de dois anos atrás. Muitas vezes existe uma suíte de navegador que roda todas as noites e que ninguém lê. Com frequência existe um scanner publicando um relatório em um canal silenciado. Cada uma dessas coisas foi comprada ou configurada por um motivo e deixou de ser usada por um motivo, e vale conhecer esse motivo antes de gastar dinheiro de novo na mesma categoria.

A resposta comum é que um resultado sobre o qual ninguém age acaba ignorado, e isso é um problema de processo, não de ferramenta. Uma ferramenta nova herda o mesmo processo e chega ao mesmo lugar, só que mais tarde e de forma mais cara.

Onde investir a próxima hora

  1. O fluxo que seria vergonhoso quebrar, coberto de ponta a ponta.

  2. A API por trás dele, coberta incluindo os casos negativos.

  3. O que quebrou por último, transformado em uma verificação permanente.

Terminal

npm install -g @testsprite/testsprite-cli
testsprite setup

O painel cobre o mesmo terreno para quem não quer uma instalação local, e o conjunto completo de comandos está no repositório da CLI.

  • O GitHub App é um webhook que você configura no painel do TestSprite. Ele escuta o evento de deploy que seu pipeline já produz, então nada muda no seu repositório.

  • GitHub Actions coloca a etapa dentro do seu próprio workflow, configurada pelo terminal.

Onde o TestSprite fica no mapa

Na camada de API e na camada ponta a ponta, que são as duas em que vive a maior parte dos defeitos visíveis ao usuário e onde está a lacuna comum. Ele exercita o produto em execução em vez de um mock, gera cobertura a partir das suas fontes e de uma passagem de descoberta, e refina em linguagem simples.

Auto-Authentication mantém as sessões vivas ao longo de uma execução, Dynamic Variables levam valores de uma chamada para outra, Dependency Chains derivam a ordem de execução e Auto-Cleanup remove exatamente o que a execução criou. Os passos de navegador são intenções, não seletores, então redesenhos não deixam a suíte vermelha.

Os testes unitários continuam sendo seus e continuam sendo o feedback mais barato que você tem. Contrato, carga e varredura de segurança continuam sendo instrumentos separados. O ganho é que o meio fino é preenchido sem criar um trabalho de escrita que compete com a entrega.

Quantas ferramentas de teste devemos ter?

O mínimo que cubra as camadas de que você precisa. Cada ferramenta a mais é mais uma coisa para configurar, executar e interpretar.

A pirâmide de testes ainda faz sentido?

O formato é um padrão razoável. A versão útil não é uma proporção, é perguntar o que cada camada detecta de forma exclusiva.

Devemos padronizar entre os times?

Para relatórios e integração com CI, sim. Impor uma única ferramenta a todos os times costuma produzir uma ferramenta que um time usa bem e os outros evitam.

Qual é a lacuna mais comum?

Uma camada de API fina. Os times pulam do unitário para o ponta a ponta e perdem o nível em que a maior parte dos defeitos visíveis ao usuário é mais barata de detectar.

Como saber se uma ferramenta está justificando seu lugar?

Pelos defeitos que escapariam e que ela detecta, e se alguém lê o que ela produz. Uma ferramenta que ninguém lê é uma assinatura.

A versão curta

Mapeie pelo ganho exclusivo, não por categoria.

Vale mapear as ferramentas de teste pelo que cada camada detecta e nenhuma outra detecta. A lacuna comum é uma camada de API fina, e a pergunta que vale mais do que qualquer tabela de recursos é como uma falha aparece para quem vai corrigi-la.