Análise de mutantes Testes de mutação
Transcript of 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
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
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)
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).
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).
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
.
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
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
≠=
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.
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
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
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”, ...
–...
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
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?
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
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
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
�...
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
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/
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/
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)
); }
} }
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.
IC-U
NIC
AM
PElian
e M
artins
Sum
ário princ
ipais po
ntos
apren
dido
s