Resolução de questões CTFL: Q36S3

Mais uma questão sobre classe de equivalência. Bom para treinar mais um pouco.

Questão

Na modelagem de um sistema que trabalha com impostos a serem pagos: Um empregado recebe R$4.000 de salário livre de impostos. Os próximos R$1.500 são tributados em 10%. E os próximos R$28.000 são tributados em 22%. Qualquer outro valor é tributado em 40%. Para o mais próximo valor inteiro, qual desses grupos de números cai na mesma classe de equivalência?

a) R$4.800; R$14.000; R$28.000
b) R$5.200; R$5.500; R$28.000
c) R$28.001; R$32.000; R$35.000
d) R$5.800; R$28.000; R$32.000

Análise

Precisamos saber qual alternativa contém valores que caem na mesma classe de equivalência. Portanto precisamos, antes de mais nada, saber quais classes de equivalências temos.

Resolução

De acordo com o enunciado da questão temos 4 classes de equivalência, que são:

  1. Valores até 4000 = não tributados
  2. Valores entre 4001 e 5500 = tributados em 10%
  3. Valores entre 5501 e 33500 = tributados em 22%
  4. Valores maiores que 33501 = tributados em 40%

Logo os valores da alternativa D R$5.800; R$28.000; R$32.000, pertencem a mesma classe de equivalência que é a 3.

Resposta

Alternativa: d) R$5.800; R$28.000; R$32.000

Até mais!

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

Assine o feed

Anúncios

Resolução de questões CTFL: Q15S2

Essa deveria ser uma questão mais fácil de cobertura de sentença e desvio, por usar a nossa linguagem. Porém, aplicada numa questão de Teste de Software, as coisas ficam confusas.

Questão

Considere o seguinte:

Pegar e ler o jornal
Olhe o que está passando na televisão
Se tiver um programa que você estiver interesse em assistir, então, veja a TV e
assista o programa
Caso contrário
Continue lendo o jornal
Se existe uma palavra cruzada no jornal, então tente completar

a) CS = 1 e CD = 1
b) CS = 1 e CD = 2
c) CS = 1 e CD = 3
d) CS = 2 e CD = 2
e) CS = 2 e CD = 3

Análise do código

Que código?

Esse daqui:

  1. Pegar jornal
  2. Ler jornal
  3. Olhar televisão
  4. IF tiver um programa que você estiver interesse em assistir THEN
  5. Veja a TV
  6. Assista o programa
  7. ELSE
  8. Continue lendo o jornal
  9. IF existe uma palavra cruzada no jornal THEN
  10. Tente completar
  11. ENDIF
  12. ENDIF

Acredito que uma maneira de resolver essa questão é passando o cenário descrito para um pseudocódigo, embora gaste mais tempo. Mas no momento o importante é compreender a questão, leve o tempo que levar.

Analisando o código temos dois IFs, sendo que o primeiro tem um ELSE, e o segundo está associado ao ELSE, ou seja, é dependente do primeiro IF.

Resolução

Cobertura de sentença

Dois testes são necessários: um para passar pelo primeiro IF e outro para passar pelo segundo IF. E passando pelos dois IFs, iremos executar todas as sentenças.

Cobertura de desvio

Já para a cobertura de desvio é preciso 3 testes:

Teste 1

Está passando um bom filme e o cidadão vai assistir. (primeiro IF – verdadeiro)

Teste 2
Está passando o Faustão e o cidadão vai continuar a leitura do jornal de domingo. (primeiro IF – falso)
O cidadão acaba de encontrar uma palavra cruzada e logo tenta completar. (segundo IF – verdadeiro)

Teste 3
Está passando de Volta a Lagoa Azul e o cidadão vai continuar a leitura do jornal. (primeiro IF – falso)
Não há uma palavra cruzada no jornal. (segundo IF – falso)

Resposta

Alternativa: e)  CS = 2 e CD = 3

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

Assine o feed

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

Resolução de questões CTFL: Q13S2

Retomando o simulado 2. Vamos resolver a questão 13, que é bem simples, comparada as demais apresentadas anteriormente.

Questão

Dado o seguinte código:

  1. Switch PC on
  2. Start “outlook”
  3. IF outlook appears THEN
  4. Send an email
  5. Close Outlook
  6. ENDIF

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

Análise do código

Temos apenas um IF. Ou seja, é mamão com açúcar.

Resolução

Para alcançar a cobertura de sentença precisamos de apenas um teste, no qual iremos passar pelo IF. Ou seja, o outlook irá aparecer e executaremos as linhas 4 e 5, juntamente com as demais.

Já para alcançar a cobertura de desvio precisamos de dois testes, um que passe pelo IF e outro que não passe. Ou seja, num teste o outlook irá aparecer e no outro não.

Não falei que seria fácil. 🙂

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

Resolução de questões CTFL: Q14S1

Voltando ao simulado 1. Vamos ver a questão de número 14.

Questão

Quantos  casos  de  testes  são  necessários  para  cobrir  todas  as  possibilidades  de
declarações  (caminhos)  para  o  seguinte  fragmento  de  código?  Supondo  que  as  duas
condições são independentes entre elas.
…………

  1. if (Condition 1)
  2. then statement 1
  3. else statement  2
  4. fi
  5. if (Condition 2)
  6. then statement 3
  7. fi

…………
a) 2
b) 3
c) 4
d) Não há como estimar

Análise

A questão pede o total de testes para cobrir todas as possibilidades de declarações (caminhos), ou seja, pede-se a cobertura de cobertura de caminho.

Quanto ao código, podemos perceber que há dois IFs independentes, como o próprio enunciado já fala.

Resolução

A melhor maneira de resolver essa questão é fazendo o fluxo do código para pode visualizar os caminhos existentes:

Fluxo

Olhando a figura acima, podemos visualizar que há 4 caminhos possíveis:

Azul: Condition 1 é verdadeira > executa o statement 1 > Condition 2 é falsa > finaliza

Preto: Condition 1 é verdadeira > executa o statement 1 > Condition 2 é verdadeira>executa o statement 3 > finaliza

Vermelho: Condition 1 é falsa> executa o statement 2 > Condition 2 é verdadeira> executa o statement 3 > finaliza

Verde: Condition 1 é falsa > executa o statement 2 > Condition 2 é falsa > finaliza

Resposta

Alternativa: c)  4

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

Assine o feed

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

Resolução de questões CTFL: Q5S2

Nossa! Como está questão meu deu dor de cabeça. Primeiro por culpa minha mesmo, de ter errado na tradução: me esqueci da palavra “válidas” no enunciado, o que acabou tornando a questão bem confusa.

E depois, quando parecia tudo está resolvido, o leitor Antonio Moraes fez uma excelente pergunta no post sobre a Q1S1. Segue ela abaixo:

[…] de acordo com a correta tradução da questão 5 do simulado 2, a alternativa correta não seria a D. Não entendi o porque do valor 50.000 precisar ser testado.
Você tem idéia?

Daí resolvi me interessar (como já diria um amigo meu) e entender melhor a questão. E encontrei uma grave inconsistência na questão:

A tradução foi feita com base em um simulado com 5 alternativas (2.PracticeExam1 (English) Q40), que dava como correta a alternativa C, porém a C está assim nesse simulado: c)    10000, 50000, 9999

O que está incorreto pois 9999  é um valor inválido e desta maneira a alternativa estaria incorreta. Então pesquisei pela questão original na internet e encontrei a mesma questão (fonte), com a alternativa C com os valores: 10.000, 50.000, 99.999

A primeira coisa que fiz foi arrumar esse erro na tradução. Porém, novamente cometi mais um erro, não prestei atenção que o simulado que eu me baseei tinha 5 alternativas e uma delas com uma alternativa mais correta do que a alternativa C. A alternativa D.

E após de até ter mudado o simulado. Em uma discusão no grupo DFTestes, onde o pessoal disse que a alternativa correta é a C e não a D. Parei novamente, li e reli a questão original e a traduzida, e percebi que realmente a C é a alternativa correta. E um dos motivos para a minha confusão foi que a tradução, ainda não estava tão parecida quanto a questão original, então dei uma melhora na tradução para deixar mais parecida com a original e também entendível em português.

Bem, segue abaixo a questão e a resolução desta questão que gerou tanta discussão e confusão.

Questão

O  número  em  um  sistema  de  controle  de  estoque  pode  variar  entre  10.000  e 99.999 inclusive. Quais das seguintes entradas poderiam ser o resultado da modelagem de teste usando apenas classes de equivalências válidas e limites válidos?

a) 1.000, 5.000, 99.999

b) 9.999, 50.000, 100.000

c) 10.000, 50.000, 99.999

d) 10.000, 99.999

e) 9.999, 10.000, 50.000, 99.999, 100.000

Analisando o enunciado da questão

Pede-se apenas os valores válidos e usando as técnicas de classe de equivalência e de valores limites.

Resolução

Seguindo as técnicas propostas:

Técnica de classe de equivalência – temos 3 partições:

Inválida mínima = valores menores que 10.000;
Válida = valores entre 10.000 e 99.999;
Inválida máxima = valores maiores que 99.999.

Técnica de valores limites – temos 4 limites a serem verificados:

Inválido mínimo = 9.999;
Válido mínimo = 10.000;
Válido máximo = 99.999;
Inválido máximo = 100.000.

E como a questão pede somente os valores válidos, chegamos aos seguintes valores:

10.000, 50.000 e 99.999

Daí você pode me perguntar: “O 50.000 não é necessário, pois o 10.000 e o 99.999 já fazem parte da classe de equivalência válida.”

Bem esse foi o pensamento que tive, quando acreditei que a alternativa D estava correta.

Mas, prestando mais atenção percebi que a questão pede para usar a técnica de classe de equivalência e de valores limites, e apenas valores que caracterizem o uso de cada uma delas, lembrando que esses valores precisam ser de classes e limites válidos.

Portanto a alternativa C é a correta. Pois:

10.000 = limite mínimo válido
50.000 = valor da classe de equivalência válida
99.999 = limite máximo válido

Desta maneira estamos claramente usando as duas técnicas.

Resposta

Alternativa: c)  10.000, 50.000, 99.999

Eu já atualizei o simulado 2, com está correção. Quem quiser baixá-lo ele está sendo disponibilizado no link abaixo:

http://www.mediafire.com/file/ohy4jdwxijw/Simulados_CTFL-BSTQB.zip

Peço desculpas, por mais esse erro.

Até mais!

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

Assine o feed