QA · Leitura de 8 min

Os quatro níveis de teste e por que a ordem importa

Unitário, integração, sistema e aceitação não são a mesma coisa em tamanhos distintos: cada nível responde a um risco diferente. Pular um não economiza tempo, apenas o adia.

Os quatro níveis de teste são unitário, integração, sistema e aceitação, e cada um responde uma pergunta diferente: a peça funciona? as peças se encaixam? o produto completo funciona? é isto que o negócio pediu? Não são o mesmo teste em quatro tamanhos. São quatro perguntas que você não consegue responder no mesmo lugar, e por isso a ordem em que você as faz muda quanto cada erro custa a você.

O ISTQB, o corpo de conhecimento mais usado para certificar testadores, define esses níveis como uma sequência deliberada, não como uma lista de opções [1]. Cada nível pressupõe que o anterior já deu sua resposta. Quando você pula um, não elimina a pergunta dele: você a empurra para cima, onde respondê-la custa mais caro e chega mais tarde.

01 · as quatro perguntasO que cada nível examina e por que são distintos

Um nível de teste se define pelo objeto que examina e por quem o faz. Mudar de nível não é fazer "a mesma coisa, só que maior": é mudar a pergunta, o ambiente e, muitas vezes, a pessoa que julga o resultado.

Unitário. Examina a menor peça que faz sentido testar isolada, quase sempre uma função ou um método. Quem programa é quem a escreve, roda em milissegundos e não toca banco de dados nem rede. Sua pergunta é simples: dada esta entrada, a função devolve a saída correta? Tratamos esse nível a fundo no artigo sobre testes unitários; aqui basta lembrar que é a base e o mais barato de todos.

Integração. Examina o que acontece quando duas ou mais unidades trabalham juntas. Cada peça pode estar perfeita separadamente e mesmo assim o conjunto falha: um formato de data que uma envia e a outra não entende, um erro engolido em silêncio, um contrato mal presumido entre módulos. O teste unitário nunca vê esse erro porque, por definição, olha uma única peça. O detalhe de quando esse nível compensa está no artigo sobre testes de integração.

Sistema. Examina o produto completo, já montado, funcionando como uma coisa só num ambiente parecido com o real. Aqui se testa o fluxo inteiro de ponta a ponta e também o que nenhuma peça individual garante: que o sistema seja rápido, seguro e aguente carga. É o primeiro nível em que o objeto de teste é "o software", não "um pedaço de software".

Aceitação. Examina se o sistema serve para o que o negócio ou o usuário pediu. Muda a pergunta pela raiz: já não é "está bem construído?", mas "construímos o certo?". Quem julga é o cliente, o dono do produto ou o usuário final, não a equipe técnica. Um sistema pode passar pelos três níveis anteriores sem um único defeito e falhar aqui, porque resolvia o problema errado.

Os três primeiros níveis perguntam se o software está bem feito. O quarto pergunta se era o software certo. Não é a mesma pergunta.

Figura 1 · as quatro perguntas, da peça ao propósito
Unitário a peça funciona? · quem programa é quem escreve Integração as peças se encaixam? · contratos e formatos Sistema o produto completo funciona? · fluxo, carga, segurança Aceitação é o que o negócio pediu? · quem julga é o cliente
De baixo para cima, o objeto de teste cresce: de uma função a todo o produto, e de uma pergunta técnica a uma pergunta de negócio. Quem julga o resultado também muda conforme o nível.

02 · por que a ordem importaCada erro tem um nível onde custa menos capturá-lo

Existe uma regra que se repete na engenharia de software desde os anos setenta: o custo de corrigir um defeito cresce à medida que ele avança pelas fases do desenvolvimento. Um erro capturado por um teste unitário é corrigido em minutos, muitas vezes antes de sair do editor. O mesmo erro capturado na aceitação, ou pior, em produção, pode custar ordens de grandeza mais, porque é preciso rastreá-lo entre todas as peças montadas e às vezes refazer decisões já tomadas.

A ordem dos níveis não é burocracia: é uma estratégia para colocar cada rede o mais embaixo possível. O unitário caça erros de lógica numa função. A integração caça mal-entendidos entre módulos. O de sistema caça falhas que só aparecem com tudo montado. O de aceitação caça o erro mais caro de todos: ter construído o que não era. Cada rede captura o que a de baixo não consegue ver, e deixa passar o mínimo para a seguinte.

Por isso pular um nível não economiza tempo. Se você pula a integração, os erros de contrato entre módulos não desaparecem: reaparecem no teste de sistema, misturados com outros vinte problemas, muito mais difíceis de isolar. O trabalho que você não fez embaixo, você paga em cima, com juros.

Níveis não é o mesmo que tipos

Um erro comum é confundir os níveis de teste com os tipos de teste. O nível diz em que objeto você testa: uma peça, uma montagem, o sistema, o propósito. O tipo diz qual característica você examina: funcional, desempenho, segurança, usabilidade. São eixos distintos que se cruzam. Você pode fazer um teste de desempenho no nível de sistema, ou um teste funcional no nível unitário. A ISO/IEC 25010, o padrão que define as características de qualidade do software, vive nesse segundo eixo: descreve o que medir, não em que nível medir [2].

O trabalho que você não faz no nível de baixo não desaparece. Sobe de nível e fica mais caro de encontrar.

03 · como se encaixam na sua suíteDo modelo à prática sem virar dogmático

Os quatro níveis descrevem perguntas que precisam ser respondidas, mas não ditam quantos testes de cada um você deve ter. Essa proporção é ordenada por outra figura: a pirâmide de testes, que recomenda muitos testes baratos e rápidos embaixo e poucos caros e lentos em cima. Se os níveis são as perguntas, a pirâmide é o orçamento com o qual você as responde. Tratamos dela à parte no artigo sobre a pirâmide de testes.

Na prática, os níveis nem sempre correm em sequência estrita nem são executados pela mesma equipe. Num fluxo moderno, os unitários e muitos de integração rodam automáticos a cada mudança de código; os de sistema, num ambiente de pré-produção; e os de aceitação, com participação do negócio antes de dar sinal verde. O importante não é a cerimônia, mas que nenhuma das quatro perguntas fique sem resposta antes que o usuário a responda por você.

Figura 2 · onde capturar cada erro custa menos
Unitário Integração Sistema Aceitação Produção custo
O mesmo defeito custa pouco se um teste unitário o captura e muito se chega à produção. Cada nível é uma oportunidade de caçá-lo antes que fique caro. As alturas ilustram a tendência, não cifras exatas.

Visto assim, os quatro níveis deixam de parecer uma hierarquia burocrática e viram o que são: quatro filtros ordenados do pequeno ao grande e do técnico ao humano. Unitário para a peça, integração para o encaixe, sistema para o todo, aceitação para o propósito. Pular um não apaga a pergunta dele. Apenas decide quem vai respondê-la, quando e por quanto dinheiro. E quase sempre quem termina respondendo é o usuário, no pior momento possível.

Fontes

  1. International Software Testing Qualifications Board (ISTQB). Certified Tester Foundation Level (CTFL) Syllabus, v4.0 (2023). Seção sobre níveis de teste: componente, integração, sistema e aceitação. istqb.org.
  2. ISO/IEC 25010:2011. Systems and software engineering. Systems and software Quality Requirements and Evaluation (SQuaRE). System and software quality models. International Organization for Standardization. Define as características de qualidade, um eixo distinto do dos níveis de teste.
  3. Spillner, A., Linz, T. & Schaefer, H. (2014). Software Testing Foundations: A Study Guide for the Certified Tester Exam, 4.ª ed. Rocky Nook. Capítulo sobre níveis de teste e o modelo em V.

Aprenda mais sobre IA

Ver tudo Aprenda IA