Pular para o conteúdo principal

Questão de Engenharia de Software — Teste de Software — INSTITUTO AOCP 2024

Engenharia de SoftwareTeste de Software
Código
qg261780
Banca
INSTITUTO AOCP
Órgão
SANEPAR
Ano
2024
Nível
Superior
Cargo
Profissional - Analista de Informática
Como analista de informática da Sanepar, você está desenvolvendo um novo sistema web para a empresa. Para garantir que a aplicação seja robusta e segura, é necessário realizar testes que verifiquem como a aplicação se comporta ao receber entradas inesperadas ou inválidas. Sabendo disso, qual tipo de teste você deve realizar para atender a essa necessidade?
  1. ATestes de Compatibilidade.
  2. BTestes de Fuzzing.
  3. CTestes de Mutação.
  4. DTestes A/B.
  5. ETestes de Usabilidade.
Revelar gabarito e comentário

GabaritoB — Testes de Fuzzing.

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 Software: Fuzzing

Gabarito: letra B. O teste de fuzzing (ou fuzzing test) é a técnica que submete a aplicação a entradas inesperadas, inválidas ou aleatórias (dados "sujos") para verificar se ela se comporta de forma robusta, sem quebrar, travar ou apresentar vulnerabilidades de segurança. É exatamente o que o enunciado descreve: verificar como a aplicação se comporta ao receber entradas inesperadas ou inválidas.

O fuzzing é uma técnica de teste automatizado que consiste em fornecer dados aleatórios, malformados ou inesperados como entrada para o software, com o objetivo de descobrir falhas, crashes, vazamentos de memória, erros de validação e vulnerabilidades de segurança. A ideia central é que, ao contrário dos testes tradicionais que usam entradas válidas e esperadas, o fuzzing "bombardeia" o sistema com entradas que ele não foi projetado para receber, expondo assim comportamentos inadequados.

Essa técnica é amplamente utilizada em testes de segurança, especialmente em aplicações web, onde entradas maliciosas podem explorar vulnerabilidades como injeção de SQL, cross-site scripting (XSS) e buffer overflow. O fuzzing pode ser aplicado em diferentes níveis: pode gerar entradas aleatórias do zero (fuzzing "burro" ou dumb fuzzing), ou pode usar modelos do formato de entrada esperado para gerar variações (fuzzing "inteligente" ou smart fuzzing). Ferramentas como AFL, Peach Fuzzer e Burp Suite Intruder são exemplos de implementações dessa técnica.

A distinção fundamental que separa o fuzzing dos demais tipos de teste é o foco em entradas inválidas/inesperadas e na robustez do sistema. Enquanto os testes funcionais verificam se o software atende aos requisitos com entradas válidas, o fuzzing busca exatamente o oposto: o que acontece quando a entrada não é válida? É uma técnica de caixa-preta (black-box), pois não requer conhecimento do código interno, apenas da interface de entrada.

A pegadinha que a banca explora aqui é a confusão entre fuzzing e outros tipos de teste que também envolvem "entradas" ou "robustez", mas com propósitos diferentes. O candidato pode ser tentado a escolher "Testes de Compatibilidade" (que verificam o funcionamento em diferentes ambientes) ou "Testes de Usabilidade" (que avaliam a experiência do usuário), mas nenhum deles lida com entradas inválidas. O fuzzing é o único que se encaixa perfeitamente na descrição do enunciado.

Guarde o critério decisivo: quando a questão falar em "entradas inesperadas ou inválidas", "robustez", "segurança" e "comportamento sob dados malformados", a resposta é fuzzing. É essa associação direta que separa a alternativa correta das demais.

1Objetivo
Entradas inesperadas/inválidas
Robustez e segurança
2Características
Automatizado
Caixa-preta
Dados malformados/aleatórios
3Tipos
Dumb (aleatório do zero)
Smart (variações do formato)
4Aplicações
Injeção de SQL
XSS
Buffer overflow
Teste de Fuzzing
LEVELsoulevel.com.br
Teste de Fuzzing: Objetivo (Entradas inesperadas/inválidas, Robustez e segurança); Características (Automatizado, Caixa-preta, Dados malformados/aleatórios); Tipos (Dumb (aleatório do zero), Smart (variações do formato)); Aplicações (Injeção de SQL, XSS, Buffer overflow)

Alternativa A — ❌ Incorreta

Os testes de compatibilidade verificam se o software funciona corretamente em diferentes ambientes, como navegadores, sistemas operacionais, dispositivos e versões de hardware. O foco é a portabilidade e a interoperabilidade, não o comportamento diante de entradas inválidas. A banca usa esse distrator para confundir quem pensa em "robustez" como "funciona em qualquer lugar", mas o enunciado fala especificamente de entradas inesperadas, não de ambientes.

Alternativa B — ✅ Correta ⟵ GABARITO

O teste de fuzzing é exatamente a técnica que submete a aplicação a entradas inesperadas, inválidas ou aleatórias para verificar sua robustez e segurança. O enunciado descreve precisamente essa necessidade: "verificar como a aplicação se comporta ao receber entradas inesperadas ou inválidas". O fuzzing automatiza esse processo, gerando uma grande quantidade de dados malformados e observando se o sistema apresenta falhas, crashes ou vulnerabilidades.

Alternativa C — ❌ Incorreta

O teste de mutação é uma técnica de teste de caixa-branca que consiste em introduzir pequenos defeitos (mutações) no código-fonte do programa e verificar se os casos de teste existentes são capazes de detectar essas mutações. O objetivo é avaliar a qualidade do conjunto de testes, não testar o comportamento do sistema com entradas inválidas. A banca usa esse distrator para confundir quem conhece o termo "mutação" mas não associa ao contexto de entradas.

Alternativa D — ❌ Incorreta

O teste A/B é uma técnica de experimentação usada para comparar duas versões de uma mesma funcionalidade (versão A e versão B) com usuários reais, medindo qual delas apresenta melhor desempenho em métricas como conversão, engajamento ou satisfação. É um teste de aceitação/experiência do usuário, não um teste de robustez contra entradas inválidas. A banca usa esse distrator para confundir quem pensa em "comparação de versões" com "teste de entradas".

Alternativa E — ❌ Incorreta

O teste de usabilidade avalia a facilidade de uso do software, verificando se os usuários conseguem realizar tarefas de forma intuitiva, eficiente e satisfatória. O foco é a experiência do usuário (UX), não o comportamento do sistema diante de entradas inválidas. A banca usa esse distrator para confundir quem pensa em "qualidade" de forma genérica, mas o enunciado é específico sobre entradas inesperadas.

Gabarito: letra B

Link permanente: /questoes/qg261780