Teste de aceitação do usuário (UAT): processo, lista de verificação e exemplos reais

  1. Início
  2. Blog
  3. Teste de Software

Teste de software

Teste de aceitação do usuário (UAT): Processo, lista de verificação e exemplos reais

O software pode passar em todos os testes e ainda assim falhar nas pessoas que precisam dele. O UAT é a verificação final de que resolve o problema real do negócio. Saiba quem deve administrá-lo, como planejá-lo e quando assinar.

9 min de leitura
Teste de aceitação do usuário (UAT): processo, checklist e exemplos reais

Principais pontos

  • Testes de aceitação do usuário verificam se o software atende às necessidades reais do negócio, usando cenários reais.
  • Ele é administrado por usuários empresariais ou clientes, não pela equipe que desenvolveu o software.
  • O QA pergunta “funciona conforme especificado?”, enquanto o UAT pergunta “isso resolve o problema?”.
  • Combine os critérios de entrada, os critérios de saída e quem assina antes do início do UAT.

Certa vez, uma equipe entrega um sistema de despesas que passa em todos os testes técnicos. No primeiro dia, a equipa financeira descobre que não consegue lidar com reclamações em várias moedas, que constituem uma grande parte do seu trabalho. Nada estava “quebrado”, mas não era utilizável. Os testes de aceitação do usuário existem para detectar exatamente esse tipo de lacuna antes do lançamento.

Este guia aborda como o UAT difere de outros testes, como executá-lo passo a passo e como decidir quando você está pronto para o lançamento. O cenário acima e os exemplos abaixo são ilustrativos e o processo deve ser dimensionado para se adequar ao seu projeto.

O que é UAT?

O UAT geralmente é a fase final de testes antes do lançamento, onde os usuários pretendidos confirmam que o software pode fazer seu trabalho em condições realistas. Também é chamado de teste de usuário final ou teste de aceitação. Ele ocorre após o desenvolvimento e testes do sistema, quando se espera que o produto esteja estável.

Seu objetivo não é encontrar todos os bugs. Nesta fase, a maioria deles já deve ter desaparecido. O objetivo é a validação: construímos a coisa certa? Os testadores verificam se o produto corresponde às especificações. O UAT valida se a especificação e o produto realmente atendem à necessidade.

Teste UAT vs controle de qualidade

Aspecto Controle de qualidade ou teste de sistema UAT
Pergunta principal Funciona conforme especificado? Ele atende às necessidades do negócio?
Realizado por Testadores e engenheiros de controle de qualidade Usuários empresariais ou clientes
Tempo Durante e após o desenvolvimento Pouco antes do lançamento
Baseado em Requisitos e projetos Fluxos de trabalho de negócios reais
Foco Defeitos, casos extremos, integrações Usabilidade e adequação à finalidade
Conhecimento técnico Muitas vezes alto Não é necessário
Resultado Relatórios de bugs Aceitação ou rejeição

O UAT não substitui outros testes. Se os usuários continuarem encontrando bugs básicos, a compilação não estava pronta e você está desperdiçando seu tempo limitado. Esses problemas pertencem aos níveis de teste anteriores e aos testes de regressão.

Quem dirige o UAT?

Função Responsabilidade
Usuários finais Execute cenários e dê feedback
Proprietário do produto ou analista de negócios Define o escopo e escreve ou revisa cenários
Coordenador UAT ou líder de controle de qualidade Planeja as sessões, dá suporte aos testadores, rastreia os problemas
Desenvolvedores Corrija problemas e responda perguntas técnicas
Patrocinador de negócios Toma a decisão final de aprovação

Escolha testadores que realmente façam o trabalho hoje. Um manipulador de sinistros experiente identificará problemas que um gerente ou procurador nunca detectaria. Inclua uma gama de experiências, porque um novo funcionário muitas vezes revela etapas confusas que um especialista contorna sem perceber. E certifique-se de que seus gerentes liberem tempo para isso, pois o UAT não terá sucesso mesmo com uma carga de trabalho completa.

Tipos de UAT

Tipo O que verifica Exemplo
Aceitação comercial Atende às metas de negócios A equipe completa uma reivindicação real do início ao fim
Teste alfa Testes internos em um ambiente controlado A equipe testa um novo aplicativo antes de usuários externos
Teste beta Clientes reais em condições reais Uma prévia pública limitada
Aceitação do contrato Atende aos termos do contrato acordado Um cliente verifica um sistema entregue
Aceitação regulatória Atende às regras legais ou de conformidade Verificações de regras de saúde ou bancárias
Aceitação operacional Pronto para rodar em produção Backups, monitoramento e processos de suporte

O processo UAT de sete etapas

1. Defina escopo e metas

Decida o que está sendo aceito, o que está fora do escopo e quais resultados de negócios são importantes. Por exemplo: “A equipe financeira pode enviar, aprovar e pagar um relatório de despesas em qualquer moeda suportada.”

2. Combine os critérios de aceitação

Escreva em linguagem simples como é o sucesso, de preferência no início do projeto, e não na semana anterior ao lançamento. Critérios vagos levam a discussões mais tarde.

3. Escolha e informe os testadores

Selecione usuários reais, explique o propósito, mostre-lhes como registrar feedback e deixe claro que eles estão testando o software em vez de serem eles próprios testados. Muitas pessoas se preocupam em fazer algo errado.

4. Prepare o ambiente e os dados

O ambiente UAT deve assemelhar-se tanto quanto possível à produção. Use dados realistas, configure as funções de usuário corretas e verifique integrações como e-mail. Se você copiar dados de produção, primeiro oculte as informações pessoais. Execute um smoke test rápido, para que os testadores não cheguem e encontrem uma compilação quebrada.

5. Escreva cenários

Baseie-os em fluxos de trabalho reais, em vez de botões individuais. Eles deveriam ser lidos como o trabalho, não como o software. Nosso guia para caso de teste versus cenário de teste explica quantos detalhes você precisa.

6. Execute os testes e colete feedback

Faça sessões com alguém disponível para ajudar. Reúna os problemas em um só lugar, com capturas de tela. Reserve também algum tempo para exploração livre, já que as pessoas tentam coisas que os scripts nunca antecipam. Testes exploratórios oferecem técnicas úteis para isso.

7. Corrija, teste novamente e aprove

Faça a triagem do feedback, corrija o que for importante e peça aos mesmos usuários que confirmem as correções. Em seguida, registre uma decisão formal.

Um caso de teste UAT

Um caso de teste UAT deve ser fácil de ser seguido por alguém não técnico. Aqui está um exemplo de sistema de despesas:

ID:        UAT-012
Scenario:  Submit a foreign currency expense claim
User role: Sales employee
Before:    Logged in, with a USD receipt ready

Steps:
  1. Create a new expense claim
  2. Enter a client dinner of 80 USD and attach the receipt
  3. Submit the claim for approval

Expected:  The amount is converted to INR at the current rate
           The manager receives an approval request
           The claim shows as "Awaiting approval"

Result:    Pass / Fail
Comments:
Tester / Date:

Observe que ele descreve uma tarefa real, não detalhes técnicos, e deixa espaço para comentários. Esses comentários frequentemente acabam sendo a parte mais valiosa, como “isso funciona, mas eu nunca encontraria aquele botão”.

Dica: observe pelo menos um usuário fazer isso pessoalmente ou por chamada. As pessoas muitas vezes contornam softwares confusos e nunca os denunciam. Vê-los hesitar diz a você mais do que um “Pass” jamais dirá.

Critérios de entrada e saída

Critérios de entrada (pronto para começar) Critérios de saída (pronto para terminar)
O teste do sistema foi concluído Todos os cenários críticos foram executados
Nenhum bug crítico ou alto aberto Nenhum bug crítico aberto
Ambiente e dados estão prontos A taxa de aprovação acordada foi alcançada
Os cenários são revisados As questões restantes têm um plano acordado
Os testadores são informados e estão disponíveis O patrocinador comercial assinou

Eles se enquadram no ciclo de vida de teste de software mais amplo. Defina os números com antecedência com suas partes interessadas. “Decidiremos quando parecer certo” tende a levar a um sim apressado, motivado pelo prazo.

Lidando com feedback

O feedback do UAT é uma mistura de coisas e nem tudo é um bug. Classifique-o em categorias:

Tipo Exemplo Ação habitual
Defeito O total é calculado incorretamente Correção, com base na gravidade
Requisito perdido Várias moedas não são suportadas Corrija antes do lançamento ou planeje novamente
Problema de usabilidade Os usuários não conseguem encontrar o botão enviar Muitas vezes vale a pena consertar
Solicitação de alteração “Também poderia exportar para PDF?” Adicionar ao backlog
Problema de treinamento O recurso funciona, mas foi mal compreendido Guias de atualização

Use regras claras sobre o que bloqueia uma liberação, conforme descrito em gravidade versus prioridade. E responda a cada item, incluindo aqueles que você recusa. As pessoas param de dar feedback se ele parece desaparecer. Nosso guia sobre como escrever um relatório de bug pode ajudar os testadores a descrever os problemas com clareza.

Lista de verificação do UAT

Antes do UAT

  • O escopo e os critérios de aceitação são acordados por escrito
  • Os testes de sistema e de regressão foram concluídos
  • Os testadores são escolhidos, informados e recebem tempo
  • Ambiente, contas e dados realistas estão prontos
  • Os dados pessoais em cópias foram mascarados
  • Os cenários são revisados pela empresa
  • Um local para registrar problemas está configurado
  • O proprietário da assinatura é nomeado

Durante o UAT

  • Um contato de suporte está disponível
  • Os problemas são triados todos os dias
  • O progresso é compartilhado com as partes interessadas
  • As correções são implantadas e testadas novamente de maneira controlada

Depois do UAT

  • Os critérios de saída foram verificados
  • Os problemas conhecidos são documentados, com os proprietários
  • A aprovação formal é registrada
  • As notas de treinamento e lançamento foram atualizadas
  • Uma breve retrospectiva foi realizada

UAT em equipes ágeis

O UAT tradicional surge como uma grande fase no final, onde uma surpresa custa caro. As equipes ágeis encurtam esse ciclo. Os proprietários do produto analisam cada história em relação aos seus critérios de aceitação durante o sprint, e os usuários veem o software funcionando nas revisões do sprint. Muitas equipes ainda executam um UAT focado antes de um lançamento principal, principalmente quando vários recursos são combinados em um único fluxo de trabalho.

Com lançamentos frequentes, técnicas como sinalizadores de recursos e implantações canário permitem que usuários reais experimentem novos trabalhos gradualmente. Observe que estes complementam os testes de aceitação, mas não os substituem automaticamente, especialmente em setores regulamentados que precisam de um registro formal.

Erros comuns

  • Tratar isso como uma formalidade. Uma aprovação sem uso real não protege ninguém.
  • Usando testadores errados. Os desenvolvedores e o controle de qualidade têm muito conhecimento do sistema para representar os usuários.
  • Começando com uma compilação instável. Os testadores perdem a confiança e o interesse rapidamente.
  • Deixando para o último minuto. Assim, não há tempo para consertar o que você aprendeu.
  • Uso de dados irrealistas. Os dados de teste raramente apresentam os casos complicados que o trabalho real apresenta.
  • Deixar o escopo crescer. Trate novas ideias como solicitações de mudança, a menos que sejam verdadeiros bloqueadores.

Considerações finais

O UAT é sua última chance de saber, antes do lançamento, se o software realmente ajuda as pessoas que irão utilizá-lo. Planeje desde o início de um projeto, recrute usuários reais e chegue a um acordo sobre como será o sucesso. Para seu próximo lançamento, tente uma mudança simples: sente-se com um usuário durante um cenário real e não diga nada enquanto ele trabalha.

Perguntas frequentes

O que é teste de aceitação do usuário em palavras simples?

É a verificação final onde usuários reais experimentam o software com tarefas realistas para confirmar se ele atende às suas necessidades, antes de ser lançado.

Quem é o responsável pelo UAT?

Usuários empresariais ou clientes executam os testes. Um proprietário do produto ou líder de controle de qualidade geralmente coordena, e um patrocinador comercial normalmente toma a decisão final de aprovação.

Qual é a diferença entre UAT e teste de sistema?

O teste do sistema verifica se o software funciona conforme especificado e é feito por testadores. O UAT verifica se atende às necessidades do negócio e é feito pelos usuários.

Quando acontece o UAT?

Geralmente após o teste do sistema e antes do lançamento da produção, quando o software estiver estável. As equipes ágeis também podem executar verificações de aceitação menores em cada sprint.

O UAT pode ser automatizado?

Partes disso, como verificações repetidas de fluxos de trabalho de negócios. No entanto, julgar se o software é útil e adequado ao propósito ainda precisa de pessoas reais.

Continue aprendendo

Trabalhe com Stack Quora

Precisa de ajuda com testes, WordPress ou SEO?

Ajudamos as equipes a fornecer software melhor e a expandir seus sites. Conte-nos no que você está trabalhando e sugeriremos um próximo passo claro.

Continue lendo

Mais guias sobre testes, IA e desenvolvimento moderno

Gostou deste artigo? Escolha um tópico e vá direto para nossos tutoriais mais recentes.

Inteligência artificial

Explicação das alucinações de IA: por que os modelos de linguagem inventam as coisas e como reduzi-las

Explicação das alucinações de IA: o que são, por que os modelos de linguagem as produzem, tipos comuns, como reduzi-las com aterramento e instruções…

Leia o artigo →
DevOps

Variáveis de ambiente explicadas: arquivos .env, segredos e configuração bem feitos

Variáveis de ambiente explicadas com exemplos de Python que executamos: leitura e configuração, por que cada valor é uma string, arquivos .env, hera…

Leia o artigo →
Desenvolvimento de software

Explicação da limitação de taxa de API: algoritmos, cabeçalhos e tratamento de erros 429

Limitação de taxa de API explicada com uma simulação que executamos: token bucket, janela fixa, janela deslizante, 429 respostas, cabeçalhos de limi…

Leia o artigo →
Automação de testes

Zombando em Python: unittest.mock, patch e os erros que fazem os testes mentirem

Zombaria em Python com unittest.mock, testado: Mock e return_value, side_effect, patch onde um nome é usado, especificação e autospec, zombaria de d…

Leia o artigo →
Teste de software

Cobertura de código explicada: cobertura de linha versus filial e o que 100% realmente significa

Cobertura de código explicada com uma execução cobertura.py real: cobertura de linha, ramal e condição, leitura de um relatório, por que 100% de cob…

Leia o artigo →
Bancos de dados e SQL

DELETE vs TRUNCATE vs DROP em SQL: diferenças, reversão e quando usar cada um

DELETE vs TRUNCATE vs DROP explicado com SQL testado: o que cada um remove, rollback, aciona, redefinição de identidade, velocidade e como PostgreSQ…

Leia o artigo →
Bancos de dados e SQL

Exibições SQL explicadas: crie, use e evite as armadilhas, com exemplos

Visualizações SQL explicadas com consultas que executamos: criação de uma visualização, resultados ao vivo, ocultação de colunas, desempenho, visual…

Leia o artigo →
Desenvolvimento de software

Interface TypeScript vs tipo: diferenças reais, testadas com o compilador

Interface TypeScript versus tipo, verificada com o compilador real: o que ambos podem fazer, o que apenas um pode fazer, mesclagem de declarações, e…

Leia o artigo →
Desenvolvimento de software

Python *args e **kwargs explicados: funções flexíveis com exemplos claros

Python *args e **kwargs explicados com o código que executamos: empacotamento e descompactação, ordem dos parâmetros, argumentos somente de palavras…

Leia o artigo →
Desenvolvimento de software

Funções Python Lambda: sintaxe, usos reais e quando não usá-los

Funções lambda do Python explicadas com o código que executamos: sintaxe, classificação com chave, mapa e filtro, fechamentos, armadilha de ligação …

Leia o artigo →
Inteligência artificial

O que são agentes de IA? Como eles funcionam, com um loop de agente simples que você pode executar

O que são agentes de IA? Um guia simples para o loop do agente, ferramentas, memória e proteções, com um pequeno loop Python que executamos, riscos …

Leia o artigo →
DevOps

Monitoramento versus observabilidade: a verdadeira diferença, com logs, métricas e rastreamentos

Explicação do monitoramento versus observabilidade: falhas conhecidas e desconhecidas, logs, métricas e rastreamentos, um passo a passo do incidente…

Leia o artigo →
DevOps

Docker Volumes vs Bind Mounts: persista os dados do contêiner da maneira certa

Volumes Docker versus montagens de ligação explicadas: por que os dados do contêiner desaparecem, volumes nomeados, montagens de ligação, tmpfs, exe…

Leia o artigo →
Automação de testes

TDD vs BDD: principais diferenças, um recurso criado de ambas as maneiras e quando usar cada um

TDD vs BDD explicado com um recurso de desconto construído em ambos os sentidos: refatoração vermelho-verde com o código que executamos, cenários da…

Leia o artigo →
Teste de software

Teste de aceitação do usuário (UAT): processo, lista de verificação e exemplos reais

Explicação do teste de aceitação do usuário: quem o executa, como ele difere do controle de qualidade, um processo de sete etapas, um modelo de caso…

Leia o artigo →
Bancos de dados e SQL

Valores SQL NULL explicados: IS NULL, COALESCE, NULLIF e as armadilhas a serem evitadas

Valores SQL NULL explicados com consultas que executamos: lógica de três valores, IS NULL, COALESCE, NULLIF, como agregações, junções e classificaçã…

Leia o artigo →
Bancos de dados e SQL

Instrução SQL CASE WHEN: sintaxe, exemplos reais e erros comuns

SQL CASE WHEN explicado com consultas que executamos: formulários simples e pesquisados, ordem de condição, pivôs com SUM, truques COUNT, classifica…

Leia o artigo →
Desenvolvimento de software

O que é JWT? JSON Web Tokens explicados com um exemplo prático

O que é JWT? JSON Web Tokens explicados: as três partes, um token construído e adulterado no código que executamos, JWT vs sessões, armazenamento, t…

Leia o artigo →
Desenvolvimento de software

Loop de eventos JavaScript explicado: pilha de chamadas, microtarefas e temporizadores com exemplos

O loop de eventos JavaScript explicado com o código que executamos: pilha de chamadas, filas de tarefas e microtarefas, por que setTimeout 0 não é i…

Leia o artigo →
Desenvolvimento de software

Geradores Python e rendimento explicado: economize memória com exemplos reais

Geradores Python e rendimento explicados com o código que executamos: como eles pausam e reiniciam, medem economia de memória, pipelines, sequências…

Leia o artigo →
Inteligência artificial

O que são incorporações? Similaridade de vetores e cossenos explicada de forma simples

O que são incorporações? Um guia em linguagem simples para vetores, similaridade de cossenos e pesquisa semântica, com um pequeno exemplo que execut…

Leia o artigo →
DevOps

Implantação azul-verde vs canário: diferenças, compensações e como escolher

Explicação da implantação azul-verde versus canário: como cada um funciona, custo, risco e reversão, agrupamento estável de usuários que testamos, m…

Leia o artigo →
Automação de testes

Testes instáveis: o que os causa e como corrigi-los para sempre

Testes instáveis explicados com demonstrações que executamos: as principais causas, como confirmar e diagnosticar uma, soluções adequadas para tempo…

Leia o artigo →
Teste de software

Teste de carga versus teste de estresse: diferenças, métricas e exemplos k6

Teste de carga versus teste de estresse explicado: o que cada um prova, testes de pico e absorção, as métricas que importam, por que as médias engan…

Leia o artigo →
Teste de software

Caso de teste versus cenário de teste: principais diferenças, exemplos e quando usar cada um

Caso de teste vs cenário de teste explicado: definições claras, uma tabela lado a lado, um recurso de redefinição de senha retirado de cenários para…

Leia o artigo →
Bancos de dados e SQL

Otimização de consultas SQL: leia planos de execução e corrija consultas lentas, com intervalos

Otimização de consulta SQL testada em um milhão de linhas: leia planos de execução, adicione os índices corretos, corrija filtros não sargáveis, use…

Leia o artigo →
Bancos de dados e SQL

SQL UNION vs UNION ALL: diferenças, exemplos e desempenho testado

SQL UNION vs UNION ALL explicado com consultas que executamos: duplicatas, as regras que ambos seguem, um bug de dados real, desempenho medido, INTE…

Leia o artigo →
Desenvolvimento de software

Tutorial da API JavaScript Fetch: GET, POST, tratamento de erros e tempos limite

Um tutorial da API JavaScript Fetch testado em um servidor local: GET e POST, por que 404 não lança, um auxiliar reutilizável, strings de consulta, …

Leia o artigo →
Desenvolvimento de software

Manipulação de arquivos Python: leitura, gravação, CSV, JSON e pathlib com exemplos

Manipulação de arquivos Python explicada com código que executamos: modos abertos, com, leitura de arquivos grandes, CSV, JSON, pathlib, arquivos bi…

Leia o artigo →
Desenvolvimento de software

Classes e objetos Python: tutorial OOP com exemplos reais

Classes e objetos Python explicados com código que executamos: __init__, métodos, atributos de classe vs instância, herança, propriedades, métodos d…

Leia o artigo →
Inteligência artificial

O que é um modelo de linguagem grande? Como funcionam os LLMs, explicado sem exageros

O que é um modelo de linguagem grande? LLMs explicados em linguagem simples: tokens, incorporações, atenção, treinamento, temperatura e janelas de c…

Leia o artigo →
DevOps

Comandos Linux para iniciantes: o guia essencial do terminal com exemplos

Comandos Linux para iniciantes, agrupados por tarefa: navegação, arquivos, visualização de logs, grep, pipes, permissões, processos e arquivos, com …

Leia o artigo →
Automação de testes

Selenium vs Playwright: principais diferenças, código comparado e qual escolher

Selenium vs Playwright comparado: arquitetura, espera, suporte a navegador e linguagem, depuração, o mesmo teste em ambas as ferramentas, conselhos …

Leia o artigo →
Teste de software

Particionamento de equivalência: técnica de design de teste explicada com exemplos resolvidos

Explicação do particionamento de equivalência: como encontrar partições válidas e inválidas, exemplos resolvidos para idades, senhas e cupons, teste…

Leia o artigo →
Teste de software

Gravidade vs Prioridade em Testes de Software: Diferenças, Matriz e Exemplos Reais

Explicação da gravidade versus prioridade em testes de software: definições claras, uma matriz de quatro vias com exemplos, escalas de nível, quem d…

Leia o artigo →
Bancos de dados e SQL

Tutorial de subconsultas SQL: tipos, subconsultas correlacionadas e EXISTS com exemplos

Um tutorial de subconsultas SQL com consultas que executamos: subconsultas escalares, IN, FROM e SELECT, subconsultas correlacionadas, EXISTS, a arm…

Leia o artigo →
Bancos de dados e SQL

Transações SQL e ACID explicados: COMMIT, ROLLBACK e níveis de isolamento

Transações SQL e ACID explicadas com uma transferência bancária que executamos: COMMIT, ROLLBACK, savepoints, locks, níveis de isolamento, leituras …

Leia o artigo →
Desenvolvimento de software

Git merge vs rebase: diferenças, exemplos e quando usar cada um

Git merge vs rebase explicado com saída real do log, uma tabela comparativa, a regra de ouro do rebase e um fluxo de trabalho seguro para equipes.

Leia o artigo →
Desenvolvimento de software

List comprehension em Python: sintaxe, exemplos e quando evitar

List comprehension em Python explicada: sintaxe, filtros, if-else, laços aninhados, tempos medidos e quando um laço for comum é a melhor escolha.

Leia o artigo →
Bancos de dados e SQL

SQL JOIN explicado com exemplos (Inner, Left, Right, Full)

Entenda os joins SQL passo a passo com tabelas e consultas de exemplo: INNER, LEFT, RIGHT, FULL, CROSS e SELF, além de erros comuns e dicas de desem…

Leia o artigo →