QA Learning / Fundamentos

Módulo 2: Tipos e níveis de teste

O vocabulário que o time usa todo dia, e o mapa de onde cada trilha deste curso se encaixa

Aquecimento: 2 perguntas do Módulo 1

1. O usuário vê o preço errado na tela. Isso é erro, defeito ou falha?
Falha: é o defeito se manifestando durante a execução. O defeito é a linha de código errada; o erro foi o engano humano que a escreveu.

2. Por que testar cedo custa menos?
Porque o custo de corrigir cresce a cada etapa: uma pergunta no refinamento custa cinco minutos; o mesmo problema em produção custa investigação, correção, nova entrega e cliente insatisfeito.

Duas perguntas diferentes: em que nível e de que tipo

Quando alguém fala "teste de integração" e outra pessoa fala "teste de performance", elas não estão falando de coisas do mesmo tipo. São dois eixos independentes:

  • Nível: o quanto do sistema está sendo testado de uma vez, uma função, dois componentes conversando, o sistema inteiro.
  • Tipo: que característica você está investigando: funciona? é rápido? é seguro? é usável?

Dá pra ter teste de performance no nível de componente e no nível de sistema. Dá pra ter teste funcional em todos os níveis. Misturar os dois eixos é a confusão mais comum de quem está começando.

Os quatro níveis

1. Unitário (unit)

Testa a menor peça isolada: uma função, uma classe. Sem banco, sem rede, sem tela. Roda em milissegundos. Normalmente escrito por quem desenvolve.
Exemplo: a função calcular_desconto(100, "VIP") devolve 85?

2. Integração

Testa duas ou mais peças conversando: o código e o banco, o serviço e a API de pagamento, dois microsserviços. É aqui que aparecem os defeitos que o teste unitário nunca acha: contrato trocado, campo com nome diferente, transação que não fecha.
Exemplo: ao salvar um pedido, ele realmente aparece na tabela pedidos com o valor_total certo?

3. Sistema

O sistema inteiro montado, testado de ponta a ponta, como um usuário usaria. É o nível onde mais gente pensa quando ouve "teste".
Exemplo: entrar no site, buscar um produto, adicionar ao carrinho, pagar e receber o e-mail de confirmação.

4. Aceite (UAT)

Confirma que o que foi construído atende a necessidade de quem pediu. Quem conduz muitas vezes é a área de negócio, não o time técnico. Aqui a pergunta é de validação (Módulo 1), não de verificação.
Exemplo: o time comercial consegue fechar uma venda de ponta a ponta com o novo fluxo, do jeito que trabalha?

Cuidado com o vocabulário do seu time

"Teste de integração" significa coisas diferentes em empresas diferentes: em algumas é "código + banco", em outras é "todos os serviços de pé". "E2E" às vezes quer dizer teste de sistema, às vezes teste via interface. Não brigue pelo nome: pergunte o que exatamente sobe quando aquele teste roda. É a resposta que importa.

Tipos: funcional e não-funcional

Funcional: o sistema faz o que deveria fazer? É a maior parte do trabalho e o foco das trilhas de SQL, API e pytest deste curso.

Não-funcional: como ele faz. Os principais:

TipoPerguntaExemplo de defeito
Performance / cargaaguenta quanta gente, e em quanto tempo responde?a busca leva 8s quando há 200 usuários simultâneos
Segurançadá pra acessar o que não deveria?trocando o id na URL, vejo o pedido de outro cliente
Usabilidadea pessoa consegue usar sem sofrer?a mensagem de erro não diz qual campo está errado
Compatibilidadefunciona nos navegadores e aparelhos que importam?o botão de pagar fica fora da tela no celular
Acessibilidadefunciona pra quem usa leitor de tela, teclado, alto contraste?o campo não tem rótulo associado; o leitor de tela lê "editar texto"
Confiabilidadese recupera quando algo cai?o pedido some se a API de pagamento demorar

Na prática: defeito não-funcional costuma ser mais caro e mais difícil de corrigir tarde, porque mexe em arquitetura. É mais um motivo pra perguntar sobre eles cedo: "quantos usuários simultâneos a gente espera?" é pergunta de refinamento, não de véspera de entrega.

Caixa-preta, caixa-branca

  • Caixa-preta: você testa pela entrada e pela saída, sem olhar o código. É o que o Módulo 3 ensina (partição de equivalência, valor limite, tabela de decisão). Serve pra qualquer nível.
  • Caixa-branca: você usa o código como guia: quais ramos do if foram executados, quais linhas nunca rodaram. É o mundo da cobertura de código.
  • Caixa-cinza: o meio do caminho, e o que mais se parece com o trabalho real de QA: você não escreveu o código, mas sabe que existe um banco por trás e vai conferir lá o que a tela não mostra. É exatamente o que você faz nas trilhas de SQL e de API deste curso.

Cobertura de código alta não significa bem testado: dá pra executar 100% das linhas sem verificar nenhum resultado. Cobertura mede o que foi executado, não o que foi verificado.

Testes que você vai ouvir o time citar

NomeO que éQuando roda
Smokeum punhado de casos que provam que o básico está de pé (login abre, home carrega)logo depois de subir uma versão, antes de gastar tempo com o resto
Regressãorodar de novo o que já funcionava, pra ver se a mudança quebrou algoa cada entrega, é o principal candidato a ser automatizado
Reteste / confirmaçãotestar de novo só o bug corrigido, seguindo os passos do relatórioquando um defeito volta como "resolvido"
Sanitychecagem rápida e focada numa área específica que acabou de mudarcorreção pontual, sem tempo pra regressão completa

Reteste ≠ regressão. Reteste confirma que aquele bug morreu. Regressão confirma que a correção não matou outra coisa. Os dois são necessários, e é comum ver time fazer só o primeiro.

A pirâmide de testes

            /\            poucos, lentos, caros de manter
           /  \           E2E / interface — o fluxo inteiro pelo navegador
          /____\
         /      \         alguns, médios
        /        \        INTEGRAÇÃO — código + banco, serviço + API
       /__________\
      /            \      muitos, rápidos, baratos
     /              \     UNITÁRIO — funções isoladas, milissegundos
    /________________\

A ideia: quanto mais alto, mais caro e mais frágil o teste. Então concentre volume embaixo e use o topo com parcimônia, só pros fluxos que realmente importam (o do dinheiro, normalmente).

O anti-padrão é a casquinha de sorvete, pirâmide invertida: quase nada de unitário, muito teste de interface, e uma bola gigante de teste manual em cima. O sintoma é conhecido: a suíte demora 2 horas, falha sozinha metade das vezes, e ninguém confia no vermelho.

A pirâmide é uma heurística, não uma lei

Ela nasceu num contexto específico (aplicações com muita lógica própria). Num sistema que é basicamente cola entre serviços de terceiros, quase toda a lógica está nas bordas, e aí o teste de integração é que deve pesar. Volte ao princípio 6 do Módulo 1: depende do contexto.

Manual × automatizado: quando vale automatizar

Automação não é sempre melhor. Ela troca tempo agora por tempo depois, e cobra manutenção. Vale quando:

  • o teste vai rodar muitas vezes (regressão, a cada entrega);
  • o resultado é objetivo (dá pra escrever um assert);
  • o cenário é estável: automatizar tela que muda toda semana é jogar trabalho fora;
  • fazer na mão é lento ou chato o bastante pra você acabar pulando.

E não vale quando o julgamento é humano: "essa tela está confusa?", "esse texto soa agressivo?", "o fluxo faz sentido?". Isso é trabalho de pessoa, e é onde o teste exploratório (Módulo 4) brilha.

O mapa: onde cada trilha deste curso se encaixa

TrilhaNívelTipoO que você vai fazer
SQL / PostgreSQLintegração (dados)funcionalconferir no banco o que a tela esconde; achar dado que viola a regra de negócio
Teste de APIintegração / sistemafuncional + contratostatus, corpo da resposta, e cruzar o que a API devolve com o que está no banco
pytestintegraçãofuncionaltransformar aquelas verificações em teste automatizado de regressão
k6sistemanão-funcional (performance)medir tempo de resposta e taxa de erro sob carga
CI/CDn/ainfraestrutura de testefazer tudo isso rodar sozinho a cada mudança, e reprovar o build

Guarde esta tabela. Numa entrevista, "o que você já testou?" é uma pergunta que se responde muito melhor com nível e tipo do que com nome de ferramenta.

Olhar de QA

Ao pegar uma história nova, faça a varredura dos tipos como quem passa um pente: funcional, performance, segurança, usabilidade, compatibilidade, acessibilidade. Você não vai testar todos, mas ter pensado em todos e ter decidido conscientemente pular quatro é diferente de nem ter lembrado que existiam. Essa varredura de 2 minutos é onde nascem as melhores perguntas de refinamento.

Terminou este módulo? Marque: o ✓ aparece no índice da trilha e a barra de progresso anda no começo do site. Fica salvo só no seu navegador.