Técnicas de teste caixa-aberta para a validação de software
Teste Estrutural de SoftwareTeste Estrutural de Software
Teste Estrutural (caixa aberta)Teste Estrutural (caixa aberta)
DADOS RESULTADOS
• teste de caminho• dependente de código• grafo de fluxo de controle• critérios de cobertura
Atividades no Teste Estrutural Representar o programa através de grafo de fluxo Escolher critério de cobertura Selecionar caminhos (grafo de fluxo) Determinar dados de teste Determinar resultados esperados Instrumentar código fonte Executar o programa com os dados Comparar resultados computados c/esperados Analisar a cobertura de caminhos
Grafo de Fluxo de ControleGrafo de Fluxo de Controle
• Nodo = comandos seqüenciais
• Arco = desvio de controle
1
2 3
4
1
2
Estrutura deDecisão (if-then-else)
Bloco Seqüencial Estrutura deRepetição (while-do)
1
1
2
3
4 5
6
7
89
procedure potencia(x,y:integer; var z:real); var p: integer; begin p:=0; z:=0; if y>0 then p:=y else p:=-y; z:=1; while p<>0 do begin p:=p-1; z:=z*x; end; if y<0 then z:=1/z; end;
11
12
13
10
Critérios de CoberturaCritérios de Cobertura
• Objetivos• identificar caminhos => determinar dados
• sinalizar conclusão dos testes
• tipos de Critérios• fluxo de controle
• fluxo de dados
Critérios de CoberturaCritérios de Cobertura
• Cobertura de fluxo de controle:– todos-nodos (comandos)
– todos-arcos (desvios)
– todos-caminhos
• Cobertura de fluxo de dados:– todas-definições
– todos-usos
– todos-du-caminhos
– todos-potenciais-usos
Critérios de Fluxo de ControleCritérios de Fluxo de Controle
• Todos-arcos– Todos os arcos (ou decisões) devem ser executados
• Todos-nodos– Todos os nodos (ou comandos) devem ser executados
• Todos-caminhos– Todos os caminhos possíveis do grafo de fluxo devem
ser executados
Problema: grafos com ciclos representam número infinito de caminhos
Ordenação dos Critérios
Todos-caminhos
Todos-potenciais-du-caminhos
Todos-du-caminhos Todos-potenciais-usos
Todos-usos
Todos-c-usos/alguns-p-usos Todos-p-usos/alguns-c-usos
Todos-p-usosTodas-defs
Todos-arcos
Todos-nodos
Exemplo - Exemplo - satisfação de critérios de satisfação de critérios de cobertura de controlecobertura de controle
• todos-nodos:
(1,2,3,4)
• todos-arcos:
(1,2,3,2,3,4)
• todos-caminhos:
(1,2,3,4)
(1,2,3,2,3,4)
. . .
(1,2,3,2,3,...,2,3,4)
1
2
3
4
(1,2,3,4,5) ou(1,2,3,2,4,5)
(1,2,3,4,5) e(1,2,3,2,4,5)
cobertura de nodo
cobertura de arco
cobertura de caminho(1,2,4,5)(1,2,3,4,5)(1,2,3,2,4,5)(1,2,3,2,3,4,5)(1,2,3,2,(3,2),...,4,5)(1,2,3,(2,3),...,4,5) . . .
passando uma única vez pelo laço
1
2
3
4
5
Para realizar uma cobertura de desvio:
localizar todos os nodos de decisão listar todos os arcos que saem de nodos
de decisão selecionar dados que forcem a execução
de todos os arcos listados Exemplo
arcos: 3-4 3-5 7-8 7-9
1
2
3
4 5
6
7
8
9
Critérios de Cobertura baseado em Análise de Fluxo de Dados
grafo de fluxo + tabela definição-uso de variáveis
definição de variáveis:• em leitura, como parâmetro de entrada• lado esquerdo da atribuição,
uso de variáveis:• referência em expressão (aritmética ou lógica)
Definição e Uso de Variáveis
variável é definida quando um valor é atribuído a elaread (X);
X := 5;
X := X + 2; (uso e definição de X)
uso computacional da variável Xwrite (X) ;
Y := X + 2 ;
uso em predicado (em condição) da variávelif X = 4 then . . .
while X < 1 do . . .
procedure potencia(x,y:integer; var z:real);var p: integer;begin p:=0; z:=0; if y>0 then p:=y else p:=-y; z:=1; while p<>0 do begin p:=p-1; z:=z*x; end; if y<0 then z:=1/z;end;
Tabela Def -Uso
1 23 - 4
def usox yp z
y3 - 5
456
7 - 8
7 - 98
10-1110-12
11
ypp
yy
zpp
p z p z xyy
z z
p:=-y
1
2
3
4 5
6
7
89
11
12
13
10
p:=0z:=0
(x,y)
y>0 y<=0
p:=yz:=1
p<>0
p:=p-1z:=z*x
y<0y>=0
p=0
z:=1/z
Critérios de Fluxo de DadosCritérios de Fluxo de Dados
• Todas-definições
– Todas as definições de variáveis devem ser executadas pelo menos uma vez, até um uso das destas (considerando subcaminhos livres de redefinição)
• Todos-usos
– Todos os usos de variáveis devem ser executados pelo menos uma vez, a partir de definições destas variáveis (considerando subcaminhos livres de redefinição)
Subcaminho livre de definição
1
2
3
4 5
6
7
8 9
x, y definição
y>0 y<=0 uso
z:=z*x uso
p=-y
1
2
3
4 5
6
7
89
11
12
13
10
p:=0z:=0
(x,y)
y>0 y<=0
p=yz:=1
P<>0
p:=p-1z:=z*x
y<0y>=0
p=0
z:=1/z
11
12
10y<0
y>=0
Determinação de subcaminhos que satisfazem a critério de cobertura
construir o grafo de fluxo
construir a tabela def-uso determinar subcaminhos que iniciam com
definição e terminam com uso de variável
Subcaminhos selecionados
11
12
10
1
2
3
4 5
6
7
89
x, y
y>0 y<=0
z:=z*x
y<0y>=0
p=y4
6
7
89
p<>0p=0
p
5
6
7
89
p<>0 p=0
p=-y
p11
10
z:=z*x
8
7
89
z:=z*x
z:=1/z
z
Subcaminhos que satisfazem criterio todos-usos
1-2-3-4 1-2-3-5
1-2-3-4-6-7-8
1-2-3-4-6-7-9-10-11
1-2-3-4-6-7-9-10-12
4-6-7-8 4-6-7-9
5-6-7-8 5-6-7-9
6-7-8 6-7-9-10-11
8-7-8 8-9-10-11
Execução dos testes e Avaliação de Cobertura
1) executar o programa com um conjunto de dados arbitrariamente escolhido
2) comparar os caminhos executados com os subcaminhos selecionados pelo critério
3) caso todos os subcaminhos tenham sido exercitados, o critério foi satisfeito
4)caso contrário, escolher novo conjunto de dados e voltar ao passo 1.
Exemplo
Dados
(5, 2)
(2,-1)
(4, 0)
Caminho executado e subcaminhos exercitados
[1, 2, 3, 4, 6, 7, 8, 7, 8, 7, 9, 10, 12, 13]1-2-3-4-6-7-8 4-6-7-8 8-7-8
[1, 2, 3, 5, 6, 7, 8,7, 9, 10, 11, 12, 13]1-2-3-5 5-6-7-8
[1, 2, 3, 5, 6, 7, 9, 10, 12, 13]5-6-7-9
Caminhos Impraticáveis
caminhos do grafo, porém não são caminhos lógicos do programa
1, 2, 3, 4, 6, 7, 9, 10, 11
caso existam subcaminhos para os quais não for possivel encontrar dados que os exercite, provavelmente são caminhos impraticáveis
Problemas com o Teste Estrutural
número de subcaminhos muito elevado determinar dados que exercitem caminhos
selecionados pelo critério de cobertura
impossível, para caminhos impraticáveis
estratégia de determinação de dados para caminhos: Execução Simbólica
Top Related