MUTAÇÃO DE INTERFACE (MI) JACKSON ANTONIO DO PRADO LIMA SILVIA REGINA VERGILIO.

Slides:



Advertisements
Apresentações semelhantes
Engenharia de Software
Advertisements

Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Mutação de Interface Interface Mutation: An Approach for Integration Testing Marcio E. Delamaro José C. Maldonado Aditya P. Mathur.
Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.
O Portal do Estudante de Computação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
How to Break Software Capítulo 2 Taíse Dias Testing from the User Interface.
Capítulo VIII Ambientes de Execução
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
Monitoria de Sistemas Inteligentes IF684
Fundamentos de linguagens de programação
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Trechos de código que permitem reutilização de uma mesma tarefa. Qualquer código PHP pode estar contido no interior de uma função. Não se pode definir.
O Portal do Estudante de Computação
My drivers Podemos definir um driver como uma ponte de comunicação entre determinado dispositivo e a central de processamento de um computador. Na prática,
SPEM (Software Process Engineering Metamodel): Uma Linguagem para Modelagem de Processos de Software.
Busca Sequencial Int pseq(int x, int n, int v[]){ for(i=0; i
Técnicas de Representação de Conhecimento Regras de Produção.
MCEF 2012/2013. Introdução ao “Mathematica” Utilização do Mathematica Funcionamento do programa Regras da Linguagem Exemplos Exercícios!!
Introdução à Robótica COLÉGIO DAMAS DE INSTRUÇÃO CRISTÃ.
Aula 01 Conhecendo o Computador Prof. Filipe Mutz.
Web Application Rafael Muniz e Marcus Vinícius Plugins MAVEN 04/04/2009 Revisão 12/04/2009.
RHAYANE BORGES SILVA 4º ANO ADMINISTRAÇÃO Mensuração e Escala Parte II.
Cálculo Numérico Computacional Prof. Linder Cândido da Silva.
INE5408 Estruturas de Dados Passagem por Referência.
Glossário Autor: Skyup Informática. Atividade - Glossário A atividade glossário permite que o administrador crie páginas de definições, um dicionário.
Processo de Planejamento de Segurança. Ataques de Segurança Passivos Intersepção Ativos Interrupção Modificação Fabricação.
C suporta algumas Constantes de caráteres especiais de barra invertida (backslash) que são usados em funções de saída. Constantes de caráteres especiais.
Mecânica Teórica Introdução e conceitos básicos da Mecânica Teórica:  Campos de Física Teórica;  Objecto de estudo;  Métodos da mecânica teórica; 
Lógica de Programação Curso Técnico em Informática – Escola Olímpio Professor Marcelo Josué Telles
1 – Estudo dos Movimentos Continuação Parte Site:
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
INSPEÇÃO EM SERVIÇO III Pan-American Conference for Nondestructive Testing 05 de junho de 2003.
Gestão Financeira Prof. Augusto Santana. Análise de Investimentos A Decisão de Investir As decisões de investimento envolvem a elaboração, avaliação e.
Teste Estrutural: Caminho Básico Wolley W. Silva.
SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS PROF. HORACIO RIBEIRO Sistemas operacionais.
SISTEMAS OPERACIONAIS MEMÓRIA VIRTUAL. INTRODUÇÃO Memória Virtual é um técnica sofisticada e poderosa de gerenciamento de memória, onde a MP e a MS são.
Alessandro D. R. Fazenda
Clique para editar o título Linguagem C Para programadores Python PMR
Jean Carlo Mendes
Capítulo 5: SCRIPTS ALUNOS: CARLOS EDUARDO C. DESIDERIO / EDUARDO MATHEUS VOLANSKI JADER JEPSEN SCHMIELE / LINDOLFO.
Concessões do setor portuário Audiência Pública na Comissão de Viação e Transporte Brasília, junho de 2015.
Disciplina: Análise e Projeto de Sistemas
ANÁLISE ERGONÔMICA DOS POSTOS DE TRABALHO (Material Adaptado do Programa de Pós-Graduação da Engenharia de Produção e Sistemas da Universidade Federal.
1 ISO (ALGUNS ASPECTOS RELEVANTES) Prof. M.Sc Jefferson L. C. Salles.
Atividade Sistemática Trabalho em Equipe Identificar Problemas Potenciais, suas Causas e seus Efeitos. O FMEA tem a função de identificar os problemas.
Estrutura e análise das demonstrações financeiras
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
Sistemas de Informação Prof. Me. Everton C. Tetila Dependências funcionais e normalização para bancos de dados relacionais Banco de Dados I.
Ciência da Computação Modelos Evolucionários e Tratamento de Incertezas Aula 07 Inferência Difusa Sistemas de Controle Difuso Max Pereira.
Detalhamento da Norma de Sistema de Gestão Ambiental: NBR ISO 14001:2004 Prefácio Introdução 1 Objetivo e campo de aplicação 2 Referências normativas 3.
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
Lógica de programação Estruturas de seleção Estruturas de repetição Sub-Rotinas 1.
Revisão de Conceitos Thiago Medeiros Barros. Algoritmos Qualquer problema de computação pode ser resolvido executando uma série de ações em uma ordem.
Gerenciamento de Projetos Prioritários acompanhados pelo software Microsoft Project Tania Faerman Julho/2010.
Diagramas de Sequência e Comunicação
 Mapeamento de seus cenários internos e externos, identificando requisitos essenciais a serem atendidos;  Tradução de requisitos em informações a serem.
Profa. Priscila Facciolli.  O foco do diagrama é identificar a interação entre os objetos pelo tempo.  Identifica as mensagens trocadas entre os objetos.
Ferramentas Computacionais de Auxílio ao Teste de CIs: Fundamentos Marcelo Lubaszewski Universidade Federal do Rio Grande do Sul Departamento de Engenharia.
Comandos básicos Scratch for Arduino (S4A).
1 GERENCIAMENTO DE PROCESSOS PLANEJAMENTO ESTRATÉGICO.
EA869 Montadores Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato.
Como construir modelos empíricos. Nos modelos estudados, cada fator foi fixado em dois níveis Por esta razão temos que nos contentar com uma visão limitada.
Calculo de Hoare Daniel Soares, Gabriel Alabarse Hernandez(150756) e Vanius Zapalowski(150843)
Fatores de Avaliação Know-how : É a soma total de quaisquer habilidades, conhecimentos e experiências requeridas por um cargo, de maneira a propiciar um.
Sistemas de Informações Sistemas Informações Empresariais 1. Engenharia de Sistemas Márcio Aurélio Ribeiro Moreira
Aula 5 - Métodos. Desenvolvimento de Programas A melhor forma de construir programas grandes é dividi-los em programas menores que executam tarefas específicas.
PROTEUM & PROTEUM/IM JACKSON ANTONIO DO PRADO LIMA SILVIA REGINA VERGILIO.
 Qualidade de Testes Diagnósticos  O bom uso de um teste diagnóstico requer, além das considerações clínicas, o conhecimento de medidas que caracterizam.
Transcrição da apresentação:

MUTAÇÃO DE INTERFACE (MI) JACKSON ANTONIO DO PRADO LIMA SILVIA REGINA VERGILIO

DEFINIÇÃO O critério Mutação de Interface é uma extensão da Análise de Mutantes e preocupa-se em assegurar que as interações entre unidades de um programa sejam testadas – Exercitar as interações entre unidades num programa “integrado”. O critério Mutação de Interface é uma extensão da Análise de Mutantes e preocupa-se em assegurar que as interações entre unidades de um programa sejam testadas – Exercitar as interações entre unidades num programa “integrado”. Possui como objetivo a inserção de perturbações nas conexões entre duas unidades de um programa – Erros de integração. Possui como objetivo a inserção de perturbações nas conexões entre duas unidades de um programa – Erros de integração. Erros de integração ocorrem quando um valor incorreto é passado a uma unidade. Erros de integração ocorrem quando um valor incorreto é passado a uma unidade.

CLASSIFICAÇÃO Os erros de integração podem ser classificados em três categorias. Os erros de integração podem ser classificados em três categorias. Considere um programa P e um caso de teste T para P. Considere um programa P e um caso de teste T para P. Suponha que em P existem unidades F e G e que F faz chamadas para G. Suponha que em P existem unidades F e G e que F faz chamadas para G. Considere S 1 (G) a n-tupla (conjunto) de valores passados para G e S 0 (G) a n- tupla de valores retornados de G. Considere S 1 (G) a n-tupla (conjunto) de valores passados para G e S 0 (G) a n- tupla de valores retornados de G. Quando se executa P com o caso de teste T, um erro de integração é identificado na chamada de F para G quando: Quando se executa P com o caso de teste T, um erro de integração é identificado na chamada de F para G quando:

CLASSIFICAÇÃO (TIPO 1) Entrando em G, S 1 (G) não têm os valores esperados e estes valores causam uma falha antes de retornar de G. Exemplo: quando uma função é chamada com parâmetros incorretos fazendo com que a função chamada produza uma saída incorreta.

CLASSIFICAÇÃO (TIPO 2) Entrando em G, S 1 (G) não têm os valores esperados e estes valores levam a um S 0 (G) incorreto, que por sua vez causa uma falha depois de retornarem de G. Exemplo: quando um parâmetro incorreto passado para a função é utilizado para calcular o valor de retorno.

CLASSIFICAÇÃO (TIPO 3) Entrando em G, S 1 (G) têm os valores esperados, mas valores incorretos em S 0 (G) são produzidos dentro de G e estes valores incorretos causam uma falha após retornarem de G. Esse tipo de erro pode ocorrer se uma função é chamada com todos os parâmetros corretos, mas internamente ela realiza um cálculo incorreto produzindo um valor de retorno não esperado que, posteriormente, leva a um resultado incorreto.

CLASSIFICAÇÃO (CONT.) Os tipos de erros podem ser de domínio ou computacional. Os tipos de erros podem ser de domínio ou computacional. Domínio: quando um caminho incorreto é executado; Domínio: quando um caminho incorreto é executado; Computacional: quando o caminho correto é executado, mas o valor computado é incorreto. Computacional: quando o caminho correto é executado, mas o valor computado é incorreto. Dada uma função F que chama G, o primeiro ocorre quando um erro de domínio em G causa uma saída incorreta em F. O segundo ocorre quando um erro computacional em G produz um valor incorreto que é passado para F que, por sua vez, produz uma saída incorreta. Dada uma função F que chama G, o primeiro ocorre quando um erro de domínio em G causa uma saída incorreta em F. O segundo ocorre quando um erro computacional em G produz um valor incorreto que é passado para F que, por sua vez, produz uma saída incorreta.

CLASSIFICAÇÃO (CONT.) A classificação dos tipos de erros é abrangente e não especifica o local do defeito que causa o erro. Ela simplesmente considera a existência de um valor incorreto entrando ou saindo de uma função chamada. A classificação dos tipos de erros é abrangente e não especifica o local do defeito que causa o erro. Ela simplesmente considera a existência de um valor incorreto entrando ou saindo de uma função chamada. Isso exclui, por exemplo, o caso em que S 1 (G) tem os valores esperados mas um erro dentro de G produz uma saída incorreta antes do retorno de G. Neste caso, não existe nenhuma propagação de erro através da conexão F-G e esse tipo de erro deveria ser detectado no teste de unidade. Isso exclui, por exemplo, o caso em que S 1 (G) tem os valores esperados mas um erro dentro de G produz uma saída incorreta antes do retorno de G. Neste caso, não existe nenhuma propagação de erro através da conexão F-G e esse tipo de erro deveria ser detectado no teste de unidade.

TROCA DE DADOS Em linguagens convencionais (C, Pascal, Fortran, etc.), unidades são conectadas por meio de chamadas de subprogramas (funções, procedimentos ou sub-rotinas). Em linguagens convencionais (C, Pascal, Fortran, etc.), unidades são conectadas por meio de chamadas de subprogramas (funções, procedimentos ou sub-rotinas). Em uma chamada da unidade F para a unidade G, existem quatro maneiras, não mutuamente exclusivas, de se trocarem dados entre as unidades. Em uma chamada da unidade F para a unidade G, existem quatro maneiras, não mutuamente exclusivas, de se trocarem dados entre as unidades.

TROCA DE DADOS (CONT.) 1. Dados são passados para G por meio de parâmetros de entrada (passagem por parâmetro); 2. Dados são passados para G e/ou retornados para F por meio de parâmetros de entrada-saída (passagem por referência); 3. Dados são passados para G e/ou retornados para F por meio de variáveis globais; 4. Dados são retornados para F por meio de comandos de retorno (como return em C).

Aplicação de mutação de interface ocorre somente nos pontos de interface (ou conexões) entre unidades

EXEMPLO Para testar uma conexão S 1 -S 2, introduzindo defeitos simples que levem a erros de integração, a Mutação de Interface aplica mutações em: 1. Pontos nos quais a unidade S 1 chama a unidade S 2, portanto antes da execução de S 2 ; 2. Pontos dentro de S 2 relacionados com sua interface.

CONDIÇÃO DE ALCANÇABILIDADE PARA MUTAÇÃO DE INTERFACE A execução de um mutante M, gerado pela conexão S 1 - S 2, com um caso de teste T deve fazer com que o ponto no qual a mutação foi introduzida seja alcançado por meio de uma chamada de S 1 para S 2. A execução de um mutante M, gerado pela conexão S 1 - S 2, com um caso de teste T deve fazer com que o ponto no qual a mutação foi introduzida seja alcançado por meio de uma chamada de S 1 para S 2.

Um operador de Mutação de Interface é focado no teste de interação entre duas unidades e não no teste de uma unidade

EXEMPLO Considere um operador de Mutação de Interface OP(v) que perturba uma variável v. Considere um operador de Mutação de Interface OP(v) que perturba uma variável v. O testador pode escolher, por exemplo, a conexão S 1 -S 3 para testar, neste caso OP é aplicado sobre variáveis desta conexão. O testador pode escolher, por exemplo, a conexão S 1 -S 3 para testar, neste caso OP é aplicado sobre variáveis desta conexão. Digamos que será introduzido os erros do tipo 1 e 2, para isso OP pode mudra a entrada da unidade S 3. Esta entrada pode ser usada dentro de S 3 e causar um retorno incorreto para a unidade S 1. Digamos que será introduzido os erros do tipo 1 e 2, para isso OP pode mudra a entrada da unidade S 3. Esta entrada pode ser usada dentro de S 3 e causar um retorno incorreto para a unidade S 1.

EXEMPLO (CONT.) OP pode ser aplicado de duas maneiras: 1. Primeiro, na passagem de parâmetros por valor, OP pode ser aplicado na chamada da unidade S 3 que ocorre dentro de S 1 ; 2. Segundo, na passagem de parâmetros por referência, OP pode ser aplicado nas referências que serão retornadas, dentro de S 3.

EXEMPLO (CONT.) Trocar “a” por “b” Remover return Trocar “*” por “+” Remover a chamada (linha toda) Trocar “a” por “a++” Trocar “a” por “10

OPERADORES DE MI PARA LINGUAGEM C Dois grupos de operadores de MI são definidos considerando uma conexão entre duas unidades. Grupo I – Operadores aplicados dentro da função chamada (dentro do corpo da função G) Grupo I – Operadores aplicados dentro da função chamada (dentro do corpo da função G) Grupo II – Operadores aplicados dentro da função chamada que está fazendo a chamada (chamada para G dentro de F) Grupo II – Operadores aplicados dentro da função chamada que está fazendo a chamada (chamada para G dentro de F)

OPERADORES DE MI PARA LINGUAGEM C GRUPO I Estes operadores causam mudanças nos valores de entrado e/ou saída de funções. Para a aplicação destes operadores é necessário identificar o lugar de onde a função foi chamada. Mecanismo que habilite ou desabilite a mutação dependendo ou não de onde G é chamada de F (PROTEUM/IM)

OPERADORES DE MI PARA LINGUAGEM C GRUPO I Quando a conexão A-B irá ser testada: P(B): Conjunto que inclui os parâmetros formais de B. P(B): Conjunto que inclui os parâmetros formais de B. G(B): Conj. Variáveis globais acessadas por B. G(B): Conj. Variáveis globais acessadas por B. L(B): Conj. Variáveis declaradas em B (locais). L(B): Conj. Variáveis declaradas em B (locais). E(B):Conj. Variáveis globais não acessadas em B. E(B):Conj. Variáveis globais não acessadas em B. C(B): Conj. Constantes usadas em B. C(B): Conj. Constantes usadas em B.

OPERADORES DE MI PARA LINGUAGEM C GRUPO I Operadores de Substituição Direta e Operadores de Substituição Direta e Indireta de Variáveis Indireta de Variáveis Operadores de Variáveis de Incremento Operadores de Variáveis de Incremento e Decremento e Decremento Inserção de Operadores Unários Inserção de Operadores Unários Operadores de Retorno Operadores de Retorno Operadores de Cobertura Operadores de Cobertura

OPERADORES DE MI PARA LINGUAGEM C GRUPO II Dado uma conexão A-B os operadores são aplicados na instrução onde A chama B e sobre estes argumentos da chamada. Quando um argumento é uma expressão os operadores são aplicados sobre a expressão inteira e não sobre os objetos da expressão como variáveis ou constants.

OPERADORES DE MI PARA LINGUAGEM C GRUPO II Substituição de Argumentos Substituição de Argumentos Troca de Argumentos Troca de Argumentos Eliminação de Argumentos Eliminação de Argumentos Inserção de Operadores Unários Inserção de Operadores Unários Exclusão de Chamada de Função Exclusão de Chamada de Função

REFERÊNCIAS M. E. Delamaro, J. C. Maldonado, e M. Jino. Introdução ao teste de software, páginas Elsevier, Rio de Janeiro, RJ, Brasil, M. E. Delamaro, J. C. Maldonado, e M. Jino. Introdução ao teste de software, páginas Elsevier, Rio de Janeiro, RJ, Brasil, 2007.

MATERIAL