Questão de Engenharia de Software — Conceitos e Tipos de Testes de Software — VUNESP 2026
Engenharia de Software›Conceitos e Tipos de Testes de Software
Código
vu169308
Banca
VUNESP
Órgão
Rio Preto Prev
Ano
2026
Cargo
Ana Prev (RP Prev)
A automação de testes em um ambiente de desenvolvimento de software traz diversos benefícios, sendo um dos cuidados necessários garantir que novos recursos adicionados ao software não introduzam problemas em funcionalidades pré-existentes, que já haviam sido testadas antes.
O tipo de teste adequado para detectar potenciais problemas dessa natureza é o
Ateste de integração.
Bsmoke test.
Cteste de regressão.
Dteste unitário.
Eteste de performance.
Revelar gabarito e comentário▾
GabaritoC — teste de regressão.
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”.
Teste de Regressão
Gabarito: letra C. O teste de regressão é o tipo de teste que verifica se novas alterações no software não introduziram defeitos em funcionalidades já existentes e previamente testadas. Essa é a definição clássica, presente na literatura de Engenharia de Software (Pressman, Sommerville) e amplamente cobrada em concursos.
O teste de regressão é uma técnica de teste que consiste em reexecutar um subconjunto de testes já executados anteriormente, após uma modificação no software, para garantir que as alterações não tenham propagado efeitos colaterais indesejados. Em outras palavras, ele responde à pergunta: "as mudanças que fizemos quebraram algo que já funcionava?".
A necessidade do teste de regressão surge porque, ao adicionar novos recursos, corrigir bugs ou refatorar código, é possível introduzir defeitos em partes do sistema que não foram diretamente modificadas. Isso ocorre devido às dependências entre módulos, ao compartilhamento de dados e à complexidade inerente do software. Por isso, o teste de regressão é essencial em ambientes de desenvolvimento contínuo, como os que utilizam integração contínua e metodologias ágeis.
Na prática, o teste de regressão pode ser executado manualmente ou de forma automatizada. Em projetos ágeis, é comum que a suíte de testes de regressão seja automatizada e executada a cada nova integração, garantindo que as funcionalidades antigas continuem operando corretamente. Por exemplo, se um sistema de e-commerce adiciona um novo método de pagamento, o teste de regressão reexecutará os testes do carrinho de compras, do cálculo de frete e do checkout para garantir que essas funcionalidades não foram afetadas.
É importante distinguir o teste de regressão de outros tipos de teste:
Teste de integração: verifica a interação entre módulos, focando em erros de interface. O teste de regressão pode incluir testes de integração, mas seu objetivo é mais amplo: garantir que nada quebrou após mudanças.
Smoke test: é um teste rápido e superficial que verifica se as funcionalidades principais do sistema estão operacionais, geralmente executado após um build. Não é tão abrangente quanto o teste de regressão.
Teste unitário: testa a menor unidade de código (função, método) de forma isolada. O teste de regressão pode incluir testes unitários, mas não se limita a eles.
Teste de performance: avalia o desempenho do sistema (tempo de resposta, uso de recursos), não a correção funcional.
A pegadinha da banca nesta questão é confundir o teste de regressão com o teste de integração. O enunciado fala em "garantir que novos recursos adicionados ao software não introduzam problemas em funcionalidades pré-existentes", o que é exatamente o objetivo do teste de regressão. O teste de integração, por sua vez, foca em verificar se os módulos funcionam bem juntos, mas não necessariamente reexecuta testes antigos.
Guarde a fronteira: teste de regressão = reexecutar testes antigos após mudanças; teste de integração = verificar interação entre módulos. É nessa distinção que as alternativas se dividem.
Teste de regressão: Objetivo (Reexecutar testes antigos, Após mudanças no software, Garantir que nada quebrou); Quando surge a necessidade (Novos recursos, Correção de bugs, Refatoração de código); Como é executado (Manual ou automatizado, Integração contínua / ágil); Distinção de outros testes (Integração: interação entre módulos, Smoke: verificação rápida e superficial, Unitário: menor unidade isolada, Performance: desempenho, não correção)
Alternativa A — ❌ Incorreta
O teste de integração verifica a interação entre módulos, focando em erros de interface. Embora possa ser parte de uma suíte de regressão, seu objetivo não é especificamente garantir que funcionalidades pré-existentes continuem funcionando após novas implementações. O enunciado descreve exatamente o papel do teste de regressão.
Alternativa B — ❌ Incorreta
O smoke test (ou teste de fumaça) é um teste rápido e superficial que verifica se as funcionalidades principais do sistema estão operacionais, geralmente executado após um build. Ele não tem o objetivo de reexecutar todos os testes antigos para detectar regressões; é apenas uma verificação inicial de que o sistema "não está pegando fogo".
Alternativa C — ✅ Correta ⟵ GABARITO
O teste de regressão é exatamente o tipo de teste que reexecuta testes já aplicados em versões anteriores para garantir que novas alterações não introduziram defeitos em funcionalidades já testadas. O enunciado descreve precisamente essa finalidade: "garantir que novos recursos adicionados ao software não introduzam problemas em funcionalidades pré-existentes, que já haviam sido testadas antes".
Alternativa D — ❌ Incorreta
O teste unitário testa a menor unidade de código (função, método) de forma isolada, geralmente usando mocks. Ele não tem o objetivo de verificar o impacto de novas funcionalidades em funcionalidades pré-existentes; isso é papel do teste de regressão.
Alternativa E — ❌ Incorreta
O teste de performance avalia o desempenho do sistema, como tempo de resposta, uso de CPU e memória. Ele não verifica a correção funcional nem se novas alterações quebraram funcionalidades existentes; é um teste não funcional.