# 6.2 - Teste de Mesa

O Teste de Mesa é um processo manual que é utilizado para validar a lógica de um determinado algoritmo. Ele é utilizado principalmente em algoritmos quando a linguagem utilizada não possui nenhuma ferramenta automatizada de depuração.

Existe testes bem mais elaborados, mas para começar-mos a entender o fluxo de um programa pode ser útil.

Não há uma forma padrinizada para a elaboração de um Teste de Mesa, pois dependerá muito do que pretende verificar no algoritmo e do seu nível de entendimento. No geral, você deverá criar no papel uma tabela com todas as variáveis do programa e executar passo a passo seu código, anotando sempre os valores das variáveis. Assim você será capaz de identificar se os valores condizem com o esperado ou localizar a exata linha de código onde o valor da variável passa a ficar errado.

Em nosso curso, iremos considerar os seguintes passos:

1 - Elaborar uma tabela onde cada coluna se refere a cada variável envolvida e o resultado de uma operação em particular (ou observação pertinente).

2 - Executar os passos previstos no algoritmo.

3 - Verificar se os resultados obtidos são coerentes com os previstos.

4 - Encerrar o teste após um número razoável de resultados corretos obtidos.

Utilizaremos a sequência:

1 - Identifique todas as variáveis no seu programa.

2 - Crie uma tabela onde a primeira coluna se chama "Passo", a segunda de chama "Linha". A partir disto, crie uma coluna para cada variável do programa.

3 - Na primeira linha da tabela, preencha a coluna "Passo" com "Início", pode deixar a coluna "Linha" em branco e preencha cada coluna das variáveis com os respectivos valores iniciais.

4 - Percorra seu código linha a linha, preenchendo a tabela. A coluna "Passo" deverá ser incrementada a cada nova linha na tabela; a coluna "Linha" deve indicar o número da linha no código que está sendo analisada e em cada coluna das variáveis deve constar o respectivo valor para cada variável após a linha de código ser executada.

5 - Execute o passo 4 até o programa finalizar.

Vamos utilizar de exemplo o seguinte algoritmo:






















#include <iostream>

int main () 
{
    int A = 12, B, C = 10; // 1
 // 2
    D = 2; // 3
 // 4
    while(A >= C && C > B) // 5
    { // 6
        if(A > B) // 7
        { // 8
            A -= B; // 9
        }else // 10
        { // 11
            A += B; // 12
            B *= 2; // 13
        }
    }
}

Passo 1: Identificar todas as variáveis e as condições do programa

No nosso caso, temos os inteiros A, B e C

Temos também a condição do loop na linha 5

Passo 2: Criar a tabela

Linha A B C Condição

Passo 3: Preencher a primeira linha da tabela

Linha A B C Condição
1 12 ? 10 --

Passo 4: Percorrer cada linha do programa, preenchendo a tabela

Apenas escreveremos algo na tabela quando tiver alguma mudança, como no caso pulamos a linha 2

Linha A B C Condição
1 12 ? 10 --
3 12 2 10 --

Na linha 5, temos uma condição, que no caso retorna true

A > B => true && C > A => true resulta em: true

Linha A B C Condição
1 12 ? 10 --
3 12 2 10 --
5 12 2 10 true

Temos outra condição na linha 7,no caso A é maior que B,então retorna true

Linha A B C Condição
1 12 ? 10 --
3 12 2 10 --
5 12 2 10 true
7 12 2 10 true
  • Se preferir, separe as condições

Na linha 8, temos mudanças em A

Linha A B C Condição
1 12 ? 10 --
3 12 2 10 --
5 12 2 10 true
7 12 2 10 true
8 10 2 10 --

Agora, o loop será repetido novamente,e novamente retornara true,e o loop continua

Linha A B C Condição
1 12 ? 10 --
3 12 2 10 --
5 12 2 10 true
7 12 2 10 true
9 10 2 10 --
5 10 2 10 true
7 10 2 10 true
9 8 2 10 --

Dessa vez, o loop principal irá retornar false, por conta que A não é maior ou igual a C

Linha A B C Condição
1 12 ? 10 --
3 12 2 10 --
5 12 2 10 true
7 12 2 10 true
9 10 2 10 --
5 10 2 10 true
7 10 2 10 true
9 8 2 10 --
4 8 2 10 false

Pronto, finalizamos nosso teste de mesa

  • Em caso de testes com saída de dados, faça uma tabela separada apenas para a saída.