Resolução de questões CTFL: Q13S1

Acredito que a grande dificuldade desta questão é o desconhecimento da complexidade ciclomática de McCabe, eu mesmo não fazia a menor idéia do que era, antes de ver essa questão. E o pior de tudo é que o Syllabus não fala dela, e o máximo que podemos encontrar no material sedido pela BSTQB é a sua definição no ISTQB – Glossário de Termos de Teste.

Mas o intuito do post não é explicar a complexidade ciclomática de McCabe, e sim apresentar a resolução da questão 13 do simulado 1. Quem quiser entender melhor a complexidade ciclomática, recomendo os seguintes links abaixo:

http://logbr.reflectivesurface.com/2008/11/12/conceitos-de-programacao-complexidade-ciclomatica/

http://www.antoniopassos.pro.br/blog/?p=347

http://en.wikipedia.org/wiki/Cyclomatic_complexity

Agora vamos para a questão…

Dado o seguinte programa:

1 IF  X < Y

2 THEN  Statement 1;

3 ELSE IF  Y >=  Z

4 THEN Statement  2;

5 END

A complexidade ciclomática de McCabe é :

a) 2

b) 3

c) 4

d) 5

Análise do código

Temos dois IFs, sendo que o segundo é dependente do primeiro, ou seja, a sua execução depende do resultado do primeiro IF, pois o segundo IF está associado ao ELSE do primeiro IF.

Acredito que essa história de primeiro e segundo IF, pode ter te deixado confuso querido(a) leitor(a). Então, vamos facilitar as coisas, abaixo segue o fluxo do código da questão:

Fluxo

Resolução

Temos duas maneiras de resolver essa questão: fazendo o fluxo com os caminhos lógicos possíveis (parecido com a figura acima), ou usando a fórmula da complexidade ciclomática.

Vamos primeiro para a maneira mais difícil, usando a fórmula:

M = E − N + 2P
M= complexidade ciclomática
E= número de arestas (linhas/caminhos)
N= número de nodos
P= número de componentes conectados

M= 6 – 5 + 2X1

M= 1 + 2

M =3

Portanto já sabemos que a complexidade ciclomática é igual a 3.

Agora vamos resolver essa mesma questão, de uma maneira mais simples e fácil:

Fluxo

Sabendo que a complexidade ciclomática medi o número de caminhos de uma determinada função. Fica claro na figura acima, que o código apresentado tem 3 caminhos lógicos possíveis:

Verde: X é menor que Y > executar o Statement 1 > END

Azul: X é maior que Y > Y é menos que Z > END

Vermelho: X é maior que Y > Y é maior igual que Z > THEN Statement  2 > END

E o motivo por eu achar a segunda maneira mais fácil é simples: eu dificilmente foi lembrar da fórmula da complexidade ciclomática na hora da prova. E como tenho certeza que a pessoa que irá aplicar o exame não irá colocar a fórmula na lousa (como nos tempos de escola), prefiro fazer o fluxo do código, afinal não vou esquecer de como faz círculos e retas, durante a prova.

Logicamente essa é minha opinião, se você acha melhor resolver usando a fórmula, tudo bem.

Resposta

Alternativa: b)  3

Por hoje é só pessoal. No próximo post irei resolver a questão 5 do simulado 2, a que o Clauriston comentou no post anterior. Até lá!

Atualização 13 de Novembro de 2009

Estava hoje dando uma olhada no artigo publicado pelo próprio McCabe, e vi que ele mesmo diz que é possível calcular a complexidade ciclomática de uma forma bem mais simples (e a Cristina até citou nos comentários).

Fórmula mágica:

Quantidade de decisões + 1 = complexidade ciclomática 😀

OBS.: Considerando a análise de um programa que tenha apenas um ponto de entrada e um de saída.

Trecho retirado do artigo: “This proves that the cyclomatic complexity  of a structured program equals the number of predicates plus one […]

Fica aí a dica!

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

Assine o feed

Anúncios

Resolução de questões CTFL: Q1S1

Durante os estudos para a CTFL (Certified Tester – Foundation Level), algumas questões dos simulados geraram dúvidas, tanto para mim, quanto para outras pessoas, que até entraram em contato comigo perguntando sobre a resolução de tais.

Pensando no alto grau de dificuldade que muitas questões trazem, e que em muitas vezes apenas engolimos a resposta, e não entendemos o motivo dela. Vou fazer uma série de posts, com a resolução das questões que achei mais complicadas e também que outras pessoas acharam.

E para começar vamos ver a resolução da primeira questão do simulado 1 (Q1S1), uma questão que não é tão difícil, mas que pode gerar dúvida:

Um campo de entrada (input field) referente ao ano de aniversário aceita valores  de 1900 até 2004. Utilizando a análise do valor limite o teste usaria quais valores?

a) 0,1900,2004,2005 

b) 1900, 2004 

c) 1899,1900,2004,2005 

d) 1899, 1900, 1901,2003,2004,2005

Analisando o enunciado da questão

O campo aceita valores entre 1900 e 2004. E temos que usar a análise do valor limite para determinar os valores que usaremos no teste.

Resolução

A técnica de análise de valor limite faz uso dos valores: mínimo inválido, mínimo válido, máximo válido e máximo inválido. Portanto, teremos que ter quatro valores para o teste. Então já eliminamos duas alternativas: b e d

Agora que surge a dúvida…

Alternativa a

0 = valor mínimo inválido

1900 = valor mínimo válido

2004 = valor máximo válido

2005 = valor máximo inválido

Alternativa c

1899 = valor mínimo inválido

1900 = valor mínimo válido

2004 = valor máximo válido

2005 = valor máximo inválido

Agora você pode está pensando: “Então temos duas alternativas corretas?”

Não, pois a análise do valor limite, como o próprio nome já sugere, está interessada nos valores limites.

“Hmmm, já sei! O 0 não é um valor limite.”

Perfeito! É isso mesmo! O 0 é um valor mínimo inválido, porém está bem abaixo do limite mínimo.

Resposta

Alternativa: c) 1899,1900,2004,2005

Se você achou alguma questão difícil ou não clara, e gostaria que eu colocasse aqui, só fazer um comentário. Que iremos discutir sobre ela.

Ahh…se a explicação estiver confusa ou não for suficiente para o entendimento, sinta-se à vontade em comentar. 🙂

Até a próxima!

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

Assine o feed