Top Banner
IC-UNICAMP Eliane Martins Criado: ago/2011 Últ. alteração: mar/2013 Análise de mutantes Testes de mutação
23

Análise de mutantes Testes de mutação

Jan 09, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Criado: ago/2011

Últ. alteração: mar/2013

Análise de mutantes

Testes de mutação

Page 2: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Baseado

em m

aterial p

repa

rado

para TutorialC

BSoft2

011

Tóp

icos

•Princ

ipais técn

icas de testes basea

dos em

falha

s

•Testes de

mutação

•Aná

lise de mutan

tes vivo

s

•Escore de

mutação

•Ope

rado

res de

mutaç

ão

•Exe

mplo de

ferramen

ta

Page 3: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Testes baseados em falhas

�M

odelo de

base:

�en

gano

s típ

icos com

etidos duran

te o processo de

desen

volvim

ento

�Exe

mplos

de técn

icas

�Estáticas

�Sem

eadu

ra de erros (E

rror See

ding) (B

udd, 198

1)

�Aná

lise de Mutan

tes (T

este de Unida

de) (D

eMillo eta

l., 197

8)

�Mutaç

ão de Interfac

e (T

este de Integração

) (D

elam

aro et

al., 20

01)

�Mutaç

ão de mod

elos de estado

(Testes ba

sead

os em m

odelos) (Fab

bri e

t al.

1994

)

�Dinâm

icas

�Injeçã

o de

falha

s (A

rlat

etal., 19

89)

Page 4: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Hipótese do Programador Competente

�Um d

os p

rinc

ípios bá

sico

s da

técnica: um

program

ador c

ompe

tente

escrev

e

prog

ramas corretos ou

próximo do

correto.

–Assum

indo

a validad

e de

sta hipó

tese: bugssão introd

uzidos no prog

rama po

r meio

de pequenos desvios sintáticosqu

e faze

m com

que

a exe

cuçã

o do

produ

to lev

e a

um com

portam

ento in

correto.

–Portanto, cad

a mutan

te tem

uma ún

ica diferenç

a sintática em

relação

ao prog

rama

original P.

–O testado

r de

ve con

struir u

m con

junto

de teste q

ue m

ostre qu

e tais

mod

ifica

ções

criaram produ

tos qu

e nã

o são co

rretos (Agraw

al eta

l., 198

9).

Page 5: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Efeito de acoplamento

�Seg

undo

princ

ípio da técn

ica (D

eMillo eta

l., 197

8):

–Falha

s(bugs)

complex

as são

uma co

mpo

siçã

o de

bugssimples.

–Con

juntos d

e teste

que

reve

lam falha

s simples são

tam

bém c

apaz

es d

e reve

lar

falhas com

plex

as (Bud

d, 198

0).

Page 6: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Passos (1)

�Dad

os u

m p

rodu

to q

ue se de

seja testar P

e um

con

junto

de teste T

. Os pa

ssos d

e

aplicaçã

o do

Teste de Mutação

são

:

1.Execução do produto original

–P é

executad

o co

m T

–Se oc

orrer um

defeito (failure), o te

ste term

ina.

–Se ne

nhum

defeito for ide

ntificad

o, P

aind

a po

de con

ter bugsqu

e T

não foi c

apaz de reve

lar.

2.Geração dos mutantes

–P é

subm

etido a um

con

junto op

erad

ores de mutação

que

tran

sformam

Pem

M1,M

2, . . . ,M

n, d

enom

inad

os mutantes

de P.

Op

era

do

res

de

mu

taçã

o s

ão

re

gra

s q

ue

re

pre

sen

tam

en

ga

no

s fr

eq

üe

nte

s o

u d

esv

ios

sin

táti

cos

rela

cio

na

do

s co

m u

ma

de

term

ina

da

lin

gu

ag

em

de

pro

gra

ma

ção

.

Page 7: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Passos (2)

3.Execução dos mutantes

–Os mutan

tes são ex

ecutad

os com

o m

esmo co

njun

to de teste T

–Mutantes mortos

–resu

ltad

os diferen

tes de

P

–Mutantes vivos

–resu

ltad

os id

êntico

s ao

de P

�O id

eal é

ter ap

enas m

utan

tes mortos!

4.Análise dos mutantes vivos

–Iden

tifica

rpo

ssível equ

ivalên

cia em

relação

a P

–Exp

or uma fraq

ueza do co

njun

to de teste T

Page 8: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Esquema geral da técnica

voidmetodo1( ){

...

if (z >

x + y)

...

}P–prog

rama original

voidmetodo1( ){

...

if (z <

x + y)

...

}

M1

entrad

a

saída1

saída2

Mutan

te m

orto

Mutan

te vivo

≠=

Page 9: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Escore de Mutação

�M

edida ob

jetiva

para av

aliar a ad

equa

ção de

T em relação

ao

Teste de M

utação

�Em que

:–

DM(P

,T): núm

ero de

mutan

tes mortos po

r T;

–M(P

): to

tal d

e mutan

tes ge

rado

s;

–EM(P

): núm

ero de

mutan

tes eq

uiva

lentes a P.

Page 10: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Criaç

ão de mutan

tes

•A cad

a ap

licação de

um

operad

or de mutação

, um

novo

mutan

te M

de P

écriado

voidmetodo1( ){

...

if (z >

x + y)

...

}

voidmetodo1( ){

...

if (z <

x + y)

...

}voidmetodo1( ){

...

if (z !=

x + y)

...

}ROR

ROR

P–prog

rama original

M1

M2

•Uso de operadoresde

mutação

para ap

licar

as peq

uena

s mod

ificaçõe

s sintáticas aos

prog

ramas

•Exe

mplo:

–ROR (Relational Operator Rep

lace

men

t):

substitui u

m ope

rado

r relacion

al por outro

Page 11: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Exe

mplo de

ope

rado

res –ferram

enta µJava

Sub

stituiçã

o de

ope

rado

r de

atribuiçã

o (de atalho

) po

r ou

tro: +=, -=, ...

ASR

Sup

ressão

de op

erad

or ló

gico

unário: ~

LOD

Inserção

de op

erad

or ló

gico

uná

rio: ~

LOI

Sub

stituiçã

o de

ope

rado

r lógico

(bitw

ise) por outro: &

, |, ^

LOR

Sub

stituiçã

o de

ope

rado

r de

desloca

men

to por outro

SOR

Sup

ressão

de op

erad

or con

dicion

alun

ário

(!)

COD

Inserção

de op

erad

or con

dicion

al uná

rio (!)

COI

Sub

stituiçã

o de

ope

rado

r co

ndiciona

l por outro: &

&, ||, &, |, ^

COR

Sub

stituiçã

o de

ope

rado

r relacion

al por outro ope

rado

r relacion

alROR

Sup

ressão

de op

erad

or aritm

ético un

ário

/ de atalho

AOD

Inserção

de op

erad

or aritm

ético un

ário

/ de atalho

AOI

Sub

stituiçã

o de

ope

rado

r aritmético po

r ou

tro op

erad

or aritm

ético: uná

rio,

biná

rio e de

atalho (+

+, --)

AOR

Descrição

Ope

rado

r

Page 12: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Ope

rado

res pa

ra program

as O

O

•Existem

várias prop

ostas de

ope

rado

res pa

ra criar falha

s em

asp

ectos espe

cífico

s de

OO, tais co

mo:

–Ocu

ltação

de inform

ação

(co

ntrole de acesso):

•Ope

rado

r pa

ra m

odificar o con

trole de

ace

sso a atribu

tos e métod

os

–Heran

ça

•Ope

rado

res pa

ra m

odificar uso de he

ranç

a, ta

is com

o: sup

rimir

“ove

rriding”

de m

étod

os, s

uprimir “supe

r”, ...

–...

Page 13: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Exe

mplo de

ope

rado

res OO -µJava

Troca m

étod

o de

acesso

EAM

Sup

rime métod

o sobrecarrega

doOMD

Insere th

isJT

I

Insere super

ISI

Troca nom

e de

métod

o sobrescrito

IOR

Sup

rime métod

o sobrescrito

IOD

Descrição

Ope

rado

r

Page 14: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Análise de mutantes vivos

�M

utan

te equ

ivalen

te

–Um m

utan

te M

édito equivalente

a P

se p

ara

qualqu

er d

ado

de

entrad

a d∈

D, o

com

portam

ento de M

éigua

l ao de

P: M

(d) = P(d)

�M

utan

te rev

elad

or de falha(fault-reveling)

–Um m

utan

te é

dito ser revelador de falhase para algu

m caso de

teste

t, tal qu

e P(t) = M

(t), con

clui-se qu

e P(t) nã

o está

de aco

rdo co

m a

espe

cificação, ou seja, a

presenç

a de

uma falha em

Pfoi rev

elad

a

�Se t ∉

T �

o qu

e dizer de

T?

Page 15: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Limitações

�Princ

ipal problem

a éo gran

de núm

ero de

mutan

tes ge

rado

s.–

Mutan

tes prec

isam

ser com

pilado

s e ex

ecutad

os;

–Mutan

tes vivo

s prec

isam

ser ana

lisado

s de

vido

a possíve

l equ

ivalên

cia.

�Req

uer bo

m con

hecimen

to da im

plem

entaçã

o do

produ

to para

facilitar a an

álise de

mutan

tes vivo

s:

�Determinar se um

mutan

te é

equiva

lente

ao prog

rama

original:

prob

lema inde

cidíve

l

Page 16: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Vantagens

�É

fácil

de

ser

estend

ido

para

qualqu

er

prod

uto

“exe

cutáve

l”, s

eja espe

cificação ou

implem

entação.

�É

um d

os critérios

de teste mais eficaz

em p

ara reve

lar

falhas.

�Éfácil a

utom

atizar a geração

dos

mutan

tes

Page 17: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Ferramen

tas

•Mothra (198

0): m

utação

para prog

ramas em Fortran

77

•Outras ferram

entas:

fonte:

http://en.wikiped

ia.org/w

iki/Mutation_

testing

�Ju

mble: B

ytecod

e ba

sed mutation testing tool

for Java

�MuJ

ava: B

ytecod

e ba

sed mutation system

for Java

prog

rams

�PIT

: Bytecod

e ba

sed mutation testing tool

for Java

�Jester: S

ource ba

sed mutation testing tool

for Java

�Heckle: M

utation testing tool

forRub

y�

Nester: M

utation testing tool

for C#

�Mutag

enesis: M

utation testing tool

for PHP

�Proteum

: Mutation testing tool for C

�...

Page 18: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

MuJ

ava

Obtido em

ag

o/11

em:

http://cs.gm

u.ed

u/~offutt/m

ujav

a/

Seleção

dos

operad

ores de

mutação

e das

classes

Page 19: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Visua

lização

dos mutan

tes

MuJ

ava

Obtido em

ag

o/11

em:

http://cs.gm

u.ed

u/~offutt/m

ujav

a/

Page 20: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Resultado

s do

s testes de

mutação

MuJ

ava

Obtido em

ag

o/11

em:

http://cs.gm

u.ed

u/~offutt/m

ujav

a/

Page 21: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Exe

rcício

// S

om

a e

lem

ento

s n

as p

osiçõe

s p

are

s d

e u

m v

eto

r de inte

iros

// O

bté

m m

enor ele

mento

em

posição ím

par no v

eto

r1.

public

cla

ss E

xem

plo

{2.

public

sta

tic v

oid

main

(Strin

g a

rgs[]) {

3.

intvet[] = {2, 5, 1, 8, 4, 9, 3, 7, 6, 8};

4.

inti;

5.

int som

apar=

vet[0];

6.

int m

enorim

par=

vet[1];

7.

for (i=1; i<

vet.le

ngth

; i+

+) {

8.

if (i%

2==0){

9.

som

apar+=

vet[i];}

10.

els

e{

11.

if (vet[i] <

menorim

par)

{

12.

menorim

par=

vet[i];}

} }13.

Syste

m.o

ut.println("

Som

a d

os p

are

s =

"+som

apar)

;14.

Syste

m.o

ut.println("

Menornr. im

par = "+m

enorim

par)

;15.

if(m

enorim

par)

{16.

Syste

m.o

ut.println("

Som

aP

are

s/M

enorIm

par=

"+(s

om

apar/m

enorim

par)

); }

} }

Page 22: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Exe

rcício (co

nt.)

•Para o có

digo

dad

o:–

Qua

l a respo

sta espe

rada

para o ve

tor fornecido co

mo en

trad

a de

teste?

–Sup

onha

que

foi criad

o um

mutan

te sub

stituind

o, na lin

ha 7, i=1

por i=0. A

entrada

de teste fornecida mataria esse mutan

te? Por

que?

–Crie um

a en

trad

a qu

e mate esse m

utan

te.

–Crie um

a en

trad

a qu

e nã

o mate esse m

utan

te.

Page 23: Análise de mutantes Testes de mutação

IC-U

NIC

AM

PElian

e M

artins

Sum

ário princ

ipais po

ntos

apren

dido

s