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.
Todos nós já passamos por isso: o que é um meme de programação recorrente que acontece com muita frequência na vida real?
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.
Aplique isso ao desenvolvimento da Web: você criou alguns testes e talvez até atingiu 100% de cobertura, mas o aplicativo ainda vai precisar funcionar quando as outras partes forem implementadas. As unidades podem funcionar bem sozinhas, mas não em relação umas às outras. A criação de alguns testes é crucial, mas é apenas uma parte da configuração de teste ideal para seu projeto. O primeiro passo é determinar quais partes da qualidade do aplicativo você precisa garantir e como é possível conseguir isso.
Resumindo, você precisa de um plano antes de começar a programar o código de teste real. Para abordar o assunto de como testar na prática, vamos começar do zero e responder duas perguntas básicas:
- Como você quer fazer o teste?
- O que você quer testar?
Este artigo aborda os conceitos gerais 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, responderemos à segunda pergunta, combinaremos as respostas e encontraremos a estratégia de teste que funciona melhor para seu projeto. Vamos lá! 🙌
Comece com o básico: modos de teste gerais
Ao responder à pergunta sobre como testar, o primeiro ponto a ser esclarecido é muito abstrato. É melhor 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 o dividirão 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 forma mais comum são os testes exploratórios, em que o engenheiro investiga o aplicativo usando o conhecimento dele sobre o aplicativo em relação a um caminho ou uma 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 vai se concentrar principalmente nos testes automatizados. No entanto, não se concentre em apenas uma maneira de testar. Mesmo que a automação economize muito tempo e esforço, as pessoas e os testes manuais sempre desempenharão um papel vital. Em vez disso, a automação de testes deve liberar as pessoas para que elas 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, a automação ajuda você. ❤️
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 responder: você deveria saber como seu aplicativo funciona nos bastidores ou é melhor testar sem esse conhecimento? Dependendo da resposta, há dois procedimentos para derivar e selecionar casos de teste:
- Teste de caixa opaca (ou caixa preta). Ela é baseada na análise dos requisitos funcionais ou não funcionais de um componente ou sistema (especificações) sem considerar a estrutura interna dele.
- O teste sem caixa (ou caixa branca) é um procedimento que considera a estrutura interna da caixa. Em outras palavras, como seu aplicativo funciona nos bastidores.
Ambos os 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 tarde. 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", já decidiu fazer alguns testes manuais. No entanto, escolher e aplicar 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 seus projetos. Então, 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 de ponta a ponta é o terceiro importante a se considerar. Mas esses não são todos eles. Vamos analisar melhor.
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 de forma independente para funcionar corretamente. O escopo dessas unidades varia de funções, classes ou interfaces até serviços ou componentes completos. Seus principais atributos são velocidade de execução, isolamento e capacidade de manutenção confortável. Se você quiser saber mais sobre o teste de unidade, acesse este guia sobre testes de unidade (link em inglês).
Teste de integração
O teste de integração tem como foco as interações entre componentes ou sistemas. Em outras palavras, em quão bem eles funcionam juntos. Exemplos típicos de testes de integração são testes de API ou componente.
Testes de ponta a ponta
Esses testes são frequentemente chamados de testes de interface, e esse nome explica a função deles ainda melhor. Esses testes interagem com a IU do seu aplicativo, incluindo a pilha completa de aplicativos, e testam o aplicativo de uma extremidade à outra.
Se você se refere à teoria da garantia de qualidade, eles se assemelham a um teste de sistema. Esses testes simulam um usuário genuíno e as interações dele. Testes de ponta a ponta têm 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 adicional resulta em custos de manutenção mais altos.
Testes visuais da interface
Uma subcategoria interessante de testes de interface são os testes visuais. Eles são testes de ponta a ponta estendidos que oferecem um meio 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 com o "status quo" (ou arquivo dourado) e, em seguida, 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 escritos explicitamente em declarações.
Análise estática
Há mais uma coisa a introduzir aqui: a análise estática. Não é um tipo de teste no sentido do 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 seu 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 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 em conjunto?
Ao procurar respostas para todas essas perguntas, você pode 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.
As cinco estratégias a seguir, descritas nesta imagem, são as mais comuns:
- Pirâmide de teste
- Diamante de teste
- Teste de casquinha de gelo (também conhecida como Test Pizza)
- Honeycomb
- Troféu de teste
É muita informação a ser processada. Como escolher a melhor estratégia de teste com base em tudo isso? Não se preocupe, estamos aqui para ajudar. 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! 🔥