Questão de Engenharia de Software — Teste de Software — INSTITUTO AOCP 2024
Engenharia de Software›Teste de Software
Código
qg263138
Banca
INSTITUTO AOCP
Órgão
UFS
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação - Classe E
Assinale a alternativa que melhor diferencia "Validação" e "Verificação" no contexto de desenvolvimento de software.
AValidação e Verificação são termos intercambiáveis que significam garantir que o software está livre de defeitos.
BVerificação refere-se a assegurar que o software atende aos requisitos funcionais, enquanto Validação foca nos requisitos não funcionais.
CValidação é o processo de garantir que o software atende às necessidades e requisitos do usuário, enquanto Verificação é o processo de assegurar que o software foi implementado corretamente.
DVerificação é o processo de testar o produto final, enquanto Validação é o processo de revisar o código-fonte.
EValidação refere-se apenas aos testes de unidade, enquanto Verificação foca nos testes de integração.
Revelar gabarito e comentário▾
GabaritoC — Validação é o processo de garantir que o software atende às necessidades e requisitos do usuário, enquanto Verificação é o processo de assegurar que o software foi implementado corretamente.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Verificação e Validação (V&V) em Engenharia de Software
Gabarito: letra C. A distinção clássica entre os dois conceitos é: Verificação responde à pergunta "estamos construindo o produto corretamente?" (conformidade com a especificação), enquanto Validação responde a "estamos construindo o produto certo?" (atendimento às necessidades reais do usuário). Essa é a definição consagrada na literatura de Engenharia de Software, como em Sommerville e Pressman, e é exatamente o que a alternativa C expressa.
O par Verificação & Validação (V&V) é um dos pilares da garantia da qualidade de software. Embora frequentemente citados juntos, eles têm propósitos distintos e complementares. A verificação é um processo estático e dinâmico que avalia se o software está sendo construído de acordo com os requisitos especificados — ou seja, se o produto está em conformidade com o que foi documentado. Ela envolve atividades como revisões, inspeções, walkthroughs e testes que comparam o comportamento do software com a especificação. A pergunta-chave é: "estamos fazendo o produto certo?" — não, perdoe-me, a pergunta é "estamos fazendo o produto corretamente?" (conforme a especificação). Já a validação é o processo de avaliar se o software atende às necessidades e expectativas reais do usuário e do cliente. Ela responde à pergunta: "estamos construindo o produto certo?" — ou seja, o software realmente resolve o problema do usuário? A validação envolve testes de aceitação, prototipação, e feedback do usuário.
Na prática, a verificação ocorre ao longo de todo o ciclo de desenvolvimento, garantindo que cada artefato (requisitos, projeto, código) esteja correto em relação ao artefato anterior. A validação, por sua vez, concentra-se no produto final, assegurando que ele atenda às necessidades do cliente. Um exemplo: suponha que uma equipe desenvolva um sistema de folha de pagamento. A verificação verificaria se o código calcula o salário conforme a especificação (ex.: se o desconto de INSS está implementado conforme a regra documentada). A validação perguntaria ao usuário: "este sistema atende às suas necessidades de cálculo de folha?" — mesmo que o código esteja perfeitamente conforme a especificação, se o usuário precisar de um relatório que não foi especificado, a validação falha.
A confusão entre os dois termos é uma das pegadinhas mais comuns em provas de Engenharia de Software. A banca costuma trocar os papéis, como fazem as alternativas A, B, D e E. A alternativa C é a única que apresenta a definição correta e completa, alinhada com a literatura clássica (Sommerville, Pressman) e com o que é cobrado em concursos.
Guarde a fronteira: Verificação = conformidade com a especificação (produto correto em relação ao documento); Validação = atendimento às necessidades do usuário (produto certo para o cliente). É exatamente nessa fronteira que as alternativas se dividem.
Critério
Verificação
Validação
Pergunta-chave
Estamos construindo o produto corretamente?
Estamos construindo o produto certo?
Foco
Conformidade com a especificação
Atendimento às necessidades do usuário
Atividades típicas
Revisões, inspeções, testes de unidade/integração
Testes de aceitação, prototipação, feedback do usuário
Momento no ciclo
Ao longo de todo o desenvolvimento
Concentra-se no produto final
Produto certo?
Produto correto?
Verificação
Atende ao usuário
Conforme à especificação
Validação
Necessidades reais
Implementação correta
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Afirma que os termos são intercambiáveis e que ambos significam "garantir que o software está livre de defeitos". Isso é duplamente errado: (1) os termos não são intercambiáveis — têm propósitos distintos, como vimos; (2) "livre de defeitos" é uma visão reducionista e até incorreta, pois um software pode estar livre de defeitos em relação à especificação (verificação) mas não atender às necessidades do usuário (validação). A ausência de defeitos não é o objetivo central de V&V; o objetivo é garantir qualidade e adequação.
Alternativa B — ❌ Incorreta
Inverte os conceitos ao afirmar que Verificação se refere a requisitos funcionais e Validação a requisitos não funcionais. Na verdade, tanto a verificação quanto a validação lidam com todos os tipos de requisitos (funcionais e não funcionais). A distinção correta não é entre tipos de requisitos, mas entre conformidade com a especificação (verificação) e atendimento às necessidades do usuário (validação). A banca tenta confundir o candidato associando "funcional" a "verificação" e "não funcional" a "validação", o que não encontra respaldo na literatura.
Alternativa C — ✅ Correta ⟵ GABARITO
Esta é a definição clássica e correta. Validação é o processo de garantir que o software atende às necessidades e requisitos do usuário ("estamos construindo o produto certo?"). Verificação é o processo de assegurar que o software foi implementado corretamente, ou seja, em conformidade com a especificação ("estamos construindo o produto corretamente?"). Essa é a definição apresentada por autores como Sommerville e Pressman, e é a que a banca espera.
Alternativa D — ❌ Incorreta
Inverte os papéis ao afirmar que Verificação é testar o produto final e Validação é revisar o código-fonte. Na verdade, a verificação envolve revisões e inspeções do código e de artefatos (além de testes), enquanto a validação é que se concentra no produto final, por meio de testes de aceitação e avaliação com o usuário. A alternativa troca as atividades: revisar código é tipicamente uma atividade de verificação, e testar o produto final (aceitação) é tipicamente validação.
Alternativa E — ❌ Incorreta
Afirma que Validação se refere apenas a testes de unidade e Verificação a testes de integração. Isso é completamente equivocado. Os níveis de teste (unidade, integração, sistema, aceitação) não se dividem entre validação e verificação dessa forma. Na verdade, tanto a verificação quanto a validação podem envolver vários níveis de teste. Por exemplo, testes de unidade e integração são geralmente atividades de verificação, mas testes de sistema e aceitação podem ser tanto verificação (se comparados à especificação) quanto validação (se avaliados pelo usuário). A alternativa tenta associar níveis de teste a conceitos de V&V, o que não é correto.