Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Estrutura de Dados — IV - UFG 2017

Algoritmos e Estrutura de DadosEstrutura de Dados
Código
qq253349
Banca
IV - UFG
Órgão
Fundação Unirg
Ano
2017
Nível
Superior
Cargo
CS-UFG - - Analista de Sistemas
Seja S o grafo de fluxo de controle de um programa P. Se o teste que aplica um conjunto de dados de teste satisfaz o critério todos os ramos de S, então pode-se concluir que esse conjunto também irá satisfazer o critério
  1. Atodos os caminhos de P.
  2. Btodas as respostas de P.
  3. Ctodos os comandos de P.
  4. Dtodas as classes de P.
Revelar gabarito e comentário

GabaritoC — todos os comandos de P.

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

Critérios de teste estrutural: cobertura de ramos e comandos

Gabarito: letra C. No teste estrutural, a cobertura de todos os ramos (branch coverage) é um critério mais forte do que a cobertura de todos os comandos (statement coverage). Isso significa que um conjunto de dados que exercita todos os ramos do grafo de fluxo de controle necessariamente executa todos os comandos do programa. A hierarquia clássica é: cobertura de comandos < cobertura de ramos < cobertura de caminhos.

A banca testa o conhecimento da relação de subordinação entre critérios de teste. O critério "todos os ramos" subentende que cada aresta do grafo (cada desvio condicional) foi percorrida pelo menos uma vez. Como para percorrer um ramo é preciso executar os comandos contidos nele, todos os comandos são executados. Porém, "todos os caminhos" pode exigir combinações de ramos que não são garantidas pela simples cobertura de cada ramo isoladamente.

Alternativa A — ❌ Incorreta

"Todos os caminhos de P" é um critério mais forte que todos os ramos. A cobertura de todos os ramos não garante que todas as combinações possíveis de ramos (caminhos) sejam testadas. Por exemplo, um programa com dois condicionais aninhados pode ter 4 caminhos, mas apenas 2 ramos; testar cada ramo uma vez não cobre todos os caminhos. Portanto, essa conclusão não é válida.

Alternativa B — ❌ Incorreta

"Todas as respostas de P" não é um critério estrutural padrão. O termo "respostas" é ambíguo e não se relaciona diretamente com cobertura de código. A cobertura de ramos visa a execução de arestas do fluxo, não a saída do programa. Não há relação de implicação.

Alternativa C — ✅ Correta ⟵ GABARITO

A cobertura de todos os ramos implica a cobertura de todos os comandos. Cada comando está em pelo menos um ramo do grafo. Se cada ramo é executado, todo comando é executado ao menos uma vez. Essa é uma relação de hierarquia bem estabelecida na engenharia de software: critério de ramos (branch coverage) subsumi o critério de comandos (statement coverage).

Alternativa D — ❌ Incorreta

"Todas as classes de P" não é um critério estrutural de teste de código. Classes referem-se a testes de caixa-preta (particionamento por classes de equivalência) ou a orientação a objetos. A cobertura de ramos é um critério de caixa-branca e não tem relação com classes de equivalência ou classes de objetos.

NÃO CAIA NESSA!

A banca coloca "todos os caminhos" (alternativa A) como isca, pois o candidato pode pensar que ramos e caminhos são sinônimos. Mas ramos são arestas individuais; caminhos são sequências de arestas. Cobertura de ramos não garante cobertura de caminhos. Memorize a hierarquia: comandos < ramos < caminhos.

Gabarito: letra C.

Link permanente: /questoes/qq253349