apresentação do powerpointjeiks.net/wp-content/uploads/2013/05/slides_ltp_06.pdfteste de mesa -...

15
Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I

Upload: others

Post on 13-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Departamento de Engenharia Rural

Centro de Ciências Agrárias

Programação I

Técnicas de verificação de algoritmos

Um tipo de teste de algoritmo, denominado Teste de Mesa (ou Teste Exaustivo) pode ser feito através de uma simulação da execução do mesmo.

São dados valores para os dados de entrada e vai-se preenchendo uma tabela na qual são colocadas todas as variáveis e constantes do algoritmo.

Teste de mesa

Segue-se o fluxo de execução como se estivesse executando o algoritmo em um computador imaginário.

Teste de mesa

A cada comando de atribuição ou cálculo de expressão o valor das variáveis deve ser atualizado. Ao final do teste pode-se ter as seguintes situações:

o resultado esperado foi alcançado; ou

foram detectados erros nos comandos; ou

foram detectados erros no fluxo de execução - erro nas estruturas de controle.

Teste de mesa

Procure fazer testes relevantes como, por exemplo, aqueles que verificam casos extremos e casos de exceções. Com o teste é possível identificar em que ponto o algoritmo está falhando e fazer a correção.

Algoritmos errados podem gerar resultados errados ao serem executados por um computador ou mesmo não gerar nada se o computador detectar erros graves na sequência de operações.

Teste de mesa - Exemplo

algoritmo CALCULA_MEDIA; const NUM_NOT = 4; { constante com o número de notas } var P1, P2, P3, P4, MEDIA: real; { variáveis com as notas e a média } início

leia (P1); { leitura da nota da prova 1 } leia (P2); { leitura da nota da prova 2 } leia (P3); { leitura da nota da prova 3 } leia (P4); { leitura da nota da prova 4 }

MEDIA (P1 + P2 + P3 + p4) / NUM_NOT; { cálculo da média } escreva (MEDIA); { mostrar a média }

fim.

Teste de mesa - Exemplo

O teste de mesa desse algoritmo é dado da seguinte maneira considerando que serão fornecidos como entrada os valores 9.6, 5.7, 6.8 e 8.9 para as variáveis P1, P2, P3 e P4 respectivamente :

Passo NUM_NOT MEDIA P1 P2 P3 P4

0 4 - - - - -

Teste de mesa - Exemplo

Passo 1:

algoritmo CALCULA_MEDIA; const NUM_NOT = 4; { constante com o número de notas } var P1, P2, P3, P4, MEDIA: real; { variáveis com as notas e a média } início

leia (P1); { leitura da nota da prova 1 } leia (P2); { leitura da nota da prova 2 } leia (P3); { leitura da nota da prova 3 } leia (P4); { leitura da nota da prova 4 }

MEDIA (P1 + P2 + P3 + p4) / NUM_NOT; { cálculo da média } escreva (MEDIA); { mostrar a média }

fim.

Passo NUM_NOT MEDIA P1 P2 P3 P4

0 4 - - - - -

1 - 9.6 - - -

Teste de mesa - Exemplo

Passo 2:

Passo NUM_NOT MEDIA P1 P2 P3 P4

0 4 - - - - -

1 - 9.6 - - -

2 - 5.7 - -

algoritmo CALCULA_MEDIA; const NUM_NOT = 4; { constante com o número de notas } var P1, P2, P3, P4, MEDIA: real; { variáveis com as notas e a média } início

leia (P1); { leitura da nota da prova 1 } leia (P2); { leitura da nota da prova 2 } leia (P3); { leitura da nota da prova 3 } leia (P4); { leitura da nota da prova 4 }

MEDIA (P1 + P2 + P3 + p4) / NUM_NOT; { cálculo da média } escreva (MEDIA); { mostrar a média }

fim.

Teste de mesa - Exemplo

Passo 3:

Passo NUM_NOT MEDIA P1 P2 P3 P4

0 4 - - - - -

1 - 9.6 - - -

2 - 5.7 - -

3 - 6.8 -

algoritmo CALCULA_MEDIA; const NUM_NOT = 4; { constante com o número de notas } var P1, P2, P3, P4, MEDIA: real; { variáveis com as notas e a média } início

leia (P1); { leitura da nota da prova 1 } leia (P2); { leitura da nota da prova 2 } leia (P3); { leitura da nota da prova 3 } leia (P4); { leitura da nota da prova 4 }

MEDIA (P1 + P2 + P3 + p4) / NUM_NOT; { cálculo da média } escreva (MEDIA); { mostrar a média }

fim.

Teste de mesa - Exemplo

Passo 4:

Passo NUM_NOT MEDIA P1 P2 P3 P4

0 4 - - - - -

1 - 9.6 - - -

2 - 5.7 - -

3 - 6.8 -

4 - 8.9

algoritmo CALCULA_MEDIA; const NUM_NOT = 4; { constante com o número de notas } var P1, P2, P3, P4, MEDIA: real; { variáveis com as notas e a média } início

leia (P1); { leitura da nota da prova 1 } leia (P2); { leitura da nota da prova 2 } leia (P3); { leitura da nota da prova 3 } leia (P4); { leitura da nota da prova 4 }

MEDIA (P1 + P2 + P3 + p4) / NUM_NOT; { cálculo da média } escreva (MEDIA); { mostrar a média }

fim.

Teste de mesa - Exemplo

Passo 5:

Passo NUM_NOT MEDIA P1 P2 P3 P4

0 4 - - - - -

1 - 9.6 - - -

2 - 5.7 - -

3 - 6.8 -

4 - 8.9

5 7.75

algoritmo CALCULA_MEDIA; const NUM_NOT = 4; { constante com o número de notas } var P1, P2, P3, P4, MEDIA: real; { variáveis com as notas e a média } início

leia (P1); { leitura da nota da prova 1 } leia (P2); { leitura da nota da prova 2 } leia (P3); { leitura da nota da prova 3 } leia (P4); { leitura da nota da prova 4 }

MEDIA (P1 + P2 + P3 + p4) / NUM_NOT; { cálculo da média } escreva (MEDIA); { mostrar a média }

fim.

Teste de mesa - Exemplo

Inicialmente, os valores das variáveis são indefinidos, ou seja, não podemos afirmar quais os valores armazenados nestas variáveis.

Por convenção, diz-se que os valores dessas variáveis são “lixos”.

No passo 0 o valor da constante já é definido, porém os valores das variáveis são lixos.

No passo 1 do algoritmo, a variável P1 é “lida” e as demais continuam com lixo.

Teste de mesa - Exemplo

No fim da execução do algoritmo podemos ver claramente os valores armazenados em cada variável. O valor da constante, devido a sua definição, não é alterado em momento algum.

Passo NUM_NOT MEDIA P1 P2 P3 P4

0 4 - - - - -

1 - 9.6 - - -

2 - 5.7 - -

3 - 6.8 -

4 -

5 4 7.75 9.6 5.7 6.8 8.9

Referências

BORLAND. Turbo Pascal, versão 7.0. [S.L.] : Borland International, Inc.,1992.

DEITEL, P. J.; DEITEL, H.M.; Java: How to program, 9th ed, Ed. Prentice-Hall, 2011. ISBN: 978-0-13-257566-9.

FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Algoritmos estruturados. 3ed, Ed. LTC, 1999. ISBN: 9788521611806.

FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Pascal estruturado. 3ed, Ed. LTC, 1999. ISBN: 9788521611745.

GUIMARÃES, A. M.; LAGES, N. A. C.; Algoritmos e estruturas de dados. 1ed, Ed. LTC, 1994. ISBN: 9788521603788.

GRIFFITHS,D., BARRY,P., Head First Programming – A learner's guide to programming using the Python language, O´Reilly, 2009, 406p.

http://wwwusers.rdc.puc-rio.br/rmano/processo.html

Velloso, F. C.; Informática: Conceitos Básicos. 7ed, Ed. Campus, 2004. ISBN: 9788535215366.