Três tipos comuns de automação de testes

Vamos começar com o básico. Conheça os dois modos gerais de teste e três tipos comuns de automação de teste.

Todos nós já passamos por isso: qual é um meme recorrente de programação que acontece com muita frequência na vida real?

Um armário com duas gavetas que não podem ser abertas ao mesmo tempo.

Este meme resume bem a situação: cada gaveta funciona perfeitamente individualmente, mas, em combinação com a outra, elas se bloqueiam e não funcionam. Você quer que as duas gavetas funcionem bem uma com a outra e sejam operáveis ao mesmo tempo.

O mesmo armário, mas com duas gavetas que podem ser abertas ao mesmo tempo.

Aplique isso ao desenvolvimento da Web: você escreveu alguns testes, talvez até tenha alcançado 100% de cobertura de teste, mas seu aplicativo ainda precisa funcionar quando outras partes forem implementadas. As unidades podem funcionar bem por conta própria, mas não em relação umas às outras. Criar alguns testes é crucial, mas é apenas uma parte da configuração ideal de testes para seu projeto. Como primeira etapa, você precisa determinar quais partes da qualidade do aplicativo precisam ser garantidas e como fazer isso.

Simplificando, você precisa de um plano antes de começar a escrever o código de teste real. Para abordar o tópico de como testar de forma prática, vamos começar do zero e responder a duas perguntas básicas:

  • Como você quer testar?
  • O que você quer testar?

Este artigo se concentra nas informações gerais que você precisa saber para responder à primeira pergunta. Para começar, vamos aprender quais modos de teste existem e depois nos concentrar nos tipos comuns de teste. Em artigos posteriores, vamos responder à segunda pergunta, combinar as respostas e encontrar a estratégia de teste mais adequada para seu projeto. Vamos lá! 🙌

Começar com o básico: modos gerais de teste

Ao responder à pergunta sobre como testar, o primeiro ponto a ser esclarecido é muito abstrato. Você deve testar manualmente ou deixar que um computador assuma o controle? No entanto, é importante não cair no pensamento binário.

Teste manual x teste automatizado

Se você pedir que engenheiros de garantia de qualidade definam os testes, eles provavelmente vão dividir o processo em dois "modos":

  • Teste manual. Esse é um método de teste típico realizado por pessoas reais. Um engenheiro de garantia de qualidade clica no aplicativo, verifica se ele funciona e, ao mesmo tempo, tenta que ele falhe. A maneira mais comum é o teste exploratório, em que o engenheiro investiga o aplicativo usando o conhecimento que tem dele em relação a um caminho ou uma lista de verificação predefinidos.
  • Testes automatizados. É um tipo de teste realizado por um computador. Engenheiros de garantia da qualidade implementam isso para automatizar testes repetitivos e monótonos.

Esta série de guias se concentra principalmente em testes automatizados. No entanto, não se concentre em apenas uma forma de teste. Mesmo que a automação economize muito tempo e esforço, os humanos e os testes manuais sempre terão um papel vital. Em vez disso, a automação de testes deve liberar as pessoas para se concentrarem em testes exploratórios e na solução criativa de problemas. Por exemplo, garantir a qualidade das experiências do usuário ou proteger a lógica de negócios de alto risco. Em outras palavras, a automação está do seu lado. ❤️

Caixa opaca e caixa transparente

Você definiu os modos gerais de teste. No entanto, isso ainda não é suficiente. Para planejar a estratégia de teste, há mais uma pergunta a ser respondida: você precisa saber como o aplicativo funciona ou é melhor testar sem esse conhecimento? Dependendo da resposta, há dois procedimentos para derivar e selecionar casos de teste:

  • Teste de caixa opaca (ou teste de caixa preta). Ele se baseia na análise dos requisitos funcionais ou não funcionais (especificações) de um componente ou sistema sem considerar a estrutura interna.
  • O teste de caixa transparente (ou teste de caixa branca) é um procedimento que leva em conta a estrutura interna da caixa. Em outras palavras, como o aplicativo funciona.

Ambos os procedimentos podem ser aplicados a testes manuais e automatizados. No entanto, alguns aspectos dos modos de teste gerais podem se concentrar mais em um dos dois. Vamos abordar isso mais tarde. Por enquanto, vamos dividir a automação de testes em tipos.

Tipos de automação de testes: como você quer testar?

Ao se aproximar da resposta à pergunta "como", você já decidiu fazer alguns testes manuais. No entanto, escolher e aplicar tipos de automação de testes é um pouco mais desafiador. Os tipos de teste de automação estão intimamente relacionados às métricas que você quer criar nos seus projetos. Vamos analisar mais de perto os mais importantes.

Como ilustrado no meme mencionado anteriormente, você já encontrou dois tipos: testes de unidade e testes de integração. O teste completo é o terceiro teste importante a ser considerado. Mas isso não é tudo. Vamos analisar melhor.

Teste de unidade

O teste de unidade é um tipo de teste em que partes ou unidades menores testáveis de um aplicativo são testadas individualmente e de forma independente para garantir o funcionamento adequado. O escopo dessas unidades pode variar de funções, classes ou interfaces a serviços ou componentes completos. Os atributos principais são velocidade de execução, isolamento e facilidade de manutenção. Se você quiser se aprofundar nos testes de unidade, acesse este guia sobre testes de unidade.

Uma representação simplificada de testes de unidade mostrando entrada e saída.

Teste de integração

O teste de integração se concentra nas interações entre componentes ou sistemas. Em outras palavras, como eles funcionam bem juntos. Exemplos típicos de testes de integração são testes de API ou de componente.

Uma representação simplificada do teste de integração mostrando como duas unidades trabalham juntas.

Testes de ponta a ponta

Esses testes são frequentemente chamados de testes de interface, e esse nome explica melhor a função deles. Esses testes interagem com a interface do aplicativo, incluindo a pilha completa, e testam o aplicativo de ponta a ponta.

Uma representação simplificada do teste completo mostrando um computador como um robô, analisando um fluxo de trabalho.

Eles se assemelham a um teste de sistema se você se referir à teoria da garantia de qualidade. Esses testes simulam um usuário real e as interações dele. Os testes de ponta a ponta levam mais tempo de execução porque envolvem todo o sistema, e mais tempo de execução requer mais capacidade de computação. Como resultado, esse esforço extra resulta em custos de manutenção mais altos.

Testes visuais da interface

Uma subcategoria interessante de testes de interface é a dos testes visuais. Esses testes são testes completos estendidos que fornecem uma maneira de verificar a saída visível de um aplicativo. Esse teste faz uma captura de tela após uma alteração e outra captura de tela contendo o "status quo" (ou arquivo ideal), e depois fornece esses resultados a um revisor humano para inspeção e verificação. Em outras palavras, ele ajuda a encontrar "bugs visuais" na aparência de uma página, além de bugs puramente funcionais e não registrados explicitamente em declarações.

Análise estática

Há mais uma coisa a ser apresentada aqui: a análise estática. Não é um tipo de teste no sentido tradicional. No entanto, será um aspecto essencial nas estratégias de garantia de qualidade mais tarde. Ele funciona como uma função de verificação ortográfica: ele verifica o código em busca de defeitos e erros de sintaxe mais significativos sem executar o programa, detectando problemas de estilo de código. Essa medida simples pode evitar muitos bugs. Este é um bom ponto para aprender sobre a análise estática, se você quiser conhecê-la com mais detalhes.

Testes em todas as formas: como tudo isso funciona?

Ao procurar respostas para todas essas perguntas, você pode encontrar uma possível solução em algumas analogias. Nas comunidades da Web e de testes, os desenvolvedores tendem a usar essas analogias para dar uma ideia de quantos testes de cada tipo você deve usar.

Muitas formas, como pirâmide, diamantes, casquinha de sorvete, favos de mel e um troféu, representando estratégias de teste.

As cinco estratégias mais comuns são as seguintes:

  • Pirâmide de testes
  • Diamante de teste
  • Teste de casquinha (também conhecido como Teste de pizza)
  • Testar Honeycomb
  • Troféu de teste

São muitas informações para processar. Como você decide uma estratégia de teste correspondente com base em tudo isso? Não se preocupe, nós temos a solução. No próximo artigo, vamos discutir essas diferentes estratégias em mais detalhes e explicar como escolher a mais adequada para seu projeto. Não perca! 🔥