Teste Simbólico Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural.

Slides:



Advertisements
Apresentações semelhantes
COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS
Advertisements

Programas e Microprogramas
Estrutura Condicional
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais.
Teste de Software Parte 3.
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Prof. Heloise Manica Paris Teixeira
PROGRAMAÇÃO MODULAR (com uso de subprogramas) prof
Algoritmos e Programação Estruturada Conceitos básicos
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Métodos de Classificação por Seleção: HeapSort
Análise Sintática Ascendente
Algoritmos com seleção
Apresentação da linguagem Python
Robson Godoi / Sandra Siebra
Algoritmos.
Paradigmas de programação
João Lucas de Oliveira Torres
Estruturas de Controlo em Pascal
FATORAÇÃO LU.
PROGRAMAÇÃO I UNIDADE 1.
Estrutura de Dados Unidade 16 Simulação da função Fatorial utilizando recursão – 16.1 Prof. Dr. Roberto Ferrari Jr.
Material Didático Proposto 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas.
Listas duplamente encadeadas Estrutura: tDado = integer; { ou real, char, etc.} tPtNo = ^tNo; tNo = record Ant: tPtNo Dado: tDado; Prox: tPtNo; end; var.
Procedure PercPreOrdem(a: tPtNo); var q: tPtNo; P: tPilha; begin Inicializa(P); Empilhar(P,a); while not PilhaVazia(P) do begin q:= Topo(P); Desempilhar(P);
Cássio Cristo Dawyson Guerra Matheu Santos
Estruturas de Dados Módulo 3 – Controle de Fluxo
Curso Prático de Métodos Formais
Estrutura de Decisão e Repetição
1 - Equações Diferenciais Ordinárias
Linguagem Pascal Prof. Sérgio Rodrigues.
Algoritmos.
Resolução de sistemas de equações não-lineares Método de Newton
Prof.Celso J. Munaro (DEL-CT-UFES)
Teste de Software Técnicas para a validação de sistemas de software
Construção e Análise de Algoritmos
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
Conversão de Tipos Exemplo: x + i, onde x é do tipo real e i é do tipo integer. A especificação da linguagem deve indicar se a linguagem suporta este tipo.
Aula 1 – Profª Danielle Costa
Programação de computadores Prof. Giovanni Castro.
FUNÇÃO DO 2º GRAU OU FUNÇÃO QUADRÁTICA.
Computação Eletrônica
Teste de Sistemas de Software
Comando CASE Desvio por seleção múltipla
Programação Lógica com Prolog
Professor Ulisses Vasconcelos
Faculdade Pernambucana - FAPE Setembro/2007
Fundamentos de linguagens de programação
INE Fundamentos de Matemática Discreta para a Computação
Semântica de Linguagens de Programação
Geração de Código Fase final do compilador
Teste Simbólico Marcelo d’Amorim
Programação de Computadores - 1
Analise de Algoritmos e Notação Assintótica
Introdução à Programação
Teste Estrutural. 2 Teste estrutural Teste baseado na estrutura do código Mais precisamente, –Critério de adequação baseia-se no código!
Linguagens de Programação
ALGORITMOS.
Andréa Iabrudi 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I.
Paradigmas das Linguagens de Programação - História
Algoritmo e Estrutura de Dados I Introdução ao conceito de algoritmo Márcia Marra
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Visual C# (parte 2) Prof. Igor Conrado Alves de Lima – Operadores, estruturas de decisão, vetores (arrays), e estruturas de.
1 Estruturas Condicionais Aula – Tópico 3 Algoritmos e Estruturas de Dados I (DCC/003)
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

Teste Simbólico Execução do programa com dados simbólicos ao invés de dados reais Técnica de poio à seleção de dados para o teste estrutural

Teste Simbólico valores simbólicos são atribuídos às variáveis de entrada do programa processador simbólico interpreta as instruções do programa resultados: valores de variáveis são fórmulas simbólicas predicado do caminho: conjunção das condições do caminho executado

Execução Simbólica A, B - vars de entrada S - var de saída

Teste Simbólico promove o entendimento do programa regra de formação dos valores das variáveis ex: procedure Potência para y = -3, x = 1/(1*x*x*x) determinar o intervalo de valores das variáveis de entrada que fazem o programa executar determinado caminho para o caminho 1-2-3-4- ... y > 0 para o caminho 1-2-3-5- ... y <= 0

procedure potencia(x,y:integer; var z:real); var p: integer; begin p=-y 1 2 3 4 5 6 7 8 9 11 12 13 10 p:=0 z:=0 (x,y) y>0 y<=0 p=y z:=1 p<>0 p:=p-1 z:=z*x y<0 y>=0 p=0 z:=1/z 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;

Predicado de Caminho sistema de inequações a < b & 2 a <= 0 quando resolvido determina intervalo de dados que leva à execução do caminho problemas: sistema de equações não lineares

Processadores Envolvidos na Execução Simbólica Interpretador Simbólico Simplificador de Expressões ex: y > 0 & . . . & y-1-1-1 = 0 & . . . Solucionador de Sistemas de Equações Provador de Teoremas se x<=y & x=y então x=y se x<0 & x>0 então “caminho impraticável” 7 p=0 p<>0 8 p:=p-1 z:=z*x 9 y<0

Teste Simbólico dirigido por Caminho atribuir valores simbólicos para variáveis de entrada; especificar caminho a ser executado; interpretar simbólicamente as instruções do programa; resolver o predicado (sistema de inequações); escolher dados dentro do intervalo resultante; executar o programa com os dados reais; comparar resultados computados com resultados esperados.

Caminho: 1-2-3-5-6-7-8-7-9-10-11-12-13 (x,y) 1 Caminho: 1-2-3-5-6-7-8-7-9-10-11-12-13 PC : y<=0 & -y<>0 & -y-1=0 & y<0 Resolvendo o predicado: y = -1 Execução real: x= 3 y=-1 esperado z=1/3 p:=0 z:=0 2 y>0 3 y<=0 p=-y 4 5 p=y 6 z:=1 7 p=0 p<>0 8 9 p:=p-1 z:=z*x y<0 10 y>=0 11 z:=1/z 12 13

Teste Estrutural + Simbólico procedimentos envolvidos análise estática do programa grafo de fluxo + tabela def-uso seleção de caminhos (critério de cobertura) execução do programa com dados (método funcional) análise de cobertura caso existam caminhos não cobertos interpretação simbólica => predicados de caminho identificação de caminhos impraticáveis resolução de predicados, determinação de dados comparação de resultados e de caminhos

procedure potencia(x,y:integer; var z:real); var p: integer; begin p=-y 1 2 3 4 5 6 7 8 9 11 12 13 10 p:=0 z:=0 (x,y) y>0 y<=0 p=y z:=1 p°0 p:=p-1 z:=z*x y<0 y>=0 p=0 z:=1/z procedure potencia(x,y:integer; var z:real); var p: integer; begin Tabela Def -Uso 1 2 3 - 4 def uso x y p z y 3 - 5 4 5 6 7 - 8 7 - 9 8 10-11 10-12 11 p z p z x 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;

Subcaminhos que satisfazem o critério todos-usos p=-y 1 2 3 4 5 6 7 8 9 11 12 13 10 p:=0 z:=0 (x,y) y>0 y<=0 p=y z:=1 p<>0 p:=p-1 z:=z*x y<0 y>=0 p=0 z:=1/z 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 * caminhos impraticáveis

Subcaminhos impraticáveis p=-y 1 2 3 4 5 6 7 8 9 11 12 13 10 p:=0 z:=0 (x,y) y>0 y<=0 p=y z:=1 p<>0 p:=p-1 z:=z*x y<0 y>=0 p=0 z:=1/z Subcaminhos impraticáveis * 1-2-3-4-6-7-9-10-11 pc: y>0 & y=0 & y<0 * 1-2-3-4-6-7-9-10-12 pc: y>0 & y=0 & y>0 * 4-6-7-9 pc: y>0 & y=0 * 6-7-9-10-11 pc: y=0 & y<0

Execução Simbólica de Caminho (x,y) 1 2 y>0 3 y<=0 Caminho: (1,2,3,5,6,7,8,7,9,10,11,12,13) (1,2,3,5) (y <= 0) (1,2,3,5,6,7,8) (y <= 0) & (- y <> 0) (1,2,3,5,6,7,8,7,8) (y <= 0) & (- y <> 0) & (- y - 1<> 0) (1,2,3,5,6,7,8,7,9, 10,11,12,13) (y <= 0) & (- y<> 0) & (- y - 1 = 0) & ( y < 0) 4 5 p=-y 6 7 p=0 p<>0 8 9 p:=p-1 z:=z*x 10 y<0 z:=1/z y>=0 11 12 13

Execução Simbólica problemas: predicados longos tem que ser simplificados sistemas de equações não lineares predicados de caminhos impraticáveis variáveis indexadas e dinâmicas processadores não triviais interpretador simbólico simplificador solucionador de sistemas, provador de teoremas