Questão de Engenharia de Software — Conceitos e Tipos de Testes de Software — INSTITUTO AOCP 2025
Engenharia de Software›Conceitos e Tipos de Testes de Software
Código
qa700075
Banca
INSTITUTO AOCP
Órgão
UFABC
Ano
2025
Cargo
Téc ( )
Um Técnico de Tecnologia da Informação da UFABC está realizando a manutenção do sistema acadêmico utilizado para matrículas online. Após adicionar um novo módulo para emissão de histórico escolar, ele precisa garantir que funcionalidades já existentes, como matrícula em disciplinas e consulta de notas, continuem funcionando corretamente, sem apresentar erros decorrentes das alterações realizadas no código. Qual tipo de teste de software ele deverá executar para garantir que as novas mudanças não quebrem funcionalidades já implementadas?
ATeste de Usabilidade.
BTeste de Mutação.
CTeste de Regressão.
DTeste de Loop.
ETeste de Estresse.
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: garantindo que mudanças não quebrem o que já funciona
Gabarito: letra C. O teste de regressão é exatamente o tipo de teste que reexecuta funcionalidades já existentes após uma alteração no código, para verificar se a mudança não introduziu novos defeitos (bugs) em partes que antes funcionavam — é o que o enunciado descreve ao pedir garantia de que matrícula e consulta de notas continuem operando após a adição do módulo de histórico. As demais alternativas tratam de objetivos diferentes: usabilidade (experiência do usuário), mutação (qualidade dos casos de teste), loop (estrutura de repetição) e estresse (comportamento sob carga).
O teste de regressão é um dos tipos de teste mais cobrados em concursos de Engenharia de Software, justamente por sua importância prática: em qualquer manutenção evolutiva ou corretiva, o risco de quebrar funcionalidades já consolidadas é alto, e o teste de regressão existe para mitigar exatamente esse risco. Ele não testa a nova funcionalidade em si (isso é papel do teste funcional ou de unidade), mas sim o impacto da mudança no que já existia.
Na prática, o teste de regressão consiste em reexecutar casos de teste antigos (ou um subconjunto deles) após cada modificação no código. Por exemplo: se um sistema de matrículas ganha um novo módulo de emissão de histórico, o testador deve rodar novamente os testes que validam a matrícula em disciplinas e a consulta de notas, garantindo que a nova implementação não alterou o comportamento dessas funcionalidades. É comum que esses testes sejam automatizados e integrados a ferramentas de integração contínua, para que rodem a cada nova versão do software.
A distinção que mais confunde em prova é entre teste de regressão e teste de integração. O teste de integração verifica se os módulos funcionam bem quando combinados (interação entre eles), enquanto o teste de regressão verifica se uma mudança não quebrou funcionalidades já existentes — ele pode ser aplicado em qualquer nível (unitário, integração, sistema), mas seu foco é sempre a não-regressão, ou seja, a manutenção do comportamento anterior. Outra confusão comum é com o teste de mutação, que é uma técnica de avaliação da qualidade dos casos de teste (introduz-se erros propositais no código para ver se os testes os detectam), e não um teste de funcionalidades.
A pegadinha que a banca explora aqui é justamente a troca de objetivos: o candidato que não domina a definição de cada tipo de teste pode confundir regressão com integração ou com teste funcional. O enunciado é claro ao descrever a situação: "garantir que as novas mudanças não quebrem funcionalidades já implementadas" — essa é a definição literal de teste de regressão. Guarde a fronteira: regressão = reexecutar testes antigos após mudança; integração = testar a interação entre módulos; funcional = testar se a funcionalidade atende aos requisitos.
Teste de regressão: Objetivo (Reexecutar testes antigos após mudança, Garantir que nada quebrou); Nível (Unitário, Integração, Sistema); Confusões comuns (Integração (interação entre módulos), Mutação (qualidade dos casos de teste), Funcional (atende aos requisitos))
Alternativa A — ❌ Incorreta
O teste de usabilidade avalia a facilidade de uso do software, a experiência do usuário (interface, navegabilidade, aprendizado). Não tem relação com verificar se mudanças quebraram funcionalidades existentes — ele foca no usuário, não na integridade do código.
Alternativa B — ❌ Incorreta
O teste de mutação é uma técnica de avaliação da qualidade dos casos de teste: introduz-se mutações (erros propositais) no código e verifica-se se os testes existentes são capazes de detectá-las. Não é um teste de funcionalidades, e sim uma métrica de eficácia da suíte de testes.
Alternativa C — ✅ Correta ⟵ GABARITO
O teste de regressão é exatamente o que o enunciado descreve: reexecutar testes de funcionalidades já existentes após uma alteração no código, para garantir que a mudança não introduziu novos defeitos. É a definição clássica: "reteste de uma unidade, integração ou sistema, após uma modificação, a fim de verificar se a mudança não introduziu novas falhas".
Alternativa D — ❌ Incorreta
O teste de loop (ou teste de laço) é uma técnica de teste estrutural (caixa branca) que valida a corretude de estruturas de repetição (loops) no código, verificando se as iterações são executadas corretamente. Não tem relação com a verificação de funcionalidades existentes após mudanças.
Alternativa E — ❌ Incorreta
O teste de estresse (ou teste de carga) avalia o comportamento do sistema sob condições extremas de demanda (alto volume de usuários, dados, transações), verificando se ele mantém estabilidade e desempenho. Não é o tipo de teste para garantir que mudanças não quebrem funcionalidades existentes.