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
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,
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.
Btestes funcionais são equivalentes a testes unitários, pois ambos validam métodos específicos dentro de classes do sistema.
CMockito é uma ferramenta voltada para testes funcionais que simula interações de usuários com a interface do sistema.
Da cobertura de código garante que o sistema está livre de erros, desde que atinja 100% de linhas executadas durante os testes.
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.