Questão de Engenharia de Software — Conceitos e Tipos de Testes de Software — INSTITUTO AOCP 2023
- Código
- qa541455
- Banca
- INSTITUTO AOCP
- Órgão
- MPE MS
- Ano
- 2023
- Cargo
- Ana ( )
- AFuzzing.
- BSAST.
- CFagan.
- DRegression.
- EAsset tagging.
GabaritoA — Fuzzing.
Gabarito: letra A. O fuzzing é a técnica de teste que envia entradas inválidas, inesperadas ou aleatórias de forma automatizada para uma aplicação, com o objetivo de identificar erros, crashes ou comportamentos inesperados — exatamente o que o enunciado descreve. As demais alternativas (SAST, Fagan, Regression e Asset tagging) referem-se a outros conceitos da engenharia de software e segurança, que serão detalhados a seguir.
O fuzzing (ou fuzz testing) é uma técnica de teste de software amplamente utilizada na área de segurança. Seu princípio é simples: em vez de testar apenas com entradas válidas e esperadas, o testador (ou a ferramenta automatizada) submete o programa a uma grande quantidade de dados malformados, aleatórios ou inesperados — como strings gigantes, caracteres especiais, números negativos, valores fora de faixa, etc. O objetivo é forçar o software a se comportar de maneira anormal, revelando falhas como estouros de buffer, vazamentos de memória, exceções não tratadas ou até mesmo vulnerabilidades exploráveis. É uma técnica de caixa-preta, pois não exige acesso ao código-fonte, e é especialmente valiosa para descobrir bugs que não seriam encontrados por testes convencionais.
A relação do fuzzing com a análise de vulnerabilidades é direta: ao enviar entradas inválidas de forma automatizada, o fuzzer busca identificar pontos de falha que possam ser explorados por um atacante. Por isso, é uma ferramenta essencial no arsenal de segurança de aplicações, complementando outras técnicas como a análise estática (SAST) e a análise dinâmica (DAST). Enquanto o SAST analisa o código-fonte em busca de padrões de vulnerabilidade sem executá-lo, o fuzzing executa a aplicação e observa seu comportamento diante de entradas hostis — uma abordagem dinâmica e empírica.
Para entender a questão, é fundamental distinguir os conceitos apresentados nas alternativas. O SAST (Static Application Security Testing) é uma análise estática que examina o código-fonte, bytecode ou binário em busca de vulnerabilidades conhecidas, sem executar o programa. O teste de regressão, por sua vez, é uma técnica que reexecuta testes já aplicados em versões anteriores do software para garantir que novas alterações não introduziram defeitos em funcionalidades previamente testadas. O termo "Fagan" refere-se à inspeção de software, um processo formal de revisão estática do código ou documentação, conduzido por uma equipe para encontrar defeitos. Já "asset tagging" é um conceito de gestão de ativos, que consiste em etiquetar e catalogar recursos (hardware, software, dados) para fins de inventário e controle — não é um tipo de teste de software.
A pegadinha desta questão está em confundir o fuzzing com outras técnicas de segurança ou teste. O candidato pode associar "análise de vulnerabilidades" ao SAST, mas o SAST é estático e não envolve envio de entradas. O fuzzing, por outro lado, é dinâmico e exatamente o que o enunciado descreve: envio automatizado de entradas inválidas para identificar erros ou comportamento inesperado. Guarde essa distinção: estático (SAST) vs. dinâmico (fuzzing/DAST).
O fuzzing é a técnica que envia entradas inválidas, inesperadas ou aleatórias de forma automatizada para uma aplicação, com o objetivo de identificar erros, crashes ou comportamentos inesperados. É uma técnica de caixa-preta, dinâmica, amplamente usada na análise de vulnerabilidades. O enunciado descreve exatamente essa prática: "enviando entradas inválidas de maneira automatizada para identificação de erros ou comportamento inesperado".
SAST (Static Application Security Testing) é uma análise estática que examina o código-fonte, bytecode ou binário em busca de vulnerabilidades conhecidas, sem executar o programa. Não envolve envio de entradas inválidas nem execução da aplicação. O candidato pode confundir "análise de vulnerabilidades" com SAST, mas a descrição do enunciado (envio automatizado de entradas) aponta para uma técnica dinâmica, não estática.
Fagan refere-se à inspeção de software, um processo formal de revisão estática do código ou documentação, conduzido por uma equipe para encontrar defeitos. Não é uma técnica automatizada de envio de entradas inválidas. É uma revisão manual e estruturada, não um teste dinâmico.
O teste de regressão é uma técnica que reexecuta testes já aplicados em versões anteriores do software para garantir que novas alterações não introduziram defeitos em funcionalidades previamente testadas. Não envolve envio de entradas inválidas nem análise de vulnerabilidades. O foco é verificar se mudanças recentes não quebraram funcionalidades existentes.
Asset tagging é um conceito de gestão de ativos, que consiste em etiquetar e catalogar recursos (hardware, software, dados) para fins de inventário e controle. Não é um tipo de teste de software nem está relacionado à análise de vulnerabilidades. É um termo da área de governança e gestão de TI.
A banca explora a confusão entre técnicas de segurança estáticas e dinâmicas. O candidato pode associar "análise de vulnerabilidades" ao SAST (alternativa B), mas o SAST é estático e não envolve envio de entradas. O fuzzing é dinâmico e exatamente o que o enunciado descreve. Lembre-se: estático (SAST) analisa o código sem executar; dinâmico (fuzzing/DAST) executa e observa o comportamento.
Para diferenciar na prova, foque nas palavras-chave do enunciado: "enviando entradas inválidas" e "automatizada" apontam diretamente para fuzzing. Se a questão mencionar "análise do código-fonte" ou "antes da execução", pense em SAST. Se mencionar "simular ataques" ou "aplicação em execução", pense em DAST ou fuzzing.
Gabarito: letra A.
Link permanente: /questoes/qa541455