Resolução de questões CTFL: Q12S2

Dois dos assuntos que mais apresentam dificuldade são os de cobertura de sentença (comando) e desvio. E acredito que o motivo é que nós (da área de Teste e Qualidade de Software), na maioria das vezes não somos os responsáveis por usar tais coberturas. E sim os desenvolvedores, já que elas são técnicas baseadas em estrutura.

Irei apresentar a resolução da questão 12 do simulado 2, e em outros posts também abordarei as questões 13, 14 e 15 deste mesmo simulado, que também falam sobre cobertura de sentença (comando) e desvio.

Questão

Dado o seguinte código, o que é verdadeiro sobre o número mínimo de casos de
teste necessários para uma total cobertura de sentença (comando) e desvio:

  1. Read P
  2. Read Q
  3. IF P+Q > 100 THEN
  4. Print “Large”
  5. ENDIF
  6. If P > 50 THEN
  7. Print “P Large”
  8. ENDIF

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

Análise do código

Temos dois IFs, e um detalhe importante: são dois IFs independentes, ou seja, o resultado do primeiro IF não impacta no segundo IF.

Resolução

Antes de ir para resolução propriamente dita, é bom lembrar dos conceitos de cobertura de sentença (comando) e da cobertura de desvio:

Cobertura de sentença (comando) = está associada a quantidade de linhas do código que está sendo testada
Cobertura de desvio = está associada a quantidade de desvios que são testados, o que inclui fazer o teste da saída verdadeira e falsa de um desvio (desvio = IF, CASE, SWITCH, WHILE, etc)

Agora vamos para a resolução, usando as duas técnicas:

Sentença (comando)

Com um único teste podemos alcançar a cobertura total de sentença, por exemplo:

P = 100
Q = 1

Iremos passar pelos dois IFs. Logo cobrimos todas as sentenças: 1,2,3,4,5,6,7,8.

Desvio

Já para alcançar a cobertura total de desvio precisamos de dois testes: um que passe pelos dois IFs e outro que não passe por eles, por exemplo:

Teste 1

P = 100
Q = 1

Com estes valores de entrada, iremos passar pelo primeiro IF e também pelo segundo.

Teste 2

P = 50
Q = 1

Com estes valores de entrada, não iremos passar pelo primeiro IF e nem pelo segundo.

Detalhe da questão: No enunciado da questão pede-se “o número mínimo de casos de teste”.

Resposta

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

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

Assine o feed

Anúncios

3 comentários sobre “Resolução de questões CTFL: Q12S2

  1. Boa tarde Fabrício, primeiramente parabéns pelo site. Nota 10 mesmo!!

    Estou estudando para o CTFL e me deparei com a questão abaixo:

    ———————————

    Given the following fragment of code, how many tests are required for 100% decision coverage?

    if width > length

    then biggest_dimension = width

    if height > width

    then biggest_dimension = height

    end_if

    else biggest_dimension = length

    if height > length

    then biggest_dimension = height

    end_if
    end_if

    ———————————–

    A resposta correta é 4. Você poderia, por gentileza, me ajudar a compreender como chegar a esses 4 testes como resposta? Eu só consigo encontrar 3. =(

    Mto obrigado!
    Bruno

    Responder
    • Oi Bruno,

      Os 4 testes são os seguintes:

    • Um para entrar no primeiro if e também entrar no if dentro do primeiro if;
    • Um para entrar no primeiro if e não entrar no if dentro do primeiro;
    • Um para não entrar no primeiro if e entrar no if do else;
    • Um para não entrar no primeiro if e também não entrar no if do else.
    • Se ficou ainda com alguma dúvida só avisar. E obrigado pelo comentário.

      Abraços!

  2. Olá Fabrício,

    Muito obrigado pela resposta! Consegui visualizar as possibilidades, a partir da sua resposta. Porém ainda não consigo montar o fluxo do código para esse exercício.

    Poderia me ajudar mais uma vez?

    Valeu!!

    Responder

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