Escolar Documentos
Profissional Documentos
Cultura Documentos
Teste Estrutural
1
Teste Estrutural
Critérios:
Teste Estrutural
2
Teste Estrutural
Teste Estrutural
início
leia nro
1
raiz = raiz-quadrada(nro)
escreva raiz
fim
3
Teste Estrutural
início
1
leia nro 1
se nro > 0
raiz = raiz-quadrada(nro) 2
2 3
escreva raiz
senão
escreva mensagem de erro 3 4
fim-se
4
fim
Teste Estrutural
raiz = raiz-quadrada(nro) 4 3
escreva raiz
senão 4 5
escreva mensagem de erro 5
fim-se 6
leia nro 6
fim-enqto 7
fim 7
4
Teste Estrutural 1
a
2
1 program exemplo(input, output); b c
2 var a: array[1..20] of char; Programa com d
3 x, i: integer; 3
4 c, resposta: char; blocos marcados
5 achou: boolean;
6 begin 4
7 writeln (‘entre com um inteiro entre 1 e 20’); 1 Grafo de fluxo
8 readln (x); e
9 while (x < 1) or (x > 20) do 2 de controle 5
10 begin
11 writeln (‘entre com um inteiro entre 1 e 20’); 3 f g
12 readln (x) h 6
13 end;
14 writeln (‘digite’, x, ‘caracteres’); 4
15 for i := 1 to x do 5
16 read (a[ i ]); 6 7
17 readln; 7 i
18 repeat
19 writeln (‘digite o caracter a ser pesquisado: ‘); 8
8
20 readln (c); j
21 achou := FALSE;
22 i := 1; 9
23 while (not(achou)) and (i <= x) do 9 k
r
24 begin
10 m p
25 if a[ i ] = c then l 10
26 achou := TRUE 11
11 12
27 else
12 n o
28 i := i + 1 13
29 end; 13 q
30 if achou then 14
31 writeln (‘o caracter ’, c, ‘ aparece na posicao’, i) 15 s 14 t
32 else
33 writeln (‘o caracter ’, c, ‘ não ocorre na string fornecida’); 16 15 16
34 writeln; u 17 v
35 writeln (‘deseja fazer a procura para outro caracter? [s/n]’);
17
36 readln (resposta); w
37 until (resposta = ‘n’) or (resposta = ‘N’);
18
38 end. 18 9
‒ Descrição:
‒ Estabelece como requisito de teste que sejam
executados todos os comandos do programa ao menos
uma vez
‒ Aplicação:
‒ é necessário concentrar-se nos comandos que são
controlados por condições
‒ fornecer um valor para x que esteja fora do intervalo
para forçar a execução dos comandos no loop (linhas
11-12)
‒ quando x está dentro do intervalo, ele será no mínimo 1
e o comando dentro do for (linha 16) será executado
10
5
Teste de Comandos
‒ Aplicação (cont.):
‒ o comando if (linha 25) precisa ser executado, com as
alternativas then e else (linhas 26 e 28) procurar por um
caracter que esteja na cadeia e que force a procura dentro
dela
‒ a entrada no while (linha 23) é garantida
‒ o comando if (linha 30) precisa ser executado, com as
alternativas then e else (linhas 31 e 33) um caracter que
pertença e outro que não pertença à cadeia (combinando com
o if anterior uma cadeia de caracteres a, de um caracter e
valores para a variável c que ocorra e que não ocorra em a)
‒ por fim, é preciso terminar o loop para executar o comando
end
11
Teste de Comandos
‒ Observação:
‒ é o nível mínimo de cobertura esperado no teste
estrutural
12
6
Teste de Ramos (Todos os Arcos)
‒ Descrição:
‒ Estabelece como dados de teste exercitar todas as saídas
verdadeiro e falso de todas as decisões
‒ Aplicação:
‒ é conveniente observar o grafo do programa
‒ observando o grafo, é necessário gerar dados de teste que causem
as duas saídas verdadeiro e falso que ocorrem nos nós 2, 5, 9, 10,
14 e 17
‒ para o nó 2, um valor da variável x menor que 1 ou maior que 20
causa a saída pelo ramo verdadeiro e um valor de x dentro desse
intervalo causa a saída pelo ramo falso
‒ o nó 5, comando for (linha 15), terá as saídas verdadeiro e falso,
desde que o valor de x seja ao menos 1 (e terá que ser para chegar
nesse ponto)
13
Teste de Ramos
‒ Aplicação (cont.):
‒ para o nó 9, loop while (linha 23), a saída verdadeiro (arco k) é
garantida devido aos comandos das linhas 21 e 22; a saída
falso (arco q) é garantida ou quando o caracter que está sendo
procurado é encontrado ou quando o final da cadeia é
encontrado
‒ o nó 10, if (linha 25), requer uma comparação que encontre o
caracter que está sendo procurado (arcos l, n) e uma outra que
cause o incremento de i (arcos m, o)
‒ o nó 14 (linha 30) precisa de um caracter que seja encontrado e
um outro que não seja encontrado
‒ o nó 17 requer pelo menos mais uma iteração do loop repeat
(arco r) antes que o final do programa seja encontrado (arco w)
14
7
Teste de Ramos
Dados de teste para o Teste de Ramos
entrada saída esperada
x a c resposta
‒ Observação:
‒ o conjunto de dados de testes é o mesmo do Teste de
Comandos, mas neste, o caracter a poderia ser fornecido
através de outra execução do programa
‒ já no Teste de Ramos, a execução do loop repeat é
obrigatória
15
‒ Descrição:
‒ esse critério fornece uma maneira de determinar um conjunto básico de
caminhos linearmente independentes, de modo que executando-os garante-
se a execução de todos os comandos ao menos uma vez
‒ Esse número é determinado pela fórmula da Complexidade Ciclomática de
Mc’Cabe
‒ V(G) = a – n + 2 ou externa
‒ V(G) = P + 1 ou Região
-Externa
‒ o.
V(G) = n de regiões -Todo espaço
‒ sendo: cercado de nós
‒ G: um grafo direcionado e arestas
‒ a: arestas (ramos)
‒ n: nós
‒ P: no. de nós predicativos
‒ Um caminho linearmente independente é aquele que contém ao menos um
novo nó
16
8
Teste do Caminho Base
‒ Aplicação:
‒ V(G) = 23 - 18 + 2 = 7
‒ V(G) = 6 +1 = 7
‒ V(G) = no. de regiões = 7
‒ a partir desse número deve-se escolher 7 caminhos linearmente
independentes do grafo:
‒ 1. 1-2-4-5-7-8-9-14-15-17-18
‒ 2. 1-2-4-5-7-8-9-14-16-17-18
‒ 3. 2-3-2
‒ 4. 5-6-5
‒ 5. 9-10-11-13-9
‒ 6. 9-10-12-13-9
‒ 7. 8-9-14-15-17-8
17
‒ Observação:
‒ esse conjunto é conhecido como conjunto base
a partir do qual qualquer outro caminho pode
ser construído
‒ Por exemplo, o caminho:
‒ 1-2-3-2-4-5-6-5-6-5-7-8-9-10-11-13-9-14-15-17-18
‒ é uma combinação dos caminhos 1, 3, 4 (2
vezes) e 5
‒ neste caso, o conjunto de dados de teste é o
mesmo do Teste de Ramos
18