Pular para o conteúdo principal

Questão de Engenharia de Software — Conceitos e Tipos de Testes de Software — FCC 2025

Engenharia de SoftwareConceitos e Tipos de Testes de Software
Código
fc150566
Banca
FCC
Órgão
TRT 2
Ano
2025
Cargo
TJ TRT2

Em um projeto de sistema judiciário trabalhista, a equipe de desenvolvimento adota práticas de testes automatizados para garantir a qualidade do software.

 

Considerando os conceitos de cobertura de código, testes unitários, testes de integração, testes funcionais e as ferramentas JUnit e Mockito,

  1. Atestes de integração são substituídos por testes unitários, pois ambos têm como foco a menor parte testável do sistema.
  2. Btestes funcionais são equivalentes a testes unitários, pois ambos validam métodos específicos dentro de classes do sistema.
  3. CMockito é uma ferramenta voltada para testes funcionais que simula interações de usuários com a interface do sistema.
  4. Da cobertura de código garante que o sistema está livre de erros, desde que atinja 100% de linhas executadas durante os testes.
  5. Eo uso conjunto de JUnit e Mockito permite criar testes unitários eficazes, simulando comportamentos de dependências externas para isolar a unidade testada.
Revelar gabarito e comentário

GabaritoE — o uso conjunto de JUnit e Mockito permite criar testes unitários eficazes, simulando comportamentos de dependências externas para isolar a unidade testada.

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”.

Testes de software: unitário, integração, funcional e ferramentas (JUnit e Mockito)

Gabarito: letra E. O uso conjunto de JUnit e Mockito permite criar testes unitários eficazes, pois o Mockito simula o comportamento de dependências externas (mocks), isolando a unidade testada — exatamente o que a alternativa E afirma. As demais alternativas distorcem conceitos fundamentais: testes de integração não são substituídos por unitários, testes funcionais não são equivalentes a unitários, Mockito não é ferramenta de teste funcional de interface, e cobertura de código não garante ausência de erros.

Para entender a questão, é preciso dominar a hierarquia dos níveis de teste e o papel de cada ferramenta. Os testes unitários (ou de unidade, componente ou módulo) focam na menor parte testável do software — um método, uma função ou uma classe —, verificando se essa unidade isolada se comporta conforme o esperado. Já os testes de integração verificam a interação entre dois ou mais módulos, garantindo que eles funcionem corretamente quando combinados. Os testes funcionais (ou de sistema, caixa-preta) validam o sistema como um todo, a partir das entradas e saídas, sem se preocupar com a implementação interna — simulam o uso real pelo usuário.

A cobertura de código é uma métrica que indica a porcentagem de linhas, branches ou caminhos do código que foram executados durante os testes. Ela é uma ferramenta valiosa para identificar partes não testadas, mas não garante a ausência de erros: mesmo com 100% de cobertura, podem existir defeitos lógicos, de integração ou de requisitos que não foram capturados. A cobertura mede o que foi executado, não se o comportamento está correto.

As ferramentas JUnit e Mockito são complementares no contexto de testes unitários em Java. O JUnit é o framework de testes que fornece a estrutura para escrever e executar os casos de teste, com anotações como @Test, @BeforeEach e @AfterEach. O Mockito é uma biblioteca de mocking que permite criar objetos simulados (mocks) de dependências externas — como bancos de dados, serviços web ou outras classes —, de modo que o teste da unidade fique isolado e não dependa do comportamento real dessas dependências. Essa combinação é a prática padrão para testes unitários eficazes.

A pegadinha central da questão está na troca de papéis entre os tipos de teste e as ferramentas. A banca explora a confusão comum entre:

Critério

Teste Unitário

Teste de Integração

Teste Funcional

Foco

Menor parte testável (método, classe)

Interação entre módulos

Sistema como um todo (entradas/saídas)

Nível

Baixo (unidade)

Médio (integração)

Alto (sistema)

Abordagem

Caixa-branca (estrutura interna)

Mista

Caixa-preta (funcionalidade)

Ferramenta típica

JUnit + Mockito

JUnit, TestNG

Selenium, Cucumber

Guarde essa distinção: é exatamente nela que as alternativas se dividem. A alternativa correta é a única que associa corretamente as ferramentas ao seu propósito real.

Testes de software
  • 1Níveis
    • Unitário (menor parte testável)
    • Integração (interação entre módulos)
    • Funcional (sistema como um todo)
  • 2Ferramentas
    • JUnit (framework de testes)
    • Mockito (mocks de dependências)
    • Selenium (teste funcional de interface)
  • 3Cobertura de código
    • Métrica de linhas executadas
    • Não garante ausência de erros
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma que testes de integração são substituídos por testes unitários, pois ambos focam na menor parte testável. Há dois erros: (1) testes de integração não são substituídos por unitários — eles são complementares e verificam a interação entre módulos, algo que o teste unitário não cobre; (2) o foco do teste de integração não é a menor parte testável, mas sim a integração entre partes. O teste unitário é que foca na menor unidade (método, classe).

Alternativa B — ❌ Incorreta

Afirma que testes funcionais são equivalentes a testes unitários, pois ambos validam métodos específicos. Erro duplo: testes funcionais validam o sistema como um todo (funcionalidades, entradas e saídas), enquanto testes unitários validam métodos específicos dentro de classes. São níveis distintos e não equivalentes.

Alternativa C — ❌ Incorreta

Afirma que Mockito é uma ferramenta para testes funcionais que simula interações de usuários com a interface. Mockito é uma biblioteca de mocking para testes unitários, que simula o comportamento de dependências externas (objetos, serviços), não interações de usuário com interface. Ferramentas de teste funcional de interface seriam Selenium, Cypress, entre outras.

Alternativa D — ❌ Incorreta

Afirma que a cobertura de código garante que o sistema está livre de erros, desde que atinja 100% de linhas executadas. A cobertura de código é uma métrica que indica quais linhas foram executadas, mas não garante a ausência de erros. Mesmo com 100% de cobertura, podem existir defeitos lógicos, de integração, de requisitos ou de performance que não são detectados. A cobertura é um indicador de quanto foi testado, não de qualidade do teste.

Alternativa E — ✅ Correta ⟵ GABARITO

Afirma que o uso conjunto de JUnit e Mockito permite criar testes unitários eficazes, simulando comportamentos de dependências externas para isolar a unidade testada. Isso está correto: o JUnit fornece a estrutura para escrever e executar os testes, e o Mockito cria mocks das dependências, permitindo que o teste da unidade seja isolado e não dependa de componentes externos (banco de dados, serviços, etc.). Essa é a prática padrão para testes unitários eficazes.

NÃO CAIA NESSA!

A banca troca os papéis das ferramentas e dos níveis de teste. O candidato que confunde Mockito com ferramenta de teste funcional (alternativa C) ou que acredita que cobertura de código garante ausência de erros (alternativa D) cai na armadilha. Lembre-se: Mockito é para mocking em testes unitários, e cobertura é métrica, não garantia de qualidade.

PEGA ESSA DICA!

Para questões sobre testes, monte um mapa mental com os níveis (unitário, integração, sistema, aceitação) e as ferramentas associadas. Associe: JUnit = framework de testes; Mockito = mocks de dependências; Selenium = teste funcional de interface; cobertura = métrica, não garantia. Essa associação resolve a maioria das questões da FCC.

Gabarito: letra E

Link permanente: /questoes/fc150566