correção do exercício teste caixa-brancainf1628/docs/2019_1/aula_24.pdf · exercício 1a • a)...

16
Correção do Exercício Teste Caixa-Branca Alessandro Garcia LES/DI/PUC-Rio

Upload: others

Post on 13-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Correção do ExercícioTeste Caixa-Branca

Alessandro Garcia

LES/DI/PUC-Rio

Page 2: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1

• a) Fluxograma

Julho 2009 2 / 32Alessandro Garcia © LES/DI/PUC-Rio

1. #include <stdio.h>

2.

3. int comparar() {

4. int num1, num2, num3, maior = 0;

5. printf ("Entre 3 numeros positivos");

6. scanf ("%d %d %d", &num1, &num2, &num3);

7. if ((num1 > num2) && (num1 > num3)) {

8. maior = num1;

9. return maior;

10. } else {

11. if (num2 == num3) {

12. printf ("Nao existe maior ");

13. if (num3 == num1) { printf ("... e todos sao iguais!"); }

15. return maior;

16. }

17. if ((num2 > num3) && (num2 != num 1)) {

18. maior = num2;

19. return maior;

20. }

21. if ((num3 > num2) && (num3 != num1)) {

22. maior = num3;

23. return maior;

24. }

25. printf ("Nao existe maior ");

26. return maior;

25. }

26. }

A

B

C

DEF

G

I

J

K

L

M

N

H

Note que existem dois

comandos (13 e 14), com

rótulos G e H, na mesma linha.

Page 3: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Jun 2009 3 / 32LES/DI/PUC-Rio

Critérios de cobertura: instruções

• Cobertura de instruções

(vértices)

– Cada instrução é executada

pelo menos uma vez no

conjunto de todos os casos de

teste

– rotulam-se as instruções e

criam-se os casos de teste

• cada caso percorre pelo

menos uma instrução ainda

não percorrida

• até que todas as instruções

tenham sido percorridas

– i = 4 ; j = 8 ➔ A B C D

– i = 4 ; j = 6 ➔ A B C E

i = ( i + j ) / 2 ;

j = 10 ; i = 10 ;

if ( ( i < 10 )

&& ( j < 10 ))

if ( i > 5 )

S

N

S N

D E

A

B

C

Page 4: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1a

• a) Fluxograma

Julho 2009 4 / 32Alessandro Garcia © LES/DI/PUC-Rio

Quem pode fazer o fluxograma no quadro?

Page 5: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Fluxograma

Julho 2009 5 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 6: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1a

• a) As entradas dos cinco casos de teste abaixo representam

um conjunto suficiente e mínimo para satisfazer o critério de

cobertura de instruções? Justifique.

num1 = 3, num2 = 2, num3 = 2

num1 = 3, num2 = 4, num3 = 3

num1 = 3, num2 = 4, num3 = 5

num1 = 4, num2 = 5, num3 = 5

num1 = 5, num2 = 5, num3 = 5

Julho 2009 6 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 7: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1a

• a) As entradas dos cinco casos de teste abaixo representam

um conjunto suficiente e mínimo para satisfazer o critério de

cobertura de instruções? Justifique.

num1 = 3, num2 = 2, num3 = 2 -> A B C

num1 = 3, num2 = 4, num3 = 3 -> A B D E J K

num1 = 3, num2 = 4, num3 = 5 -> A B D E J L M

num1 = 4, num2 = 5, num3 = 5 -> A B D E F G I

num1 = 5, num2 = 5, num3 = 5 -> A B D E F G H I

Não, pois nenhum dos casos de teste resulta

na execução de N.

Faltou caso onde (num1 = num2) > num3

Julho 2009 7 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 8: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1a

Julho 2009 8 / 32Alessandro Garcia © LES/DI/PUC-Rio

A B C

A B D E J K

A B D E J L M

A B D E F G I

A B D E F G H I

x

xx

x

falta: A B D E J L N

exemplo:

num1 = 5, num2 = 5, num3 = 4

caso onde não

existe maior

Page 9: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1a

Julho 2009 9 / 32Alessandro Garcia © LES/DI/PUC-Rio

A B C

A B D E J K

A B D E J L M

A B D E F G I

A B D E F G H I

x

xx

x

precisa dos dois?

É o conjunto mínimo?

Page 10: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1a

Julho 2009 10 / 32Alessandro Garcia © LES/DI/PUC-Rio

A B C

A B D E J K

A B D E J L M

A B D E F G I

A B D E F G H I

x

xx

x

bastaria o segundo(em cobertura de instruções)

ou seja, o conjunto suficiente e mínimo seria:

num1 = 3, num2 = 2, num3 = 2 -> A B C

num1 = 3, num2 = 4, num3 = 3 -> A B D E J K

num1 = 3, num2 = 4, num3 = 5 -> A B D E J L M

num1 = 4, num2 = 5, num3 = 5 -> A B D E F G I

num1 = 5, num2 = 5, num3 = 5 -> A B D E F G H I

num1 = 5, num2 = 5, num3 = 4 -> A B D E J L N

Page 11: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1b

• b) Os três caminhos (arcos de execução) abaixo descrevem

casos de teste abstratos para a função comparar(). Note

que os rótulos (letras) estão associados com instruções e/ou

blocos de código da função. Complete o conjunto de

caminhos abaixo de forma a obter um conjunto mínimo de

casos de teste para satisfazer o padrão de cobertura de

arestas. Qual o número mínimo de casos de teste que foi

necessário para satisfazer tal padrão?

Inicial: ABC, ABDEFGI, ABDEJK

Julho 2009 11 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 12: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1b

Julho 2009 12 / 32Alessandro Garcia © LES/DI/PUC-Rio

x

x

arestas já

exercitadas

A B C

A B D E F G I

A B D E J K

Note que faltam

pelo menos 3

caminhos para

exercitar as arestas

faltantes

Page 13: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1b

Julho 2009 13 / 32Alessandro Garcia © LES/DI/PUC-Rio

A B C

A B D E F G I

A B D E J K

Note que faltam

pelo menos 3

caminhos para

exercitar as arestas

faltantes

x

x

arestas já

exercitadas

Page 14: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1b

• b) Os três caminhos (arcos de execução) abaixo descrevem

casos de teste abstratos para a função comparar(). Note

que os rótulos (letras) estão associados com instruções e/ou

blocos de código da função. Complete o conjunto de

caminhos abaixo de forma a obter um conjunto mínimo de

casos de teste para satisfazer o padrão de cobertura de

arestas. Qual o número mínimo de casos de teste que foi

necessário para satisfazer tal padrão?

Inicial: ABC, ABDEFGI, ABDEJK

ABDEFGHI, ABDEJLM, ABDEJLN, totalizando 6 casos

de teste

Julho 2009 14 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 15: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

Exercício 1

• c) Apresente a expressão regular geradora de caminhos que

permita identificar os casos de teste necessários para

satisfação do critério de cobertura de caminhos. Use os

rótulos (letras) associados acima ao código da função

comparar().

AB ( C| (DE ( (FG(HI|I))) | (J(K|(L(M|N) ))))))

• Qual seria o caminho mais longo e o mais curto que

poderiam ser gerados a partir desta expressão?

mais curto: ABC

mais longo: ABDEFGHI

Julho 2009 15 / 32Alessandro Garcia © LES/DI/PUC-Rio

Page 16: Correção do Exercício Teste Caixa-Brancainf1628/docs/2019_1/aula_24.pdf · Exercício 1a • a) As entradas dos cinco casos de teste abaixo representam um conjunto suficiente e

• D)

Julho 2009 16 / 32Alessandro Garcia © LES/DI/PUC-Rio

Exercício 1

16 / 32

1. #include <stdio.h>

2.

3. int comparar() {

4. int num1, num2, num3, maior = 0;

5. printf ("Entre 3 numeros positivos");

6. scanf ("%d %d %d", &num1, &num2, &num3);

7. if ((num1 > num2) && (num1 > num3)) {

8. maior = num1;

9. return maior;

10. } else {

11. if (num2 == num3) {

12. printf ("Nao existe maior ");

13. if (num3 == num1) { printf ("... e todos sao iguais!"); }

15. return maior;

16. }

17. if ((num2 > num3) && (num2 != num 1)) {

18. maior = num2;

19. return maior;

20. }

21. if ((num3 > num2) && (num3 != num1)) {

22. maior = num3;

23. return maior;

24. }

25. printf ("Nao existe maior ");

26. return maior;

25. }

26. }

A

B

C

DEF

G

I

J

K

L

M

N

Hlocais onde

poderiam ser

inseridos os

contadores

(de arestas)

antes do

return

no bloco

if