QA · Leitura de 8 min

Testes de aceitação (UAT): quando quem decide não é o testador

O código pode passar em tudo e ainda assim não ser aceitável. O UAT é o momento em que o negócio, não o QA, diz 'isto serve'. E quase sempre é feito mal.

Uma equipe entrega um módulo de faturamento. Os testes unitários passam, a integração passa, o end-to-end passa. Verde por toda parte. Fazem o deploy numa sexta-feira. Na segunda a contadora abre, dá três cliques e diz: "isto não me serve, não é assim que faturamos". Ninguém escreveu uma única linha de código ruim. E mesmo assim o software falhou.

Esse vazio tem nome. Chama-se aceitação. E o teste que o cobre, o UAT (User Acceptance Testing, teste de aceitação do usuário), é o que mais se pula, mais se improvisa e pior se entende de toda a cadeia de qualidade. A resposta curta: o UAT não verifica se o software está bem construído, verifica se é o software correto para quem vai usá-lo. São duas perguntas distintas e quase ninguém as separa.

01 · o que éA aceitação responde a outra pergunta

Há uma frase antiga na qualidade de software que resume tudo: a verificação pergunta "construímos o produto bem?" e a validação pergunta "construímos o produto correto?". O UAT vive do lado da validação. Não lhe importa se o algoritmo é elegante nem se a cobertura chega a noventa por cento. Importa-lhe uma só coisa: se a pessoa que pediu isto consegue fazer o seu trabalho com aquilo que você entregou.

O padrão de testing ISTQB coloca a aceitação como o último dos quatro níveis de teste, depois dos de componente, integração e sistema. E marca uma diferença que na prática é ignorada: os níveis anteriores são executados pela equipe técnica contra especificações técnicas. A aceitação é executada, ou aprovada, por quem vai conviver com o produto. O testador prepara o terreno. Quem decide não é o testador.

Verde em toda a suíte significa que o código faz o que dissemos. Não significa que dissemos o correto.

Isto não é um tecnicismo. É a razão pela qual um software impecável pode ser um fracasso. A contadora do exemplo não encontrou um bug. Encontrou uma funcionalidade que resolve um problema que ela não tem, e que não resolve o que ela de fato tem. Nenhum nível técnico de teste teria capturado isso, porque todos partem da mesma especificação equivocada.

Figura 1 · onde vive a aceitação entre os níveis de teste
Aceitação (UAT) executa ou aprova: o negócio / usuário Sistema executa: QA, contra a especificação Integração executa: desenvolvimento / QA Componente executa: desenvolvimento De baixo para cima: cada nível confia menos no detalhe técnico e mais no valor de uso.
Os três níveis inferiores compartilham uma premissa: que a especificação está correta. A aceitação é o único nível que põe essa premissa à prova, e por isso é executada por gente diferente.

02 · o erro"Eu gosto" não é um critério

Aqui está o pecado original de quase todo UAT. Convoca-se um usuário, senta-se ele diante do sistema e pede-se que "verifique se está bom". O usuário navega um tempo, faz o que lhe ocorre, e ao final emite um veredicto: "gosto" ou "não me convence". Isso não é um teste de aceitação. É uma pesquisa de opinião disfarçada.

O problema de "eu gosto" é que não é repetível, não é discutível e não é responsabilidade de ninguém. Se o usuário tem um bom dia, aprova. Se tem um mau dia, rejeita. E quando em produção aparece um problema, ninguém consegue apontar o que exatamente foi aceito, porque nunca foi escrito. A aceitação virou um estado de ânimo.

A alternativa tem um nome que soa burocrático mas salva projetos: critérios de aceitação. São condições concretas, verificáveis e acordadas antes de construir, que definem o que significa algo estar terminado e ser aceitável. Não "a fatura fica bem", mas "uma fatura com três itens, dois com IVA e um isento, calcula o total correto e o mostra em pesos com duas casas decimais". Isso pode ser testado. Isso passa ou não passa. Isso não depende do humor.

A regra de Qirava sobre critérios

Um critério de aceitação que você não consiga converter num passo verificável com um resultado esperado não é um critério: é um desejo. Se, ao lê-lo, duas pessoas puderem discutir se foi cumprido, ainda não está terminado. Reescreva-o até que o veredicto seja mecânico, não diplomático.

Há um formato que ajuda a não divagar, popularizado pelo desenvolvimento guiado por comportamento: dado um contexto, quando ocorre uma ação, então se espera um resultado. "Dado um cliente sem limite de crédito, quando tenta faturar a crédito, então o sistema o bloqueia e mostra a mensagem X." Não é preciso a cerimônia completa. É preciso a disciplina de escrever o resultado esperado antes, não de improvisá-lo olhando para a tela.

Critério mensurável: passa ou não passa. Gosto pessoal: depende de quem e de quando. Só um dos dois pode ser assinado.

03 · como se fazAceitação que se pode assinar

Um UAT saudável tem três momentos, e nenhum deles é "o usuário brinca um pouco". O primeiro ocorre antes de escrever código: acordam-se os critérios de aceitação com quem vai decidir. Se o negócio não consegue dizer de antemão o que o faria aceitar, a equipe está construindo às cegas e o UAT só vai descobrir o desacordo tarde e caro.

O segundo momento é a execução. O usuário, ou o QA acompanhando o usuário, percorre casos reais de negócio contra esses critérios já escritos. Não casos técnicos de borda: casos que a pessoa vive de verdade. A contadora fatura o tipo de fatura que fatura todos os dias, com os dados estranhos que ela conhece e a equipe não. Esse conhecimento do domínio é justamente o que o UAT aporta e nenhum outro nível de teste tem.

O terceiro momento é o veredicto, e este é o que quase ninguém formaliza. A aceitação termina com uma decisão rastreável: aceita-se, aceita-se com ressalvas listadas, ou rejeita-se com motivos concretos ligados a critérios. Essa decisão tem um dono com nome. Em muitos marcos contratuais isto é literalmente um teste de aceitação de contrato: o que for assinado define se o fornecedor cumpriu. Não é um detalhe de processo. É onde o risco muda de mãos.

Figura 2 · dois veredictos da mesma sessão
Veredicto por gosto "Não me convence." Não repetível. Não discutível. Sem dono. Reabre o debate cada vez. Veredicto por critério Critério 4 falha: IVA errado em item isento. Repetível. Com dono e data. Fecha o debate.
A mesma insatisfação, dois resultados. À esquerda ninguém sabe o que consertar. À direita há um defeito concreto, um critério que o aponta e um responsável. Só o segundo pode ser gerenciado.

04 · onde encaixaO UAT não substitui o QA, o fecha

Um mal-entendido frequente: acreditar que se há UAT, o testing técnico sobra, ou vice-versa. Os dois testam coisas distintas. Os testes unitários, de integração e de sistema garantem que o produto está bem construído. A aceitação garante que é o produto correto. Pular os primeiros leva você a um produto correto cheio de defeitos. Pular o segundo, a um produto impecável que ninguém queria.

Por isso o UAT é a última porta, não a única. Chega quando o técnico já está verde, e mesmo assim pode dizer que não. Esse "não" no final é incômodo, mas é mais barato que o do cliente em produção.

Uma só ideia para levar: a aceitação não se mede em cobertura, mede-se em decisões que alguém pode assinar. No dia em que o seu UAT produzir um documento onde um responsável diz "aceito estes critérios e rejeito estes outros, por estas razões", você deixou de fazer teatro e começou a fazer aceitação. E na segunda de manhã, quando a contadora abrir o módulo, você já saberá a resposta antes de ela falar.

Fontes

  1. International Software Testing Qualifications Board (ISTQB). Certified Tester Foundation Level (CTFL) Syllabus, v4.0 (2023). Seção sobre níveis de teste e teste de aceitação (acceptance testing), incluindo a aceitação de usuário e a aceitação contratual. istqb.org.
  2. ISO/IEC/IEEE 29119-1:2022. Software and systems engineering. Software testing. Part 1: General concepts. Define os conceitos de verificação, validação e níveis de teste, com a aceitação como nível focado na aptidão para o uso.
  3. ISO/IEC 25010:2011. Systems and software engineering. SQuaRE. System and software quality models. Modelo de qualidade em uso, base para expressar critérios de aceitação em termos de adequação funcional e satisfação do usuário.
  4. Crispin, L. & Gregory, J. (2009). Agile Testing: A Practical Guide for Testers and Agile Teams. Addison-Wesley. Capítulos sobre critérios de aceitação acordados com o negócio e seu papel na definição de terminado.

Aprenda mais sobre IA

Ver tudo Aprenda IA