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.
- 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
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.
Mais guias sobre testes, IA e desenvolvimento moderno
Gostou deste artigo? Escolha um tópico e vá direto para nossos tutoriais mais recentes.
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 →DevOpsVariá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 softwareExplicaçã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 testesZombando 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 softwareCobertura 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 SQLDELETE 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 SQLExibiçõ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 softwareInterface 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 softwarePython *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 softwareFunçõ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 artificialO 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 →DevOpsMonitoramento 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 →DevOpsDocker 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 testesTDD 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 softwareTeste 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 SQLValores 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 SQLInstruçã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 softwareO 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 softwareLoop 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 softwareGeradores 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 artificialO 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 →DevOpsImplantaçã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 →Desenvolvimento de softwareGit 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 softwareList 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 SQLSQL 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 →