Teste de Software 11: Teste baseado em falhas

Slides:



Advertisements
Apresentações semelhantes
Teste de Software 01: Introdução
Advertisements

Python: Recursão Claudio Esperança.
gerador de código intermediário
Introdução Gdes. bancos de dados: Concorrência: Transação:
Introdução à Ciência da Computação Linguagens de Programação.
Prolog: Predicados Built-in 1
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Java: Pacotes e Modificadores de Visibilidade
Java: Pacotes e Modificadores de Visibilidade
Mineração de Padrões Arborescentes
Cálculo Relacional Datalog não-recursivo
Generalização da Técnica Levelwise para Mineração de Padrões Sandra de Amo.
Mutação de Interface Interface Mutation: An Approach for Integration Testing Marcio E. Delamaro José C. Maldonado Aditya P. Mathur.
Mutação Orientada a Objeto para Assegurar a Qualidade de Testes Baseado no Artigo: Object-Oriented Mutation to Asses the Quality of Tests Anna Derezinska.
Pesquisa em Memória Primária
Recursividade Conceitos e Aplicações.
Porto Alegre, 5 de Outubro de 2009
Reliability verification of Digital Systems Design based on mutation Analysis Samuel S. Marczak.
AED – Algoritmos e Estruturas de Dados
Lógica para Computação (IF61B) Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng.
Lógica para Computação: Especificação e Verificação de Programas
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Professores Claudia Boeres e Estefhan Dazzi Wandekoken 2010/1.
(baseado em slides de ex-alunos)
Testes de Mutação baseado no artigo de Mário Correia,
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Uma ferramenta para Geração de Mutantes para linguagem C#.
Classes e objetos Modelagem
Introdução à Programação
Aula prática - análise contextual
Subset Sum Algoritmos e Estruturas de Dados – IF672
Arquitetura do Software
Linguagem Funcional 2 Linguagem Funcional 2 - LF2 Estende LF1 com funções de alta ordem Uma função passa a ser um valor O contexto inclui um único componente:
Um Framework Para Testes
Abordagens para problemas NP-completos
Teste de Software 03: Teste e o processo de desenvolvimento
Engenharia de Software
Java Bytecode Software Básico Mitsuo Takaki.
Aula 14 1 Análise Sintáctica Compiladores, Aula Nº 14 João M. P. Cardoso.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/04/2014.
Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng. celsokaestner (at) utfpr (dot) edu (dot) br.
Testes de Software AULA 02 Eduardo Silvestri
Teste baseado em falhas
Prof. Msc Roberta Andrade
SCORE 2009 – aula a convite do Prof. Jaelson Castro Marcelo d’Amorim Testes em 2h.
AST no ANTLR Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza
Teste de Software 14: Geração de teste baseado em modelos: MBT
Desenvolvimento de Software Dirigido a Modelos
Projetando Sistemas Digitais com SystemVerilog
Ferramentas JMOCKIT, ALLPAIRS, ECLEMMA, MUCLIPSE
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Recursividade Profs. De Prog2 e Lab2.
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
Alinhamento de Cadeias de DNA COMPARAÇÃO DE SEQÜÊNCIAS
Critérios de adequação e os diversos tipos de teste
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
Teste de Software 08: Teste Funcional Marcelo d’Amorim
Planejamento do Teste. Define que “tipo de teste” se quer fazer Depende de restrições do ambiente. Exemplo: –Deve basear-se em requisitos –Limitações.
Teste Estrutural. 2 Teste estrutural Teste baseado na estrutura do código Mais precisamente, –Critério de adequação baseia-se no código!
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.
SBMF 2008, Salvador-BA, Brasil Marcelo d'Amorim Fundamentos do Teste de Software.
MATA56 Tipos, Verificação de Tipos Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave – nomes.
QUALIDADE DE SOFTWARE Prof. Carlos Augusto da Costa Carvalho.
Introdução 1.
Aula Prática 5 Recursão Monitoria  Na linguagem C, como em muitas outras linguagens, uma função pode chamar a si própria.  Uma função assim.
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,
Teste de Software 09: Teste Estrutural Marcelo d’Amorim
MUTAÇÃO DE INTERFACE (MI) JACKSON ANTONIO DO PRADO LIMA SILVIA REGINA VERGILIO.
Transcrição da apresentação:

Teste de Software 11: Teste baseado em falhas Marcelo d’Amorim damorim@cin.ufpe.br

Resumo Teste baseado em falhas e o teste de mutação

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 não se sabe se o teste eh adequado para encontrar erros

Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 2 Introduzir um bug (Fault seeding) É possível saber se o erro introduzido será ou não encontrado (Limitaçoes no final desta aula…)

Teste de Mutação Como saber se TS é adequada para encontrar erros?  … Tn  P Como saber se TS é adequada para encontrar erros?

Teste de Mutação P’ é uma versão que contém um erro! TS = T0 T1 T2 … Tn  T0 T1 T2 … Tn  P P’ P’ é uma versão que contém um erro! O que se pode concluir sobre TS?

Teste de Mutação P’ é uma versão que contém um erro! TS = T0 T1 T2 … Tn  T0 T1 T2 … Tn  P P’ P’ é uma versão que contém um erro! O que se pode concluir sobre TS? Inadequado para encontrar erro introduzido em P’

Teste de Mutação O que o programador deve fazer ao perceber isto?   TS = T0 T1 T2 … Tn  T0 T1 T2 … Tn  P P’ O que o programador deve fazer ao perceber isto?

Teste de Mutação O que o programador deve fazer ao perceber isto? TS = T0 T1 T2 … Tn  T0 T1 T2 … Tn  P P’ O que o programador deve fazer ao perceber isto? Adicionar novo teste para capturar erro em P’

Teste de Mutação Novo teste deve passar em P e falhar em P’ TS = T0 T1 T2 … Tn  T0  P P’ T1  T2  … Tn  Tn+1  Tn+1  Novo teste deve passar em P e falhar em P’ Definição: TS distingue programas P e P’

Terminologia Mutante Operador de Mutação Mutante morto Mutante sobrevivente Mutante equivalente

Terminologia Mutante: Programa original modificado Operador de Mutação: Definição de uma transformação (de original para mutante) Mutante morto: Quando a suíte de teste consegue distinguir mutante do original Mutante sobrevivente: Não morto (acima) Mutante equivalente: Semântica do mutante é equivalente ao original

Mutantes sobreviventes Duas razões para Pm sobreviver ao teste de distinção de P em relação a TS Suíte TS não consegue distinguir Pm e P P e Pm são equivalentes => problema indecidível!

Métodologia (Parte 1) Input: P: Pgm, OPS: set of Op Output: set of Pgm Pseudo-code: gerarMutantes /******************************************************* * gera vários novos programas derivados de P. * Para cada um, identifica um operador de * mutação em OPS e uma posicão para aplicá-lo * em P. Em geral, cada mutante inclui apenas * uma modificação. *******************************************************/

Métodologia (Parte 2) Input: P: Pgm, TS: set of Pgm, {P1, P2, …, Pn}: set of Pgm Output: (survivors: set of Pgm, killed: set of Pgm) Pseudo-code: encontreSobreviventes for each Pm in {P1,P2, …,Pn} do // distinguir mutante if (exists some T in TS s.t. RUN(T,Pm) == FAIL) killed = killed U {Pm} else survivors = survivors U {Pm} done return (survivors, killed)

encontreSobreviventes Metodologia (Parte 3) Set of Mutants gerarMutantes encontreSobreviventes P OPs TS sobreviventes novos testes

Score de Mutação Está para o teste de falhas assim com cobertura está para o teste estrutural Score: #mortos / (#mutantes - #equivalentes) Ex. 10 mutantes, 5 mortos, 2 equivalentes. Score = 5/8 = .0625 (62.5%)

Nota: Geração de Casos de Teste Cobertura e score de mutação são usados com frequência para avaliar (comparar) técnicas de geração de casos de teste

Limitações Não se sabe se erro introduzido por um operador de mutação é relevante Classificar um mutante como equivalente é manual (caro e passível de erro)

Resumo Teste baseado em falhas e o teste de mutação