Glossário · Fundamentos de testes
Verificação e validação
Em inglês: Verification and validation
Também chamado de: V&V, verificação vs validação, diferença entre verificação e validação, verification vs validation
Definição
A verificação pergunta "estamos construindo o produto corretamente?" contra a especificação. A validação pergunta "estamos construindo o produto certo?" para o usuário.
Verificação e validação são duas checagens complementares, normalmente descritas com as palavras de Barry Boehm. A verificação checa se um produto de trabalho está de acordo com a sua especificação: estamos construindo o produto corretamente? A validação checa se o produto atende às necessidades reais dos seus usuários no ambiente em que será usado: estamos construindo o produto certo? Um sistema pode passar totalmente na verificação e mesmo assim falhar na validação, se a especificação estava errada.
Exemplo
Um requisito diz: “O botão de exportar gera um arquivo CSV com todos os pedidos.”
- Verificação: o time revisa o design, inspeciona o código e testa se clicar em Exportar produz um CSV corretamente formatado com todos os pedidos. Produz, então a verificação passa.
- Validação: o time financeiro tenta usar a funcionalidade e descobre que, na verdade, precisa dos pedidos filtrados por mês, com os impostos em uma coluna separada, e que o template de planilha dele espera ponto e vírgula como separador. A funcionalidade atende à especificação, mas não à necessidade. A validação falha.
A diferença em resumo
| Verificação | Validação | |
|---|---|---|
| Pergunta | Construindo o produto corretamente? | Construindo o produto certo? |
| Comparada com | Requisitos, design, padrões | Necessidades do usuário e uso pretendido |
| Atividades típicas | Revisões, walkthroughs, inspeções, análise estática, testes unitários, de integração e de sistema | Teste de aceitação do usuário, testes beta, estudos de usabilidade, demos, feedback de produção |
| Precisa de software rodando? | Nem sempre: revisões são verificação | Em geral sim, ou de um protótipo realista |
| Feita principalmente por | Desenvolvedores e QA | Usuários, clientes, product owners |
Técnicas estáticas, como revisões de requisitos e de código, são sempre verificação. A maior parte dos testes dinâmicos que o QA faz contra a especificação também é verificação. A validação envolve as pessoas para quem o produto é feito.
Por que isso importa
Times que focam apenas na verificação podem entregar um software que corresponde exatamente a um requisito falho. As práticas de shift-left ajudam nas duas frentes: revisar os critérios de aceite com os usuários logo no início é uma validação barata, e testes automatizados a cada commit são uma verificação contínua. Em setores regulados, como o de dispositivos médicos, V&V são atividades separadas e documentadas, e os auditores esperam evidências de cada uma.