Pular para o conteúdo principal

Questão de TI - Desenvolvimento de Sistemas — Javascript — Avança SP 2025

TI - Desenvolvimento de SistemasJavascript
Código
qa699446
Banca
Avança SP
Órgão
UNITAU
Ano
2025
Cargo
Prog P ( )

test('calcula desconto em valores inteiros', () => { 

const produto = { 

nome: 'Laptop',

preco: 1000, 

calcularDesconto: function(percentual) { 

return this.preco * (1 - percentual/100); 

}; 

expect(produto.calcularDesconto(20)).toBe(800); 

expect(produto.calcularDesconto(0)).toBe(1000); 

expect(produto.calcularDesconto(100)).toBe(0);

});

Analise o seguinte teste unitário em Jest:     Com base no código apresentado, qual princípio de teste unitário está sendo aplicado?
  1. ATeste de casos limite (boundary testing)
  2. BTeste de caminho feliz (happy path)
  3. CTeste de integração
  4. DTeste de regressão
  5. ETeste de unidade
Revelar gabarito e comentário

GabaritoA — Teste de casos limite (boundary testing)

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 casos limite (boundary testing) em Jest

Gabarito: letra A. O teste unitário apresentado aplica o princípio de teste de casos limite (boundary testing), pois verifica o comportamento da função calcularDesconto nos extremos do domínio de entrada: percentual = 0 (nenhum desconto), percentual = 100 (desconto total) e percentual = 20 (valor intermediário). A alternativa A é a correta porque o foco do teste está em validar as fronteiras do intervalo de valores possíveis, não apenas o caminho feliz.

O teste unitário é uma prática de verificação de software que isola uma unidade mínima de código — no caso, o método calcularDesconto do objeto produto — e valida seu comportamento com entradas controladas. O Jest, framework de testes para JavaScript, executa as asserções expect(...).toBe(...) e reporta se o valor retornado corresponde ao esperado. No código, a função calcula o preço com desconto usando a fórmula preco * (1 - percentual/100). O teste cobre três cenários: 20% de desconto (resultado 800), 0% (resultado 1000) e 100% (resultado 0).

O boundary testing (teste de casos limite) é uma técnica de teste que se concentra nos valores nas bordas do domínio de entrada, onde erros de implementação são mais prováveis. No exemplo, os limites são 0 e 100, pois representam os extremos do percentual de desconto. Testar esses valores garante que a função lida corretamente com a ausência de desconto e com o desconto máximo, evitando bugs como divisão por zero ou valores negativos. O valor intermediário 20 serve como controle, mas não é o foco principal.

A distinção entre os tipos de teste é essencial para responder corretamente. O happy path (caminho feliz) testa apenas o fluxo normal, sem entradas extremas ou erros. O teste de integração verifica a interação entre múltiplos componentes, enquanto o teste de regressão garante que mudanças no código não quebrem funcionalidades existentes. O teste de unidade, por sua vez, é o nível de teste que isola uma unidade, mas a questão pergunta qual princípio está sendo aplicado dentro desse teste — e a resposta é o boundary testing, pois o teste explora os limites do domínio.

A pegadinha da banca está em confundir o nível de teste (unitário) com a técnica de teste (boundary). O teste é unitário, mas a técnica aplicada é de casos limite. O candidato que marca a letra E (teste de unidade) acerta o nível, mas erra a técnica. A banca explora exatamente essa confusão entre classificação hierárquica e abordagem específica.

NÃO CAIA NESSA!

A banca troca o nível de teste (unitário) pela técnica de teste (boundary). O teste é unitário, mas a pergunta é sobre o princípio aplicado — e o princípio é o teste de casos limite. Fique atento: quando o teste inclui valores extremos (0% e 100%), o foco é boundary testing, não apenas happy path.

Teste unitário (nível)
  • 1Técnicas
    • Boundary testing (casos limite)
      • Valores extremos (0% e 100%)
      • Bugs de off-by-one
    • Happy path (caminho feliz)
      • Fluxo normal
    • Teste de integração
      • Múltiplos componentes
    • Teste de regressão
      • Não quebrar funcionalidades
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa A está correta porque o teste verifica explicitamente os valores de fronteira do domínio: percentual = 0 (limite inferior) e percentual = 100 (limite superior). O teste de casos limite (boundary testing) é uma técnica que prioriza exatamente esses extremos, onde bugs de off-by-one ou de arredondamento costumam aparecer. No código, calcularDesconto(0) retorna 1000 (preço integral) e calcularDesconto(100) retorna 0 (preço zerado), validando os limites do intervalo.

Alternativa B — ❌ Incorreta

A alternativa B está incorreta porque o happy path (caminho feliz) testa apenas o fluxo normal de execução, sem entradas extremas ou excepcionais. No teste apresentado, embora calcularDesconto(20) seja um caso típico, a inclusão de 0 e 100 demonstra que o teste vai além do caminho feliz, explorando os limites do domínio. O happy path não cobriria esses extremos.

Alternativa C — ❌ Incorreta

A alternativa C está incorreta porque teste de integração verifica a interação entre múltiplos componentes ou módulos do sistema. No código, o teste isola apenas o objeto produto e seu método calcularDesconto, sem envolver outros módulos, banco de dados ou serviços externos. Portanto, não há integração sendo testada.

Alternativa D — ❌ Incorreta

A alternativa D está incorreta porque teste de regressão tem como objetivo garantir que alterações recentes no código não introduziram novos defeitos em funcionalidades já existentes. O teste apresentado não compara versões anteriores do código nem verifica a não-regressão de comportamentos; ele simplesmente valida o comportamento atual da função para um conjunto de entradas.

Alternativa E — ❌ Incorreta

A alternativa E está incorreta porque, embora o teste seja de fato um teste de unidade (nível de teste), a questão pergunta qual princípio está sendo aplicado, e não o nível. O princípio aplicado é o de casos limite (boundary testing), que é uma técnica dentro do teste de unidade. A banca usa essa distinção para induzir o candidato a marcar a letra E, mas a resposta correta é a A.

Gabarito: letra A

Link permanente: /questoes/qa699446