Teste Estrutural de Software

Slides:



Advertisements
Apresentações semelhantes
Passagem de parâmetros por valor txtInOut1.Text = num1 txtInOut2.Text = num2 txtOut.Text = num3 End Sub Private Sub cmdVal_Click() Dim num1 As Integer,
Advertisements

Manipulação de Arquivos de Dados
Java: Comandos Básicos
VHDL - uma visão geral 5 tipos de unidades
VHDL - Tipos de dados e operações
MC542 Organização de Computadores Teoria e Prática
While While Condição // comandos End While. Exemplos While Var contador As Integer contador = 0 While (contador < 10) contador += 1 console.ConsoleWrite(contador)
1 Estruturas de Controle Márcia J. N. Rodrigues Lucena Especialização em Técnicas e Ferramentas de Apoio à Decisão Departamento.
Procedimentos e Funções
GRAFOS. Motivação Muitas aplicações em computação necessitam considerar conjunto de conexões entre pares de objetos: –Existe um caminho para ir de um.
Grupo Paralelismo – Unesp RC
FORTRAN 90 Danilo Ueno Takahagi.
FORTRAN 90 Denise Yumi Takamura.
Exemplo de Plano de Ação
SQL Procedural Junho/2006.
SQL procedural – parte 2.
Subconsultas em SQL. Subconsulta Estrutura geral SELECT.... FROM.... WHERE [at] OPERADOR ( SELECT... FROM... [WHERE... ]) Declaração SELECT localizada.
Funções de Linha 24/04/06. Funções de Linha Gerar ou construir novo valor não existente na tabela inicial. Valor construído a partir de dados de uma ou.
Sintaxe de Fortran 25/abril/2006. Comandos Fortran PROGRAM PRINT READ STOP END.
Modularização de Código. Modularizar código Construção do algoritmo em um módulo único (Início...Fim/ Program... End) Único arquivo.
Introdução ao Fortran 4/abril/2006. Pseudocódigo Compreensão do problema Elaboração da lógica de resolução Tradução da lógica para pseudocódigo.
Prof. Dr. Helder Anibal Hermini
1. Equivalência entre portas 2. Derivação de expressões booleanas 3
Algoritmos com laços (ou seja, com conjuntos de instruções que devem ser executados repetidas vezes)
Criptografia de chave única
Teste Funcional de Software
Análise e Solução de Problemas
Algoritmos com Seleção
ANÁLISE SOBRE O ARTIGO: AUTOTUNING GEMMS FOR FERMI André Moraes Julio Toss.
Introdução A fim de preparar a geração de código, deve-se relacionar o fonte estático do programa às ações em tempo de execução. Durante a execução, o.
Geração de Código Otimizações independentes de máquina.
Geração de Código Cap. 8. Introdução Fase final para um compilador Entrada é uma representação intermediária do código fonte e a saída é um programa para.
Geração de Código Algoritmo de Escalonamento de instruções – List Scheduling.
O Fluxo de Testes © Alexandre Vasconcelos
FERRAMENTAS DA QUALIDADE
Capitulo 3 Técnicas de Diagnóstico CT-282 Tutores Inteligentes Diego Ajukas.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo III Comandos de Controle.
1.3 – Interpretadores – Compiladores versus Interpretadores
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo III Declarações e Comandos de Atribuição.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo XI Encadeamento de Estruturas por Ponteiros.
Capítulo IX – Ponteiros 9.1 – Introdução 9.2 – Relação entre ponteiros e variáveis indexadas 9.3 – Alocação dinâmica de memória 9.4 – Variáveis indexadas,
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Lógica de Descrições.
TA 733 A – Operações Unitárias II
Curso Técnico em Informática La Salle - Canoas
Business Process Management e Workflow - jBPM Aluno: Filipe Ferraz Salgado Orientador: Francisco Reverbel Novembro 2006.
ALOCAÇÃO DINÂMICA DE MEMÓRIA
EEL170 COMPUTAÇÃO I Antonio Cláudio Gómez de Sousa 1a série de slides versão 19/03/2012.
ARQUITETURA DE COMPUTADORES SOFTWARE PROGRAMA SEQUENCIA DE INSTRUÇÕES
TÉCNICAS DE CODIFICAÇÃO DE SINAIS
Organização de Sistemas de Computadores
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Prof. Giovanny Lucero Introdução Prof. Giovanny Lucero
Linguagens Formais e Tradutores Análise Sintática - 1
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
Entendendo as definições de classe
Análise do Desempenho dos Modelos
Curso de Programação em C++
Baseado no documento do Prof. Ronaldo Martins da Costa
LINGUAGENS DE PROGRAMAÇÃO
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Stored Procedure, Function and Trigger
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
INPE / CAP-334 Celso L. Mendes Aula 4-D(1) Reestruturação de Programas em Sistemas Vetoriais (II) Tópicos: Suporte à Paralelização Vetorização.
Exercícios de revisão.
Listas duplamente encadeadas Estrutura: tDado = integer; { ou real, char, etc.} tPtNo = ^tNo; tNo = record Ant: tPtNo Dado: tDado; Prox: tPtNo; end; var.
HandyBoard & Interactive C. HandyBoard Especificações –Clock de 2 MHz –32 Kb de RAM –7 entradas para sensores analógicos –9 entradas para sensores digitais.
Funções ou procedures Professor Esp. Diego André Sant’Ana
Cursor Professor Esp. Diego André Sant’Ana
RT-EXPERT Artis Corp. C calling program RTSUB [rule set subroutine] RTSUB [rule set subroutine] RTSUB [rule set subroutine]... DSL Decision Support Language.
Transcrição da apresentação:

Teste Estrutural de Software Técnicas de teste caixa-aberta para a validação de software

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 24

Grafo de Fluxo de Controle Nodo = comandos seqüenciais Arco = desvio de controle 1 1 1 2 3 2 4 Bloco Seqüencial Estrutura de Repetição (while-do) Estrutura de Decisão (if-then-else) 30

Critérios de Cobertura Objetivos identificar caminhos => determinar dados sinalizar conclusão dos testes tipos de Critérios fluxo de controle fluxo de dados 31

Crité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 32

Crité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 38

Exemplo - satisfação de critérios de cobertura de controle todos-nodos: (1,2,3,4) todos-arcos: (1,2,3,2,3,4) todos-caminhos: . . . (1,2,3,2,3,...,2,3,4) 1 2 3 4 34

cobertura de nodo cobertura de arco cobertura de caminho (1,2,3,4,5) ou (1,2,3,2,4,5) e 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

Para realizar uma cobertura de desvio: 1 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 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 ela read (X); X := 5; X := X + 2; (uso e definição de X) uso computacional da variável X write (X) ; Y := X + 2 ; uso em predicado (em condição) da variável if X = 4 then . . . while X < 1 do . . . 36

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;

Crité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) 37

Subcaminho livre de definição (x,y) 1 p:=0 z:=0 2 x, y definição 1 y>0 3 y<=0 4 5 p=-y 2 p=y 6 z:=1 y<=0 uso 3 y>0 4 5 7 p=0 P<>0 6 8 9 p:=p-1 z:=z*x 7 11 12 13 10 y<0 8 9 y>=0 z:=z*x uso 11 12 10 z:=1/z y<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 1 2 3 4 5 6 7 8 9 x, y y>0 y<=0 z:=z*x p 11 10 z:=z*x 8 7 9 z:=1/z z 4 p=y 6 7 p=0 p<>0 8 9 5 6 7 8 9 p<>0 p=0 p=-y p 11 12 10 y<0 y>=0

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