Resolução de questões CTFL: Q14S2

Essa é uma questão casca grossa. E a principal razão para eu dizer isso, é que ela quebra uma regra que eu tinha: o número de testes para garantir a cobertura de desvio será sempre maior que o número de testes para garantir a cobertura de sentença.

Questão

Dado o seguinte código, qual a alternativa verdadeira:

  1. IF A > B  THEN
  2. C = A – B
  3. ELSE
  4. C = A + B
  5. ENDIF
  6. Read D
  7. IF C = D Then
  8. Print “Error”
  9. ENDIF

a) 1 teste de cobertura de sentença (comando), 3 para a cobertura de desvio
b) 2 testes de cobertura de sentença (comando), 2 para a cobertura de desvio
c) 2 testes de cobertura de sentença (comando), 3 para a cobertura de desvio
d) 3 testes de cobertura de sentença (comando), 3 para a cobertura de desvio
e) 3 testes de cobertura de sentença (comando), 2 para a cobertura de desvio

Análise do código

Temos dois IFs independentes, sendo que o primeiro IF tem um ELSE.

Resolução

Cobertura de sentença

Com um único teste poderíamos garantir quase toda a cobertura de sentença, por exemplo:

Teste 1

A = 20
B = 10
C = será 10
D = 10

Com o teste 1 iremos passar pelo primeiro e segundo IF, porém, não iremos passar pelo ELSE. Portanto precisamos de mais um teste:

Teste 2

A = 0
B = 10
C = será 10 (o valor de C nem interessa nesse teste)
D = 9 (o valor de D nem interessa nesse teste)

Com o teste 2 passamos pelo ELSE, porque A é igual a B e nos levará a linha 4, a única pela qual não tínhamos passado.

Cobertura de desvio

Podemos usar os mesmos testes feitos na cobertura de sentença. Mas com uma diferença: no teste 2, os valores de C e D nos interessam, pois irão cobrir o resultado falso (a não passagem) do segundo IF.

Portanto, com apenas dois testes também alcançamos a cobertura de desvio.

Resposta

Alternativa: b)  2 testes de cobertura de sentença (comando), 2 para a cobertura de desvio

Dica

Adaptando a minha regra inicial: o número de testes para garantir a cobertura de desvio, na maioria das vezes, será maior que o número de testes para garantir a cobertura de sentença.

Fique por dentro das novidades, assine o feed do QualidadeBR.

Assine o feed

Anúncios

4 comentários sobre “Resolução de questões CTFL: Q14S2

    • Olá Arcanjo!

      A idéia por trás da cobertura de desvio é cobrir cada saída possível de um desvio. E um desvio irá existir sempre que houver um: if, while, for, until, case, goto, etc.

      Pensando num fluxograma, a cobertura de desvio está preocupada em passar por todas as saídas dos desvios, por exemplo:

      Se estiver chovendo, João irá levar o guarda-chuva.

      Utilizando a cobertura de desvio teremos dois testes:

      1. Está chovendo, logo João irá levar o guarda-chuva;
      2. Não está chovendo, logo João não irá levar o guarda-chuva.

      Bem é isso. Espero ter ajudado, caso contrário só falar. 😉

      Abraços!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s