Teste de Software 15: Geração randômica de teste Marcelo d’Amorim

Slides:



Advertisements
Apresentações semelhantes
Árvores Passeios.
Advertisements

Construção de listas de decisão Os tópicos anteriores tratam de indução de conceitos que podem ser descritos usando uma única região de decisão Neste tópico.
COMPARAÇÃO MÉTODOS DIRETOS E ITERATIVOS
Solved Exercises 1. Finding the Peak. Let A= a1,…,an be a sequence of n numbers with the following property: there is p in {1,…,n} for which (i) the.
UML Modelando um sistema.
Generalização da Técnica Levelwise para Mineração de Padrões Sandra de Amo.
Inteligência Artificial
Árvores.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
2002 LCG/UFRJ. All rights reserved. 1 Tópicos em C++ Claudio Esperança Paulo Roma Cavalcanti.
HeapSort Filas de Prioridade – Heap
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária – Árvores de Busca
Medida do Tempo de Execução de um Programa
Busca Cega (Exaustiva)
André Lopes Pereira Luiz Carlos Barboza Júnior
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Capítulo 3 - Russell e Norvig
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Meta - heurísticas Prof. Aurora
Departamento de Estatística e Informática
Informática Teórica Engenharia da Computação
Slides preparados por Bruno Monteiro e Marcelo dAmorim Execução simbólica - 24/09/2009.
Visão Geral PRO.NET.
I Iterated Local Search Helena R. Lorenço, Olivier Martinz
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
Haskell Programação Funcional
Introdução e Busca Cega
Introdução aos Agentes Inteligentes Busca Cega (Exaustiva)
Estruturas de Dados Aula 9: Listas (parte 1)
Algoritmos de Busca Local
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Desenvolvimento de Jogos e Entretenimento Digital Oficina temática: Algoritmos e Programação Orientação a Objetos: herança Professor: Sandro Rigo.
Introdução à Criptografia
Engenharia de Software
Programação Orientada à Objetos
Tradução Dirigida por Sintaxe
Estruturas de Dados Aula 15: Árvores
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Inteligência Artificial
94 Elsa Carvalho Universidade da Madeira Departamento de Matemática e Engenharias Programação em Lógica e Funcional (2000/01) (Actualizado em 2005/06)
Testes Baseados Em Riscos: Uma revisão do Estado-da- Arte Nielson Pontes Outubro, 2010.
Estruturas de Dados I Segundo Período de 2008 Gabarito da Primeira Prova.
Como analisar um algoritmo
Resolução de Problemas de Busca
Teste de Software 14: Geração de teste baseado em modelos: MBT
1 Introdução aos Agentes Inteligentes Resolução de Problemas de Busca Flávia Barros.
Teste Simbólico Marcelo d’Amorim
Data Flow Testing. Vários critérios de adequação até aqui Baseado em entradas de função (funcional)‏ Baseado na estrutura do programa (estrutural)‏ Baseado.
Teste de Software 02: Oracles Marcelo d’Amorim
Algoritmo de Huffman.
1 Metodologia de Ensino, de Avaliação, e Programa do Curso Marcelo d’Amorim Teste de Software.
Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1 –Medir cobertura. Mas ainda não.
Teste de Software 06: Adequação do Teste Marcelo d’Amorim
1 Padrões: Composite (p. 163) Objetivo: compor objetos em estruturas de árvores para representar relações de parte/todo. “Composite” permite tratar objetos.
AVL Árvores Equilibradas Sumário AVL Splay B Vermelho-Preto AA e BB Multidimensionais quaternárias k-d [Pesquisa Lexicográfica tries multivia tries binárias.
Teste de Software 08: Teste Funcional Marcelo d’Amorim
Data Flow Testing. Vários critérios de adequação até aqui Baseado em entradas de função (funcional)‏ Baseado na estrutura do programa (estrutural)‏ Baseado.
Introdução aos Agentes Inteligentes Tipos de Problemas de Busca Flávia Barros.
SBMF 2008, Salvador-BA, Brasil Marcelo d'Amorim Fundamentos do Teste de Software.
Inteligência Artificial
Tipos Compostos Heterogêneos e Tipos Abstratos de Dados
Sistemas Inteligentes Busca Cega (Exaustiva)
Busca Heurística Prof. Valmir Macário Filho. 2 Busca com informação e exploração Capítulo 4 – Russell & Norvig Seção 4.1 Estratégias de Busca Exaustiva.
18/09/ /12/20082 Testes Baseados Em Modelo Diana Rúbia Paulo César Qualidade, Processos e Gestão de Software Alexandre Vasconcelos {drrr, pco,
Métodos Populacionais. Mantém um conjunto de soluções candidatas e não só uma solução Cada solução será modificada e avaliada Hill-Climbing paralelos.
Disciplina: Estrutura de dados e Algoritmos Docentes: MSc. Manuel Zunguze.
Teste de Software 09: Teste Estrutural Marcelo d’Amorim
Transcrição da apresentação:

Teste de Software 15: Geração randômica de teste Marcelo d’Amorim

Problema Espaço de estados da aplicação é enorme –Muitas operações –Muitos dados Que sequência de operações escolher? Que dado construir?

Teste Randômico Constrói sequência e dados tomando decisões randômicas

Teste Randômico Mostrou sucesso em vários casos –Ideal: explorar espaço de estados de forma uniforme (dependendo do gerador aleatório) Caminhos de um programa

Exemplo: ling. funcional Como gerar dados para a função ML split? local fun split_iter (x::xs, left, right) = split_iter(xs, right, x::left) | split_iter ([ ], left, right) = (left, right) in fun split(x) = split_iter(x,[ ],[ ]) end;

Exemplo: ling. funcional Como gerar dados para a função ML split? local fun split_iter (x::xs, left, right) = split_iter(xs, right, x::left) | split_iter ([ ], left, right) = (left, right) in fun split(x) = split_iter(x,[ ],[ ]) end; Assumindo tipo de split: int list => (int list, int list) –primeiro gera-se inteiros e lista vazia, depois listas mais complexas

Generalização Gera-se dados recursivamente, baseado na definição de tipo –Passo 1: Gerar átomos –Passo 2: Gerar objetos estruturados

Outro exemplo: Tipos estruturados datatype inttree = empty | node of int * inttree * inttree;

Passo 1: Gerar átomos intinttree -5, -2, 0, 2, 5e Usa-se construtores elementares: datatype inttree = empty | node of int * inttree * inttree; e = empty

Passo 1: Gerar objetos estruturados intinttree -5, -2, 0, 2, 5e, (-2,e,e), (5,e,e) Usa-se construtores elementares: datatype inttree = empty | node of int * inttree * inttree; Iteração 1

Passo 1: Gerar objetos estruturados intinttree -5, -2, 0, 2, 5e, (-2,e,e), (5,e,e), (0, (-2,e,e),e), (0,e, (5,e,e)), (0, (-2,e,e), (5,e,e)) Usa-se construtores elementares: datatype inttree = empty | node of int * inttree * inttree; Iteração 2 cópias!

Limitação Não considera invariantes do programa –Exemplos Programa com comportamento especial para listas ordenadas de tamanho N Programa que aceita apenas árvores com o tamanho da sub-árvore esquera 2x o da direita

Falta de invariantes na geração Duas soluções: –Usar código para construir dados Código precisa construir valores relevantes –E.g. como testar caso lista ordenada em um algoritmo de ordenação –Execução simbólica Sucesso depende de limitações de um SAT solver

Teste randômico de programas OO

Randoop Contratos (Oracles) default –Mas o usuário pode definir os seus É necessário definir região para geração! –Teste de unidade Aplica redução de suíte –Baseada em equals, null, e exceções –Usuário pode definir seus critérios de filtro Não explora particularidade de oo –E.g., polimorfismo

Terminologia Randoop gera sequências como estas Cada sequência gera mais de um valor –s1.1 (b1), s2.1 (b2), s3.1 e s3.2 (a1 e b3)

Feedback-directed random test generation. Carlos Pacheco et al., ICSE 2007

randomSeqsAndVals:

Feedback-directed random test generation. Carlos Pacheco et al., ICSE 2007 extend: