Questão de Engenharia de Software — Conceitos e Tipos de Testes de Software — CESPE / CEBRASPE 2025
Engenharia de Software›Conceitos e Tipos de Testes de Software
Código
ce417777
Banca
CESPE / CEBRASPE
Órgão
TRF 6
Ano
2025
Cargo
TJ TRF6
A respeito de aplicação de testes, julgue o item a seguir.
Para facilitar os testes de uma aplicação, podem ser utilizados os mock objects, que são objetos genéricos que atendem a todas as necessidades de testes.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoE — Errado
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”.
Mock Objects em Testes de Software
Gabarito: Errado (E). A afirmativa está incorreta porque define mock objects como "objetos genéricos que atendem a todas as necessidades de testes", o que é uma distorção do conceito. Na verdade, mocks são objetos simulados e específicos, criados para imitar o comportamento de dependências reais em cenários controlados de teste — eles não são genéricos nem atendem a todas as necessidades.
Mock objects (ou simplesmente mocks) são uma técnica fundamental em testes de unidade, especialmente em desenvolvimento orientado a objetos. O objetivo principal é isolar a unidade sob teste (a classe ou método que está sendo testado) das suas dependências externas — como bancos de dados, serviços web, APIs de terceiros ou outras classes — substituindo-as por objetos simulados que reproduzem o comportamento esperado dessas dependências de forma controlada.
A palavra-chave aqui é específico. Um mock é criado para um propósito particular: ele simula o comportamento de uma dependência específica, com expectativas definidas sobre quais métodos serão chamados, com quais argumentos, e o que deve ser retornado em cada cenário. Por exemplo, se você está testando uma classe PedidoService que depende de um RepositorioDePedidos, você cria um mock desse repositório que retorna dados pré-definidos — não um objeto genérico que serve para qualquer coisa.
A confusão que a banca explora é tratar o mock como algo genérico e universal. Na prática, existem diferentes tipos de objetos de teste — dummies, stubs, fakes, mocks e spies — cada um com uma função específica. Um stub, por exemplo, fornece respostas prontas para chamadas feitas durante o teste, mas não verifica se essas chamadas ocorreram. Um mock, por sua vez, além de fornecer respostas, também verifica se os métodos foram chamados corretamente (verificação de interações). Já um dummy é um objeto que é passado como argumento, mas nunca é realmente utilizado. Essa distinção é crucial e frequentemente cobrada em provas.
A pegadinha desta questão está na palavra "genéricos". Mocks são, por definição, objetos específicos e configurados para cada cenário de teste. Eles não atendem a "todas as necessidades" — pelo contrário, cada mock é desenhado para uma necessidade particular. Além disso, mocks não são a única técnica de teste disponível; eles são uma ferramenta entre muitas, e a escolha entre usar um mock, um stub ou um fake depende do que se quer verificar.
Guarde a fronteira entre mock (objeto simulado específico, com verificação de interações) e objeto genérico (que não existe nesse contexto): é exatamente nessa distinção que a alternativa se divide.
Objetos de teste: Dummy (Passado, mas não usado); Stub (Respostas prontas); Fake (Implementação funcional simplificada); Mock (Respostas prontas, Verifica interações); Spy (Envolve o objeto real, Registra chamadas)
Item — ❌ Errado
A afirmativa está incorreta por dois motivos principais. Primeiro, mocks não são "objetos genéricos" — eles são objetos específicos, criados para simular o comportamento de uma dependência particular em um cenário de teste controlado. Segundo, eles não "atendem a todas as necessidades de testes" — eles são uma técnica entre várias (stubs, fakes, dummies, spies), cada uma com sua finalidade específica. A definição correta seria: mocks são objetos simulados que imitam o comportamento de dependências reais, permitindo isolar a unidade sob teste e verificar interações.
NÃO CAIA NESSA!
A banca troca o conceito de mock (objeto específico e configurado para simular uma dependência) pelo de "objeto genérico que atende a todas as necessidades". O candidato que não domina a distinção entre mocks, stubs e fakes tende a aceitar a definição vaga como correta. Lembre-se: mock é sempre específico e direcionado a um cenário de teste.
PEGA ESSA DICA!
Para diferenciar na prova, lembre-se da finalidade de cada um: dummy é passado mas não usado; stub fornece respostas prontas; fake tem implementação funcional simplificada; mock fornece respostas E verifica interações; spy envolve o objeto real e registra chamadas. Se a questão falar em "verificação de chamadas", é mock; se falar apenas em "respostas prontas", é stub.