Coberturas

100% de cobertura de comando cobre 100% de cobertura de desvio? Ou é o contrário?

100% de cobertura de caminho garante 100% de cobertura de LCSAJ?

Se algumas dessas perguntas já passaram pela sua cabeça, garanto que não foi somente pela sua. Pela minha e de várias outras pessoas também.

Então o que você acha de solucionar de uma vez todas as dúvidas quanto as coberturas?

“Se tá brincando, Fabrício?”

“Sei, sei e eu também vou te mostrar um esquema para acertar todos os números da loteria”

Que isso pessoal, é verdade. Eu agarantiu!!!

Seu Creysson

Eu criei uma representação gráfica de qual cobertura cobre qual, baseada em uma outra que a leitora Renata Eliza (muito obrigado!) me enviou:

Coberturas

Ficou mais fácil não ficou?

Mas se mesmo assim restaram dúvidas, segue abaixo a listagem de quais coberturas cobrem quais, baseado no material da certificação CTFL, cedido pela BSTQB:

  1. 100% da  cobertura de decisão ou desvio garante 100% da cobertura de comando, mas não vice-versa;
  2. 100% de cobertura de decisão implica em 100% de cobertura de desvio, e vice-versa;
  3. 100% de cobertura LCSAJ implica em 100% de cobertura de decisão;
  4. 100% de cobertura de caminho implica em 100% de cobertura LCSAJ.

E isso aí pessoal. Espero que eu tenha ajudado. 🙂

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

Fonte:

ISTQB – Glossário de Termos de Teste (Versão 1.3 – Português/Brasil);

Syllabus Foundation Level (em Português/Brasil).

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

Trabalhe, trabalhe, trabalhe em equipe

Esse post é mais para dá uma quebrada nessa série de resoluções de questões da CTFL. E comentar sobre algo muito importante, que muitos dizem, e que às vezes pode parecer até clichê, mas é a pura verdade.

E também estava querendo comentar sobre a dobradinha da Brawn GP (hehe), já que abandonei há muito tempo atrás o meu blog de F1.

Então chega de blá-blá, e vamos para o post.

Superar desafios

Estamos sempre estudando, trabalhando, nos esforçando para alcançar o algo a mais. Superar desafios, que não param de chegar (que bom), desde aquelas missões impossíveis que te aparecem às 18:00, quando você já estava arrumando as coisas para sair do trabalho, mas acaba tendo que ficar para resolver. Até os seus desafios pessoais: passar numa prova, emagrecer (no meu caso engordar…rsrs), aprender um novo idioma, etc.

O caso BBB

Calma, não vou falar do Big Brother Brasil e sim de três pessoas, que representam toda uma equipe de Fórmula 1: Button, Barrichelo e Brawn. O primeiro é o companheiro de equipe do Rubinho, e o terceiro é o chefe da equipe, Ross Brawn.

Hoje de madrugada estavam os três no pódio do grande prêmio da Austrália, o Button no lugar mais alto o Rubinho no segundo e o Ross Brawn para receber o prêmio da equipe vencedora.

E os três superaram diversos desafios para chegar até lá. E a razão dos três estarem lá não é apenas devido as próprias habilidades e esforços de cada um. E sim de uma equipe toda, aquela velha história de que a vitória é de todos: desde o mecânico até o chefe da equipe.

Só em equipe

Se você tiver um grande desafio, como a Brawn teve, não adianta apenas você se esforçar, assim como não adiantava apenas o Rubinho dá o seu máximo e o carro não ser bom, fato que ocorreu nos anos anteriores.

Você irá precisar de uma equipe. E todos nós fazemos parte de uma equipe (acredito eu). No meu trabalho mesmo, temos um grande projeto, enormes desafios, cobranças e uma equipe que adora superá-los. Eu sozinho não ia conseguir garantir a qualidade do sistema, por mais que eu me esforce. É um desafio que deve ser encarado por uma equipe e todos na equipe devem trabalhar, trabalhar e trabalhar.

O gerente do projeto por mais que ele seja competente não conseguirá gerenciar todas as equipes e as tarefas, ele precisa de outras pessoas para ajudá-lo. Os desenvolvedores não conseguirão garantir que o sistema estará de acordo com os requisitos sem a nossa ajuda.

Em equipe, grandes obstáculos se tornam menores. Exemplos diversos:

  • É mais fácil fazer dieta junto com os seus amigos (as), já que todos vão evitar ir numa churrascaria ou comer uma feijoada na quarta-feira;
  • Estudar para uma prova em grupo, onde todos pensarão em como resolver uma questão confusa e compreender melhor um capítulo difícil;
  • Gravar um CD de rock sozinho é algo quase impossível, já que temos pelo menos três instrumentos (guitarra, baixo e bateria), embora Dave Grohl, tenha tocado todos os instrumentos do primeiro álbum do Foo Fighters sozinho.

Hoje em dia vivenciamos o progresso, e com ele muitas coisas se tornaram mais fáceis, porém os nossos desafios estão cada vez mais difíceis. Portanto temos que trabalhar duro e em equipe. A velha história de que a união faz a força.

Se um projeto dá certo ou errado a culpa ou a glória não serão apenas de uma única pessoa e sim de todos.

E para terminar, não adianta temos uma excelente infra-estrutura, usar a melhor metodologia, ter um bom prazo, senão temos uma boa equipe. As pessoas são e sempre serão o diferencial, a razão do fracasso ou do sucesso de um projeto. Não tente terceirizar a culpa para a metodologia e nem se vangloriar sozinho. E quando eu falo em pessoas os clientes também estão inclusos, aliás, são os primeiros que devem está comprometidos com o sucesso do projeto.

“Eu sou parte de uma equipe. Então, quando venço, não sou eu apenas quem vence. De certa forma, termino o trabalho de um grupo enorme de pessoas.”Ayrton Senna

“Um floco de neve é uma das mais frágeis criações, mas veja o que eles conseguem fazer quando se juntam!” – Autor desconhecido

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