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

Vamos começar com o básico. Exploração dos dois modos gerais de teste e três tipos comuns de automação de testes.

Ramona schwering
Ramona Schwering

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

Um armário com duas gavetas que você não pode abrir ao mesmo tempo.

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

O mesmo armário, mas com duas gavetas que você pode abrir ao mesmo tempo.

Aplique isso ao desenvolvimento da Web: você criou alguns testes e talvez tenha alcançado 100% de cobertura, mas o aplicativo ainda vai precisar funcionar quando as outras partes se encaixarem no lugar. As unidades podem funcionar bem sozinhas, mas não em relação umas às outras. Escrever alguns testes é crucial, mas é apenas uma parte da configuração ideal para seu projeto. O primeiro passo é determinar quais partes do aplicativo você precisa garantir e como é possível fazer isso.

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

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

Este artigo foca no que você precisa saber para responder à primeira pergunta. Para começar de um terreno comum, primeiro vamos aprender quais modos de teste existem e, em seguida, nos concentrar nos tipos comuns de teste. Nos próximos artigos, vamos responder à segunda pergunta, combinar as respostas e encontrar a estratégia de teste que funciona melhor para o seu projeto. Vamos lá! 🙌

Comece pelo 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 um computador assumir o controle? No entanto, é importante não cair no pensamento binário aqui.

Comparação entre testes manuais e automatizados

Se você pedir aos engenheiros de garantia de qualidade para definir os testes, eles provavelmente dividirão o teste em dois "modos" primeiro:

  • Teste manual: Esse é um método de teste típico conduzido por pessoas reais. Um engenheiro de garantia de qualidade clica no aplicativo, verifica se ele funciona e, ao mesmo tempo, tenta quebrá-lo. A maneira mais comum são os testes exploratórios, em que o engenheiro investiga o aplicativo usando o conhecimento dele em um caminho ou lista de verificação predefinida.
  • Testes automatizados. Esse é um tipo de teste realizado por um computador. Os engenheiros de garantia de qualidade o implementam para automatizar testes repetitivos e monótonos.

Esta série de guias se concentra principalmente nos testes automatizados. No entanto, você não deve se concentrar em apenas uma maneira de teste. Mesmo que a automação economize muito tempo e esforço, humanos e testes manuais sempre desempenharão um papel vital. Em vez disso, a automação de testes permite que as pessoas se concentrem 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, você pode contar com a automação. ❤️

Caixa opaca versus 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ê deveria saber como seu aplicativo funciona em segundo plano ou é melhor testar sem esse conhecimento? Dependendo da resposta, há dois procedimentos para determinar e selecionar casos de teste:

  • Teste de caixa opaca (ou teste de caixa preta). Ela é baseada na análise dos requisitos funcionais ou não funcionais de um componente ou sistema (especificações) sem considerar sua estrutura interna.
  • O teste de caixa clara (ou teste de caixa branca) é um procedimento que leva em consideração a estrutura interna dessa caixa. Em outras palavras, como seu aplicativo funciona em segundo plano.

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

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

À medida que você se aproxima de responder à pergunta "como", você já decidiu fazer alguns testes manuais. No entanto, escolher e aplicar os tipos de automação de teste é um pouco mais desafiador. Os tipos de teste de automação estão intimamente relacionados às métricas que você quer criar nos projetos. Agora, vamos analisar as mais importantes.

Conforme ilustrado no meme mencionado anteriormente, você já se deparou com dois tipos: teste de unidade e teste de integração. O teste completo é o terceiro mais importante a ser considerado. Mas isso não é tudo. Vamos olhar mais de perto.

Teste de unidade

O teste de unidade é um tipo de teste em que pequenas partes ou unidades testáveis de um aplicativo são testadas individualmente e independentemente para funcionar corretamente. O escopo dessas unidades pode variar de funções, classes ou interfaces a serviços ou componentes completos. Os principais atributos são velocidade de execução, isolamento e capacidade de manutenção confortável. Para saber mais sobre o teste de unidade, consulte este guia sobre testes de unidade.

Representação simplificada de testes de unidade mostrando a entrada e a saída.

Teste de integração

Os testes de integração se concentram nas interações entre componentes ou sistemas. Em outras palavras, sobre quão bem eles funcionam 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 costumam ser chamados de testes de IU e esse nome explica a função deles ainda melhor. Esses testes interagem com a IU do aplicativo, incluindo a pilha completa, e testam o aplicativo de uma extremidade a outra.

Uma representação simplificada de testes completos que mostram um computador como um robô, analisando um fluxo de trabalho.

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

Testes visuais da IU

Uma subcategoria interessante de testes de IU são os testes visuais. Esses testes são estendidos de ponta a ponta e que oferecem uma maneira de verificar a saída visível de um aplicativo. Esse teste faz uma captura de tela após uma mudança e outra captura com o "status quo" (ou arquivo dourado) e, em seguida, fornece os resultados para 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 que não são explicitamente escritos em declarações.

Análise estática

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

Teste em todas as formas: como tudo isso funciona em conjunto?

Ao pesquisar respostas para todas essas perguntas, é possível encontrar uma solução possível em algumas analogias. Especificamente nas comunidades da Web e de teste, os desenvolvedores tendem a usar essas analogias para dar uma ideia de quantos testes você deve usar de qual tipo.

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

As cinco estratégias a seguir, retratadas na imagem, são as mais comuns:

  • Pirâmide de teste
  • Diamante de teste
  • Test Ice Cone (também conhecido como Test Pizza)
  • Teste o Honeycomb
  • Troféu de teste

É muita informação a ser processada. Qual estratégia de teste combinar 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 com mais detalhes e explicar como escolher a melhor opção para seu projeto. Não perca as novidades! 🔥