Pular para o conteúdo principal

Questão de Engenharia de Software — Conceitos e Tipos de Testes de Software — VUNESP 2023

Engenharia de SoftwareConceitos e Tipos de Testes de Software
Código
vu196536
Banca
VUNESP
Órgão
CM SBO
Ano
2023
Cargo
Ana Sis ( )

Um tipo de teste de software que pode ser aplicado a sistemas web consiste em utilizar ferramentas automatizadas para fornecer entradas inválidas ou inesperadas, verificando se o sistema falha ou age de forma inapropriada. Esse teste é conhecido como

  1. Asession timeout.
  2. Bsession fixation.
  3. Cteste de carga.
  4. DXSS.
  5. Efuzzing.
Revelar gabarito e comentário

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

Fuzzing: teste de robustez com entradas inválidas

Gabarito: letra E. O fuzzing (ou fuzz testing) é exatamente a técnica que utiliza ferramentas automatizadas para fornecer entradas inválidas, inesperadas ou aleatórias a um sistema, verificando se ele falha, trava ou se comporta de forma inapropriada — é uma técnica de teste de robustez e segurança amplamente aplicada a sistemas web. As demais alternativas tratam de conceitos distintos: session timeout e session fixation são relacionados a gerenciamento de sessão, teste de carga avalia desempenho sob demanda e XSS é um tipo de vulnerabilidade de segurança.

O fuzzing é uma técnica de teste de software que se enquadra na categoria de testes de caixa-preta, pois não requer conhecimento do código-fonte interno. A ideia central é simples: em vez de testar apenas com entradas válidas e esperadas, o testador submete o sistema a uma grande quantidade de dados malformados, truncados, aleatórios ou inesperados, com o objetivo de descobrir falhas de tratamento de entrada que poderiam levar a crashes, erros de memória, vazamentos de informação ou comportamentos inseguros. É uma abordagem particularmente valiosa para sistemas web, onde as entradas vêm de formulários, parâmetros de URL, cabeçalhos HTTP, cookies e uploads de arquivos — todos vetores potenciais de exploração.

A origem do termo vem da ideia de "jogar dados aleatórios" contra o sistema, como se estivesse aplicando ruído (fuzz) nas entradas. Ferramentas como AFL, libFuzzer e Burp Suite Intruder automatizam esse processo, gerando milhares de variações de entrada por segundo e monitorando o comportamento do sistema para detectar anomalias. Quando uma entrada inesperada causa uma falha, o testador tem um indício de que o sistema não está tratando corretamente dados malformados — o que pode ser tanto um bug de robustez quanto uma vulnerabilidade de segurança explorável.

A distinção que importa aqui é entre fuzzing e outras técnicas de teste. O teste de carga, por exemplo, submete o sistema a volumes crescentes de requisições para avaliar desempenho e escalabilidade, mas com entradas válidas — o foco é o comportamento sob pressão, não a malformação de dados. Já o XSS (Cross-Site Scripting) não é um tipo de teste, mas uma vulnerabilidade específica que ocorre quando o sistema não valida adequadamente entradas que são renderizadas como código no navegador do usuário. O fuzzing pode ser usado para descobrir vulnerabilidades como XSS, mas não se confunde com ela. Session timeout e session fixation são conceitos de gerenciamento de sessão: o primeiro define o tempo de inatividade que encerra uma sessão; o segundo é um ataque que força o usuário a usar um ID de sessão conhecido pelo atacante.

A pegadinha que a banca explora nesta questão é a tentação de associar "entradas inválidas ou inesperadas" a conceitos de segurança como XSS ou session fixation, quando na verdade o enunciado descreve com precisão a técnica de fuzzing. O candidato que conhece a definição exata de cada termo percebe que apenas o fuzzing corresponde à descrição completa: ferramentas automatizadas + entradas inválidas/inesperadas + verificação de falhas ou comportamento inapropriado. Guarde essa fronteira: fuzzing é sobre a técnica de testar com dados malformados; XSS é uma vulnerabilidade que pode ser encontrada por essa técnica; session timeout/fixation são sobre o ciclo de vida da sessão; teste de carga é sobre desempenho com entradas válidas.

1Fuzzing (caixa-preta)
Entradas inválidas/inesperadas
Ferramentas automatizadas
Verifica falhas e crashes
2Teste de carga
Entradas válidas
Avalia desempenho sob volume
3XSS
Vulnerabilidade de injeção de script
Não é técnica de teste
4Session timeout
Encerra sessão por inatividade
5Session fixation
Ataque que fixa ID de sessão
Testes de software
LEVELsoulevel.com.br
Testes de software: Fuzzing (caixa-preta) (Entradas inválidas/inesperadas, Ferramentas automatizadas, Verifica falhas e crashes); Teste de carga (Entradas válidas, Avalia desempenho sob volume); XSS (Vulnerabilidade de injeção de script, Não é técnica de teste); Session timeout (Encerra sessão por inatividade); Session fixation (Ataque que fixa ID de sessão)

Alternativa A — ❌ Incorreta

Session timeout refere-se ao mecanismo de encerrar automaticamente uma sessão de usuário após um período de inatividade. Não envolve fornecer entradas inválidas ou inesperadas ao sistema — é uma configuração de segurança e gerenciamento de sessão, não uma técnica de teste. O conceito confundido aqui é o de "tempo de sessão" com "teste de robustez".

Alternativa B — ❌ Incorreta

Session fixation é um tipo de ataque de segurança em que o atacante fixa o ID de sessão de um usuário para sequestrar a sessão posteriormente. Não é uma técnica de teste automatizada com entradas inválidas; é uma vulnerabilidade de gerenciamento de sessão. A banca troca o conceito de "teste com entradas malformadas" por "ataque a sessões".

Alternativa C — ❌ Incorreta

Teste de carga (load testing) avalia o comportamento do sistema sob condições de demanda esperada ou elevada, medindo desempenho, tempo de resposta e estabilidade. Utiliza entradas válidas e realistas, não entradas inválidas ou inesperadas. O foco é o desempenho sob volume, não a robustez contra dados malformados. O distrator explora a confusão entre "testar sob pressão" e "testar com dados anômalos".

Alternativa D — ❌ Incorreta

XSS (Cross-Site Scripting) é uma vulnerabilidade de segurança, não uma técnica de teste. Ocorre quando o sistema não valida entradas que são renderizadas como código no navegador, permitindo que um atacante injete scripts maliciosos. Embora o fuzzing possa ser usado para descobrir vulnerabilidades XSS, o enunciado descreve a técnica de teste em si, não a vulnerabilidade que ela pode revelar. A banca explora a associação superficial entre "entradas inesperadas" e "ataques web".

Alternativa E — ✅ Correta ⟵ GABARITO

Fuzzing é a técnica de teste que utiliza ferramentas automatizadas para fornecer entradas inválidas, inesperadas ou aleatórias a um sistema, verificando se ele falha ou age de forma inapropriada. É uma técnica de caixa-preta focada em robustez e segurança, amplamente aplicada a sistemas web para descobrir bugs de tratamento de entrada e vulnerabilidades. A descrição do enunciado corresponde exatamente à definição de fuzzing.

PEGA ESSA DICA!

Para diferenciar na prova, lembre-se do foco de cada conceito: fuzzing = entradas malformadas para testar robustez; teste de carga = entradas válidas sob volume para testar desempenho; XSS = vulnerabilidade de injeção de script; session timeout/fixation = gerenciamento de sessão. Se o enunciado mencionar "ferramentas automatizadas" + "entradas inválidas ou inesperadas", a resposta é fuzzing.

Gabarito: letra E

Link permanente: /questoes/vu196536