Questão de Engenharia de Software — Conceitos e Tipos de Testes de Software — FCC 2025
Engenharia de Software›Conceitos e Tipos de Testes de Software
Código
fc150570
Banca
FCC
Órgão
TRT 2
Ano
2025
Cargo
TJ TRT2
Quando da manutenção corretiva do módulo de relatórios do sistema de tramitação processual de um TRT, um técnico identificou que, ao gerar relatórios em PDF contendo muitos processos, o sistema travava intermitentemente, e registros incompletos eram salvos. Com base em boas práticas de manutenção de sistemas, diagnóstico de erros, geração de relatórios e metodologias de teste, a abordagem correta e mais adequada nesse cenário
Aé evitar o problema, dividindo-se o relatório em múltiplos arquivos, enviando cada um deles por e-mail diretamente do backend, reduzindo o uso de memória sem necessidade de depuração manual ou logs.
Bé forçar um try/catch genérico envolvendo toda a rotina de geração do relatório e, dentro do bloco de captura, exibir uma mensagem padrão ao usuário e continuar a execução do sistema sem registrar logs detalhados.
Cé comentar o trecho de código em que ocorre a falha na geração do PDF, de modo a evitar que a exceção interrompa o sistema. Após isso, reimplantar o sistema em produção e documentar o incidente.
Dé, primeiramente, analisar os logs de erro e consumo de memória durante a geração dos relatórios, replicar o erro em ambiente de teste com dados reais e utilizar uma ferramenta de profiler ou depurador para identificar gargalos e vazamentos, antes de propor correções definitivas.
Eé evitar o uso de testes de integração automatizados, pois, nesse caso, o erro só ocorre com alto volume de dados, sendo mais eficiente aguardar relatos de usuários para entender a origem do travamento.
Revelar gabarito e comentário▾
GabaritoD — é, primeiramente, analisar os logs de erro e consumo de memória durante a geração dos relatórios, replicar o erro em ambiente de teste com dados reais e utilizar uma ferramenta de profiler ou depurador para identificar gargalos e vazamentos, antes de propor correções definitivas.
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”.
Diagnóstico e correção de falhas em manutenção de software
Gabarito: letra D. A abordagem correta é, primeiramente, analisar os logs de erro e o consumo de memória, replicar o problema em ambiente de teste com dados reais e usar ferramentas de profiling/depuração para identificar a causa raiz antes de propor qualquer correção — isso segue as boas práticas de diagnóstico de erros e manutenção de software, que exigem entender o problema antes de agir.
O cenário descreve um problema clássico de manutenção corretiva: um sistema que falha de forma intermitente sob condições específicas (alto volume de dados na geração de PDFs). A manutenção corretiva é a atividade de engenharia de software que visa corrigir defeitos identificados após a implantação. O ponto central aqui não é apenas "consertar", mas sim diagnosticar corretamente antes de qualquer intervenção. As boas práticas de diagnóstico seguem uma sequência lógica: (1) coletar evidências (logs, métricas de memória), (2) reproduzir o problema em ambiente controlado, (3) identificar a causa raiz com ferramentas adequadas (profiler, depurador) e só então (4) propor e implementar a correção definitiva. Essa abordagem evita correções superficiais que mascaram o sintoma sem resolver a causa, e também evita introduzir novos defeitos — o que é verificado posteriormente por testes de regressão.
A alternativa D é a única que segue integralmente esse fluxo. Ela combina três elementos essenciais: a análise de logs (evidência do que ocorreu), a replicação em ambiente de teste com dados reais (reprodução controlada do problema) e o uso de profiler/depurador (ferramentas de diagnóstico que identificam gargalos e vazamentos de memória). Esse é exatamente o procedimento recomendado para problemas intermitentes relacionados a consumo de recursos, como o travamento ao gerar relatórios com muitos processos.
As demais alternativas representam anti-padrões de manutenção: soluções paliativas que ignoram o diagnóstico (A), tratamento genérico de exceções que esconde o erro (B), comentar código para "evitar" a falha (C) e abandonar testes automatizados (E). Todas violam o princípio fundamental de que a correção deve ser baseada em evidências e na compreensão da causa raiz.
O que separa a alternativa correta das demais é exatamente o método: diagnóstico baseado em evidências antes da correção. As alternativas incorretas propõem ações imediatas e superficiais, enquanto a correta propõe um processo investigativo completo. Guarde esse critério: em questões de manutenção de software, a resposta certa quase sempre envolve diagnosticar, reproduzir e identificar a causa raiz antes de corrigir.
1Coletar evidências (logs, memória)
2Reproduzir em ambiente de teste
3Identificar causa raiz (profiler)
4Propor correção definitiva
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Propõe "evitar o problema" dividindo o relatório em múltiplos arquivos e enviando por e-mail diretamente do backend, "sem necessidade de depuração manual ou logs". O erro está em tratar o sintoma (travamento) com uma solução paliativa que não investiga a causa raiz — que pode ser um vazamento de memória, um algoritmo ineficiente ou um problema de concorrência. Além disso, a alternativa afirma explicitamente que não há necessidade de depuração ou logs, o que contraria frontalmente as boas práticas de diagnóstico. Dividir o relatório pode até reduzir o consumo de memória, mas não corrige o defeito subjacente e pode introduzir novos problemas (como envio de e-mails não solicitados).
Alternativa B — ❌ Incorreta
Sugere um try/catch genérico envolvendo toda a rotina, exibindo mensagem padrão ao usuário e continuando a execução "sem registrar logs detalhados". Isso é um anti-padrão de tratamento de exceções: capturar exceções de forma genérica e continuar a execução sem registrar detalhes esconde o erro e impede o diagnóstico. Além disso, "continuar a execução" após uma falha na geração do relatório pode levar a registros incompletos — exatamente o problema descrito no enunciado. A prática correta é capturar exceções específicas, registrar logs detalhados e, quando necessário, interromper a operação para evitar corrupção de dados.
Alternativa C — ❌ Incorreta
Propõe "comentar o trecho de código em que ocorre a falha" para evitar que a exceção interrompa o sistema, e depois reimplantar em produção. Comentar código é uma prática de depuração temporária, nunca uma correção definitiva. Isso remove a funcionalidade de geração do relatório (ou parte dela), o que certamente não é aceitável, e não resolve a causa do travamento. Reimplantar em produção sem corrigir o defeito e sem testes adequados é extremamente arriscado e viola as boas práticas de manutenção.
Alternativa D — ✅ Correta ⟵ GABARITO
Esta é a abordagem correta e mais adequada. Ela segue o processo de diagnóstico estruturado: (1) analisar logs de erro e consumo de memória — coleta de evidências; (2) replicar o erro em ambiente de teste com dados reais — reprodução controlada; (3) utilizar ferramentas de profiler ou depurador para identificar gargalos e vazamentos — identificação da causa raiz. Só depois disso se propõem correções definitivas. Esse fluxo é o recomendado pelas boas práticas de manutenção de software e é exatamente o que se espera de um profissional ao lidar com falhas intermitentes relacionadas a volume de dados.
Alternativa E — ❌ Incorreta
Afirma que se deve "evitar o uso de testes de integração automatizados" porque o erro só ocorre com alto volume de dados, sendo mais eficiente "aguardar relatos de usuários". Isso é completamente equivocado: testes de integração automatizados são essenciais justamente para detectar problemas que só aparecem quando componentes interagem, e testes de volume/carga são projetados exatamente para simular condições de alto volume. Abandonar testes automatizados e esperar relatos de usuários é reativo e aumenta o custo de correção, além de permitir que o problema afete usuários reais.