Escolar Documentos
Profissional Documentos
Cultura Documentos
ISSN - 0103-2585
INTRODU C
AO AO TESTE DE SOFTWARE
(Vers ao 2004-01)
Jose Carlos Maldonado
Ellen Francine Barbosa
Auri Marcelo Rizzo Vincenzi
Marcio Eduardo Delamaro
Simone do Rocio Senger de Souza
Mario Jino
N
o
65
NOTAS DID
ATICAS DO ICMC
Sao Carlos
ABRIL/2004
Introdu cao ao Teste de Software
(Vers ao 2004-01)
Jose Carlos Maldonado
Ellen Francine Barbosa
Auri Marcelo Rizzo Vincenzi
Universidade de Sao Paulo ICMC/USP
{jcmaldon, francine, auri}@icmc.usp.br
Marcio Eduardo Delamaro
Centro Universitario Eurpides de Marlia UNIVEM
delamaro@fundanet.br
Simone do Rocio Senger de Souza
Universidade Estadual de Ponta Grossa UEPG
srocio@uepg.br
Mario Jino
Universidade Estadual de Campinas DCA/FEEC/UNICAMP
jino@dca.fee.unicamp.br
Resumo
As exigencias por softwares com maior qualidade tem motivado a deni c ao de
metodos e tecnicas para o desenvolvimento de softwares que atinjam os padr oes de
qualidade impostos. Com isso, o interesse pela atividade de teste de software vem
aumentando nos ultimos anos. Varios pesquisadores tem investigado os diferentes
criterios de teste, buscando obter uma estrategia de teste com baixo custo de apli-
ca c ao, mas ao mesmo tempo, com grande capacidade em revelar erros. O objetivo
deste minicurso e apresentar os aspectos teoricos e praticos relacionados `a ativi-
dade de teste de software. Uma sntese das tecnicas de teste funcional, estrutural
e baseada em erros, bem como de criterios de teste pertencentes a cada uma delas,
sera apresentada. Fatores utilizados na compara c ao e avalia c ao de criterios de teste
de software (custo, ecacia e strength) tambem ser ao abordados, tanto do ponto
de vista teorico como emprico. A import ancia da automatiza c ao da atividade de
teste sera destacada, caracterizando-se os esfor cos da comunidade cientca nessa
dire c ao. Dar-se-a enfase ao criterio de teste Analise de Mutantes apresentando uma
revis ao historica do seu surgimento e desenvolvimento. Aspectos teoricos e prati-
cos de sua utiliza c ao ser ao abordados e as estrategias que procuram minimizar o
E importante ressaltar que as tecnicas de teste devem ser vistas como complementares
e a questao esta em como utiliza-las de forma que as vantagens de cada uma sejam melhor
exploradas em uma estrategia de teste que leve a uma atividade de teste de boa qualidade,
ou seja, ecaz e de baixo custo. As tecnicas e criterios de teste fornecem ao desenvolve-
dor uma abordagem sistematica e teoricamente fundamentada, alem de constiturem um
mecanismo que pode auxiliar a avaliar a qualidade e a adequa cao da atividade de teste.
Criterios de teste podem ser utilizados tanto para auxiliar na gera cao de conjunto de casos
de teste como para auxiliar na avalia cao da adequa cao desses conjuntos.
Dada a diversidade de criterios que tem sido estabelecidos [3, 4, 10, 11, 2535] e recon-
hecido o carater complementar das tecnicas e criterios de teste [3544], um ponto crucial
que se coloca nessa perspectiva e a escolha e/ou a determina cao de uma estrategia de
teste, que em ultima analise passa pela escolha de criterios de teste, de forma que as
vantagens de cada um desses criterios sejam combinadas objetivando uma atividade de
teste de maior qualidade. Estudos teoricos e empricos de criterios de teste sao de extrema
relevancia para a forma cao desse conhecimento, fornecendo subsdios para o estabeleci-
mento de estrategias de baixo custo e alta ecacia. Identicam-se diversos esfor cos da
comunidade cientca nessa dire cao [35, 4143, 4551].
Fundamental se faz o desenvolvimento de ferramentas de teste para o suporte `a ativi-
dade de teste propriamente dita, uma vez que essa atividade e muito propensa a erros,
alem de improdutiva, se aplicada manualmente, bem como para dar apoio a estudos
empricos que visem a avaliar e a comparar os diversos criterios de teste. Assim, a
disponibilidade de ferramentas de teste propicia maior qualidade e produtividade para
as atividades de teste. Observam-se na literatura esfor cos da comunidade cientca nessa
dire cao [11, 35, 43, 5267].
Pode-se observar que os criterios baseados em analise de uxo de dados [27, 2933]
e o criterio Analise de Mutantes (Mutation Analysis) [25, 34, 68] tem sido fortemente
investigados por diversos pesquisadores em diferentes aspectos [7, 37, 38, 41, 42, 44, 46,
50, 57, 59, 6979]. Resultados desses estudos fornecem evidencias de que esses criterios,
hoje investigados fundamentalmente no meio academico, `as vezes em coopera cao com
a ind ustria, podem, em medio prazo, constituir o estado da pr atica em ambientes de
produ cao de software. Uma forte evidencia nessa dire cao e o esfor co alocado pela Telcordia
Technologies (USA) no desenvolvimento da xSuds [80], um ambiente que apoia a aplica cao
de criterios baseados em analise de uxo de controle e de dados em programas C e C++.
De uma maneira geral, pode-se classicar as contribui coes para a area de Teste de
Software em: Estudos Teoricos, Estudos Empricos e Desenvolvimento de Ferramentas.
Este texto aborda esses tres aspectos, dando-se enfase a estudos teoricos e empricos de
criterios baseados em analise de uxo de dados e do criterio Analise de Mutantes para o
teste de programas em nvel de unidade, assim como as ferramentas que apoiam a apli-
ca cao desses criterios. Com esse objetivo em mente, o texto est a organizado da seguinte
forma: na Se cao 2 sao introduzidos a terminologia e os conceitos basicos pertinentes `a
atividade de teste. Na Se cao 3 sao apresentados os criterios de teste mais difundidos das
tecnicas funcional, estrutural e baseada em erros e ilustrados os principais aspectos op-
eracionais das ferramentas PokeTool, Proteum e PROTEUM/IM que apoiam a aplica cao de
criterios estruturais e dos criterios Analise de Mutantese Muta cao de Interface, respectiva-
mente. Na Se cao 4 sao identicados os principais esfor cos e iniciativas de automatiza cao
e na Se cao 5 sao sintetizados os principais resultados de estudos empricos envolvendo
os criterios apresentados neste texto. Na Se cao 6 sao apresentados alguns trabalhos que
4
aplicam criterios de teste para valida cao de especica c oes formais em Redes de Petri,
Maquinas de Estados Finitos, Statecharts e Estelle. Na Se cao 7 sao apresentados alguns
trabalhos que aplicam o teste de muta cao em programas OO. Na Se cao 8 sao apresentadas
as conclusoes e perspectivas de trabalhos futuros.
2 Terminologia e Conceitos Basicos
A IEEE tem realizado varios esfor cos de padroniza cao, entre eles para padronizar a
terminologia utilizada no contexto de Engenharia de Software. O padrao IEEE n umero
610.12-1990 [81] diferencia os termos: defeito (fault) passo, processo ou deni cao de da-
dos incorreto, como por exemplo, uma instru cao ou comando incorreto; engano (mistake)
a cao humana que produz um resultado incorreto, com por exemplo, uma a cao incorreta
tomada pelo programador; erro (error) diferen ca entre o valor obtido e o valor esperado,
ou seja, qualquer estado intermediario incorreto ou resultado inesperado na execu cao do
programa constitui um erro; e falha (failure) produ cao de uma sada incorreta com
rela cao `a especica cao. Neste texto, os termos engano, defeito e erro serao referencia-
dos como erro (causa) e o termo falha (conseq uencia) a um comportamento incorreto do
programa. De uma forma geral, os erros sao classicados em: erros computacionais
o erro provoca uma computa cao incorreta mas o caminho executado (seq uencias de
comandos) e igual ao caminho esperado; e erros de domnio o caminho efetivamente
executado e diferente do caminho esperado, ou seja, um caminho errado e selecionado.
A atividade de teste e permeada por uma serie de limita coes [23,31,8284]. Em geral, os
seguintes problemas sao indecidveis: dados dois programas, se eles sao equivalentes; dados
duas seq uencias de comandos (caminhos) de um programa, ou de programas diferentes,
se eles computam a mesma fun cao; e dado um caminho se ele e executavel ou nao, ou
seja, se existe um conjunto de dados de entrada que levam `a execu cao desse caminho.
Outra limita cao fundamental e a corre cao coincidente o programa pode apresentar,
coincidentemente, um resultado correto para um item particular de um dado d D, ou
seja, um particular item de dado ser executado, satisfazer a um requisito de teste e nao
revelar a presen ca de um erro.
Diz-se que um programa P com domnio de entrada D e correto com respeito a uma
especica cao S se S(d) = P
1
(d) = P
2
(d), para qualquer d D,
diz-se que P
1
e P
2
sao equivalentes. No teste de software, pressupoe-se a existencia de
um oraculo o testador ou algum outro mecanismo que possa determinar, para qualquer
item de dado d D, se S(d) = P
E preciso ressaltar que, em geral, a equivalencia entre programas e uma questao in-
decidvel e requer a interven cao do testador. Essa limita c ao teorica, no entanto, nao
signica que o problema deva ser abandonado por nao apresentar solu cao. Na verdade,
alguns metodos e heursticas tem sido propostos para determinar a equivalencia de pro-
gramas em uma grande porcentagem dos casos de interesse [25].
Um ponto importante destacado por DeMillo [52] e que a Analise de Mutantes fornece
uma medida objetiva do nvel de conan ca da adequa cao dos casos de teste analisados
atraves da deni cao de um escore de mutacao (mutation score), que relaciona o n umero
de mutantes mortos com o n umero de mutantes gerados. O escore de muta cao e calculado
da seguinte forma:
ms(P, T) =
DM(P, T)
M(P) EM(P)
sendo:
DM(P, T): n umero de mutantes mortos pelos casos de teste em T.
M(P): n umero total de mutantes gerados.
EM(P): n umero de mutantes gerados equivalentes a P.
O escore de muta cao varia no intervalo entre 0 e 1 sendo que, quanto maior o escore
mais adequado e o conjunto de casos de teste para o programa sendo testado. Percebe-se
com essa formula que apenas DM(P, T) depende do conjunto de casos de teste utilizado
e que, EM(P) e obtido `a medida que o testador, manualmente ou com o apoio de heurs-
ticas, decide que determinado mutante vivo e equivalente [43].
Um dos maiores problemas para a aplica cao do criterio Analise de Mutantes esta
relacionado ao seu alto custo, uma vez que o n umero de mutantes gerados, mesmo para
pequenos programas, pode ser muito grande, exigindo um tempo de execu cao muito alto.
Varias estrategias tem sido propostas para fazer com que a Analise de Mutantes possa
ser utilizada de modo mais eciente, dentro de limites economicamente viaveis. A uti-
liza cao de arquiteturas de hardware avan cadas para diminuir o tempo de execu cao dos
21
mutantes [115118] e o uso da analise estatica de anomalias de uxo de dados para reduzir
o n umero de mutantes gerados [119] sao algumas dessas estrategias. Alem disso, criterios
alternativos derivados da Analise de Mutantes tambem foram criados com o intuito de
reduzir o custo a ela associado: Mutacao Aleatoria (Randomly Selected X% Mutation),
Mutacao Restrita (Constrained Mutation) e Mutacao Seletiva (Selective Mutation).
Tais criterios procuram selecionar apenas um subconjunto do total de mutantes gerados,
reduzindo o custo associado, mas com a expectativa de nao se reduzir a ecacia do criterio.
Uma das vantagens do criterio baseado em muta cao e sua exibilidade no teste de
diversas entidades executaveis. Essa exibilidade vem do fato de que para se aplicar o
teste de muta cao e necessaria a existencia de um modelo que seja executavel que aceite
uma entrada e produza uma sada que possa ser comparada com a sada do mutante. Alem
disso, e necessaria a deni cao de um conjunto de operadores de muta cao responsavel pela
representa cao do modelo de erros correspondente a entidade executavel em questao.
Nesse sentido, os operadores de muta cao sao dependentes da linguagem. Existem
conjuntos de operadores de muta cao denidos para o teste de programas em Fortran [72],
C [112,120] e Java [121,122]. Alem disso, existem conjuntos de operadores de muta cao para
o teste de especica coes em Maquinas de Estado Finito [123,124], Redes de Petri [125,126],
Statecharts [22, 127] e Especica coes Algebricas [128]. As extensoes do teste de muta cao
para o teste de especica coes, bem como as ferramentas de apoio existentes, sao descritas
mais detalhadamente na Se cao 6 e as extensoes para programas OO sao descritas na
Se cao 7.
3.4.1 A Ferramenta de Teste Proteum
Como ressaltado anteriormente, a aplica cao de criterios de teste sem o apoio de uma
ferramenta de software e propensa a erros. Varias sao as iniciativas de desenvolvimento de
ferramentas de apoio `a aplica cao do criterio Analise de Mutantes [35,43,52,53,62,111,129].
A Proteum [62, 111], desenvolvida no ICMC-USP, e a unica ferramenta que apoia o teste
de muta cao para programas C existente atualmente. Alem disso, devido a caractersticas
de multi-linguagem, ela tambem pode ser congurada para o teste de programas escritos
em outras linguagens. A Proteum esta disponvel para os sistemas operacionais SunOS,
Solaris e Linux. Na Figura 7 e apresentada a tela principal da ferramenta bem como
as fun coes disponveis. Basicamente, a ferramenta Proteum oferece ao testador recursos
para, atraves da aplica cao do criterio Analise de Mutantes, avaliar a adequa cao de ou
gerar um conjunto de casos de teste T para determinado programa P. Com base nas
informa coes fornecidas pela Proteum, o testador pode melhorar a qualidade de T ate
obter um conjunto adequado ao criterio. Desse modo, a ferramenta pode ser utilizada
como instrumento de avalia cao bem como de sele cao de casos de teste.
Os recursos oferecidos pela ferramenta (Figura 7) permitem a execu cao das seguintes
opera coes: deni cao de casos de teste, execu cao do programa em teste, sele cao dos op-
eradores de muta cao que serao utilizados para gerar os mutantes, gera cao dos mutantes,
execu cao dos mutantes com os casos de teste denidos, analise dos mutantes vivos e cal-
culo do escore de muta cao. As fun coes implementadas na Proteum possibilitam que alguns
desses recursos sejam executados automaticamente (como a execu cao dos mutantes), en-
quanto que para outros sao fornecidas facilidades para que o testador possa realiza-los
(como a analise de mutantes equivalentes) [35, 62]. Alem disso, diversas caractersticas
adicionais foram incorporadas de modo a facilitar a atividade de teste e/ou a condu cao
de experimentos.
E o caso, por exemplo, da possibilidade de executar um mutante com
22
todos os casos de teste disponveis, mesmo que algum deles ja o tenha matado. Atraves
desse tipo de teste, chamado research, conseguem-se dados a respeito da eciencia dos
operadores de muta cao ou mesmo para a determina cao de estrategias de minimiza cao dos
conjuntos de casos de teste [62, 111].
Figura 7: Op coes disponveis na ferramenta Proteum.
Um dos pontos essenciais para a aplica cao do criterio Analise de Mutantes e a deni cao
do conjunto de operadores de muta cao. A Proteum conta com 71 operadores de muta cao
divididos em quatro classes (Figura 8) [62]: muta cao de comandos (statement mutations),
muta cao de operadores (operator mutations), muta cao de variaveis (variable mutations) e
muta cao de constantes (constant mutations).
E possvel escolher os operadores de acordo
com a classe de erros que se deseja enfatizar, permitindo que a gera cao de mutantes seja
feita em etapas ou ate mesmo dividida entre varios testadores trabalhando independen-
temente. Na Tabela 6 sao ilustrados alguns operadores de muta cao para cada uma das
classes de operadores.
Figura 8: Classes e operadores de muta cao existentes na Proteum.
A Proteum tambem trabalha com sessao de teste, ou seja, conjunto de atividades
envolvendo um teste que podem ser realizadas em etapas, sendo possvel ao usuario ini-
23
Tabela 6: Exemplos de operadores de muta cao para programas C.
Operador Descri cao
SSDL Retira um comando de cada vez do programa.
ORRN Substitui um operador relacional por outro operador relacional.
VTWD Substitui a referencia escalar pelo seu valor sucessor e predecessor.
Ccsr Substitui referencias escalares por constantes.
SWDD Substitui o comando while por do-while.
SMTC Interrompe a execu c ao do la co apos duas execu coes.
OLBN Substitui operador logico por operador bitwise.
Cccr Substitui uma constante por outra constante.
VDTR For ca cada referencia escalar a possuir cada um dos valores: negativo, positivo e zero.
ciar e encerrar o teste de um programa, bem como retoma-lo a partir de onde este foi
interrompido. Para o programa identier, o processo de cria cao de uma sessao de teste
utilizando a interface graca e ilustrado na Figura 9 abaixo.
Uma sessao de teste com o apoio das ferramentas Proteum e PokeTool pode ser con-
duzida atraves de uma interface graca ou atraves de scripts. A interface graca permite
ao usuario iniciante explorar e aprender os conceitos de teste relacionados ao criterio em
uso e da propria ferramenta. Alem disso, oferece melhores recursos para a visualiza cao dos
casos de teste e dos requisitos de teste, por exemplo dos mutantes, no caso da Proteum,
facilitando algumas tarefas como a identica cao dos mutantes equivalentes.
Figura 9: Criando uma sessao de teste para o programa identier na Proteum.
Conduzir uma sessao de teste atraves da interface graca e provavelmente mais facil,
porem menos exvel do que quando se utiliza a chamada direta aos programas que com-
poem as ferramentas. A interface graca depende de constante intera cao do testador, ao
passo que a utiliza cao de scripts possibilita a execu cao de longas sessoes de teste em batch.
O usuario pode construir um programa especicando o teste a ser realizado e a ferramenta
simplesmente executa esse programa, permitindo que se economize tempo na atividade
de teste devido `a redu cao do n umero de intera coes com a ferramenta. Por outro lado,
a elabora cao de scripts exige um esfor co de programa cao e completo domnio tanto dos
conceitos sobre o teste baseado em muta cao quanto dos proprios programas que compoem
as ferramentas, devendo ser utilizado pelo testador mais experiente [35]. Scripts de teste
tem se mostrado de grande utilidade na condu cao de estudos empricos, onde uma mesma
seq uencia de passos deve ser executada varias vezes ate que os resultados obtidos sejam
signicantes do ponto de vista estatstico.
24
A seguir, sera avaliada a adequa cao da atividade de teste do programa identier, re-
alizada ate este ponto com o uso da ferramenta PokeTool, em rela cao ao criterio Analise
de Mutantes, com o apoio da ferramenta Proteum; ou seja, sera avaliada a adequa cao dos
conjuntos Todos-Usos-adequado e Todos-Potenciais-Usos-adequado em rela cao ao criterio
Analise de Mutantes. Inicialmente, somente os casos de teste do conjunto T
0
foram impor-
tados; a Figura 10(a) mostra o estado da sessao de teste apos a execu cao dos mutantes.
Em seguida, como o escore de muta cao ainda nao e satisfatorio, foram adicionados os
casos de teste do conjunto T
1
e T
2
(Figura 10(b)). Observa-se que mesmo apos a adi cao
de todos os casos de teste do conjunto Todos-Potenciais-Usos-adequado, 371 mutantes
ainda permaneceram vivos.
Em uma primeira analise dos mutantes vivos, 78 foram marcados como equivalentes e
mais 13 casos de teste foram criados visando a matar os mutantes vivos nao-equivalentes:
T
3
= T
2
{(zzz, Valido), (aA, Valido), (A1234, Valido), (ZZZ, Valido), (AAA, Valido),
(aa09, Valido), ([, Invalido), ({, Invalido), (x/, Invalido), (x:, Invalido), (x18, Valido), (x[[,
Invalido), (x{{, Invalido)}. A Figura 11 ilustra dois dos mutantes vivos que foram analisa-
dos. O mutante da Figura 11 (a) e um mutante equivalente e o mutante da Figura 11 (b)
e um mutante que morre com o caso de teste ([, Invalido), presente em T
3
. Os pontos nos
quais as muta coes foram aplicadas esta destacado em negrito. A Figura 10(c) ilustra o
resultado obtido apos T
3
ter sido executado com todos os mutantes vivos. Como pode ser
observado, 64 mutantes ainda permaneceram vivos. Isto signica que qualquer um desses
64 mutantes poderiam ser considerados corretos em rela cao `a atividade de teste atual,
uma vez que nao existe um caso de teste selecionado que seja capaz de distinguir entre o
comportamento dos mutantes e do programa original (Figura 10(c)).
A m de obter uma melhor cobertura do criterio Analise de Mutantes, o processo
de analise dos mutantes vivos continuou ate que todos os equivalentes fossem marcados.
Ao termino desse processo, mais quatro casos de teste foram construdos (T
4
= T
3
{(@,
Invalido), (, Invalido), (x@, Invalido), (x, Invalido)}). A Figura 10(d) mostra o resultado
nal obtido. Observa-se que ainda restaram dois mutantes vivos (Figura 12 (a) e (b)).
Esses mutantes sao mutantes error-revealing e um deles representa o programa correto:
Figura 12 (b). Um mutante e dito ser error-revealing se para qualquer caso de teste t
tal que P
(t) = M
E importante observar que a aplica cao do criterio Muta c ao de Interface esta rela-
cionada `a conexao entre duas unidades e nao a uma unidade somente. A Figura 16
mostra o que acontece, por exemplo, quando a unidade F faz duas chamadas `a unidade
G. Nesse caso, os mutantes associados a primeira chamada so poderao ser mortos por
casos de teste que os exercitem a partir desse ponto de chamada. Para os mutantes do
Grupo-II isso e trivial visto que as muta coes sao realizadas exatamente nos locais onde
F chama G. Entretanto, para os operadores do Grupo-I isso nao ocorre. Visto que a
muta cao e realizada no corpo da unidade G, e necessario saber qual chamada sera usada
de modo que o mutante so possa ser morto a partir daquele ponto de chamada. Caso a
unidade seja chamada a partir de outro ponto, ela deve se comportar como no programa
original, ou seja, a muta cao nao deve ser habilitada [90].
.
.
.
.
.
.
.
.
.
Primeiro Conjunto
de Mutantes
Segundo Conjunto
de Mutantes
}
s1;
s2;
G();
G();
F() {
Figura 16: Conjuntos de mutantes gerados quando os operadores de interface sao aplicados
a uma conexao F-G [90].
Para ilustrar a aplica cao do criterio Muta cao de Interface, a seguir, da mesma forma
como anteriormente, a ferramenta PROTEUM/IMsera utilizada para avaliar a adequa cao dos
conjuntos de casos de teste adequados aos criterios Particionamento em Classes de Equiv-
alencia (T
0
), Todos-Potenciais-Usos (T
2
) e Analise de Mutantes (T
5
). As Figuras 17(b),
30
17(c) e 17(d) ilustram as coberturas obtidas para esses conjuntos de casos de teste, re-
spectivamente.
(a) Conjunto T
0
(b) Conjunto T
0
e equivalentes
(c) Conjunto T
2
(d) Conjunto T
5
Figura 17: Telas de status da sessao de teste da ferramenta PROTEUM/IM.
Como pode ser observado, utilizando-se todos os operadores de muta cao de interface,
foram gerados 456 mutantes. A ttulo de ilustra cao, a Figura 18 mostra dois dos mutantes
de interface gerados para o programa identier. O mutante da Figura 18 (a) foi gerado
pelo operador I-DirVarIncDec do Grupo-I e o mutante da Figura 18 (b) foi gerado pelo
operador II-ArgAriNeg do Grupo-II.
Observe que no caso do mutante da Figura 18 (a), existe uma fun c ao PREPARE MUTA()
no ponto de chamada da fun cao que se deseja testar, no caso a fun cao valid_s, e no corpo
de valid_s, outra fun cao (IF MUTA()) verica se a mesma foi chamada a partir do ponto
desejado, do contrario a muta cao nao e ativada.
Apos a execu cao dos mutantes de interface com o conjunto T
0
, 243 mutantes per-
maneceram vivos, resultando em um escore de muta cao de, aproximadamente, 0,47 (Figura 17(a)).
Analisando-se os mutantes vivos, observa-se que 28 deles eram equivalentes. Recalculando
o escore de muta cao, eliminando os equivalentes, o valor obtido para T
0
passou a ser de
0,497 Figura 17(b). Tal resultado demonstra que se somente o conjunto de casos de
teste funcional fosse utilizado, mais de 50% dos requisitos de teste exigidos pelo criterio
Muta cao de Interface nao teriam sido cobertos por T
0
.
Em seguida, na Figura 17(c) tem-se a adequa cao do conjunto Todos-Potenciais-Usos-
adequado (T
2
) em rela cao `a Muta cao de Interface. Observa-se que, mesmo tendo o dobro
31
.
.
.
.
.
.
main() {
...
printf ("Identificador: ");
achar = fgetc (stdin);
(valid_id = PREPARE2_MUTA(valid s(achar)));
...
}
int valid_s(char ch) {
if(IF_MUTA(((ch >= A) && (ch <= Z)) ||
((ch >= a) && (ch <= z)),
((ch >= A) && (ch <= Z)) ||
((ch >= a) && (ch <= z)))
{
return (1);
}
else
{
return (0);
}
}
printf ("Identificador: ");
achar = fgetc (stdin);
valid_id = valid_s(-achar);
if(valid_id)
{
length = 1;
}
.
.
.
.
.
.
(a) Mutante do Grupo-I (b) Mutante do Grupo-II
Figura 18: Exemplos de mutantes gerados pela ferramenta PROTEUM/IM.
de casos de teste que T
0
, o escore de muta cao obtido com T
2
ainda nao e satisfatorio (0,50)
e a metade dos requisitos exigidos pela Muta cao de Interface ainda nao foram satisfeitos.
Continuando a avaliar a cobertura obtida pelo conjunto de casos de teste adequados
ao criterio Analise de Mutantes (T
5
) observa-se que foi possvel obter um conjunto Mu-
ta cao de Interface-adequado, ou seja, para o programa identier, um conjunto de casos de
teste Analise de Mutantes-adequado tambem se mostrou Muta cao de Interface-adequado
(Figura 17(d)). Deve-se observar que os criterios Analise de Mutantes e Muta cao de In-
terface sao incomparaveis do ponto de vista da rela cao de inclusao [51]. Nos experimentos
conduzidos, utilizando-se programas de maior complexidade, observou-se que conjuntos de
casos de teste Analise de Mutantes-adequados nao eram Muta cao de Interface-adequados
e vice-versa. Em nvel de unidade, observou-se que os criterios Analise de Mutantes e
Todos-Potenciais-Usos sao incomparaveis tanto do ponto de vista teorico quanto emprico
[43]. Tais resultados motivam a investigar qual a rela cao existente entre o criterio Muta cao
de Interface e os criterios Potenciais-Usos de unidade [4] e de integra cao [101].
4 Automatizacao da Atividade de Teste
A qualidade e produtividade da atividade de teste sao dependentes do criterio de teste
utilizado e da existencia de uma ferramenta de teste que o suporte. Sem a existencia de
uma ferramenta automatizada a aplica cao de um criterio torna-se uma atividade propensa
a erros e limitada a programas muito simples.
A disponibilidade de ferramentas de teste permite a transferencia de tecnologia para as
ind ustrias e contribui para uma contnua evolu cao de tais ambientes, fatores indispensaveis
para a produ cao de software de alta qualidade. Alem disso, a existencia de ferramentas
automatizadas auxiliam pesquisadores e alunos de Engenharia de Software a adquirir os
conceitos basicos e experiencia na compara cao, sele cao e estabelecimento de estrategias
de teste.
32
Outro fator importante e o suporte oferecido pelas ferramentas aos testes de regressao.
Os casos de teste utilizados durante a atividade de teste podem ser facilmente obtidos para
revalida cao do software apos uma modica cao. Com isso, e possvel checar se a funcional-
idade do software foi alterada, reduzir o custo para gerar os testes de regressao e comparar
os resultados obtidos nos testes de regressao com os resultados do teste original [43].
No que diz respeito ao teste de muta cao, as primeiras ferramentas come caram a surgir
no nal da decada de 70 e incio da decada de 80 [25, 131]. Tais ferramentas apresentavam
algumas limita coes e eram destinadas ao teste de programas escritos em Fortran. A partir
do nal da decada de 80 e durante a decada de 90 novas ferramentas foram desenvolvi-
das a m de suprir as deciencias encontradas nas anteriores. Entre elas destacam-se a
Mothra [53, 115], a Proteum [62, 111] e a PROTEUM/IM [35, 132].
A Mothra e uma ferramenta de apoio ao criterio Analise de Mutantes para o teste de
programas na linguagem FORTRAN. Foi desenvolvida na Purdue University e Georgia
Institute of Technology e possui 22 operadores de muta cao [53, 115]. Alem disso, a ferra-
menta apresenta interface baseada em janelas, facilitando a visualiza cao das informa coes,
e permite a incorpora cao de outras ferramentas (gerador de casos de teste, vericador de
equivalencia e oraculo).
As ferramentas Proteum [62, 111] e PROTEUM/IM [35, 132] foram desenvolvidas no In-
stituto de Ciencias Matematicas e de Computa cao ICMC/USP e apoiam a aplica cao
os criterios Analise de Mutantes e Muta cao de Interface, respectivamente. Ambas sao
ferramentas multi-linguagem, ou seja, permitem testar programas escritos em diferentes
linguagens de programa cao; atualmente estao conguradas para o teste de programas es-
critos na linguagem C. O que diferencia ambas as ferramentas e o conjunto de operadores
de muta cao utilizados em cada uma e o fato de que a Proteum/IM oferece caractersticas
para testar a conexao entre as unidades do software.
Quanto aos criterios baseados em analise de uxo de dados, como um dos primeiros
esfor cos signicantes tem-se a ferramenta Asset (A System to Select and Evaluate Tests),
desenvolvida na New York University em 1985 por Frankl e Weyuker [55] para o teste de
programas Pascal. Esta utiliza os criterios de adequa cao baseados na analise de uxo de
dados denidos por Rapps e Weyuker [30, 31].
A Proteste [71] tem como objetivo implementar um ambiente completo para suporte
ao teste estrutural de programas escritos em Pascal, incluindo tanto criterios baseados
em uxo de controle (Todos-Nos e Todos-Arcos) quanto criterios baseados em uxo de
dados (os denidos por Rapps e Weyuker [30, 31] e os Potenciais-Usos [4]). Alem de
Pascal, e possvel congurar o ambiente para outras linguagens atraves da utiliza cao de
uma ferramenta que gera analisadores de codigo fonte especcos para cada linguagem. O
ambiente Proteste e um prototipo desenvolvido na Universidade Federal do Rio Grande
do Sul.
Um dos esfor cos mais signicativos no contexto de ferramentas de teste foi o desen-
volvimento da Atac (Automatic Test Analysis for C), pela Telcordia Technologies [56]. A
Atac apoia a aplica cao de criterios estruturais de uxo de controle e de dados no teste de
programas escritos nas linguagens C e C++. Basicamente, a ferramenta permite vericar
a adequa cao de um conjunto de casos de teste, visualizar codigo nao coberto pelos casos
de teste, auxiliar na gera cao de casos de teste e reduzir o tamanho do conjunto de teste,
atraves da elimina cao de casos de teste redundantes.
Atualmente a Atac esta integrada ao xSuds (Telcordia Software Visualization and Anal-
ysis Toolsuite), um ambiente de suporte `as atividades de teste, analise e depura cao [80].
33
O ambiente xSuds vem sendo comercializado pela IBM, sendo uma forte evidencia de que
o uso de criterios baseados em uxo de dados constituira, em um futuro proximo, o estado
da pratica no que diz respeito ao teste de software.
As ferramentas de teste, embora implementem tecnicas e criterios diferentes, apre-
sentam caractersticas globais bastante semelhantes. Assim, pode-se identicar conjuntos
basicos de opera coes que caracterizam atividades pertinentes ao processo de teste de soft-
ware. As opera coes realizadas por tais ferramentas podem ser divididas em [133]: cria cao
da sessao de teste, tratamento de casos de teste (adi cao, elimina cao, visualiza cao, impor-
ta cao e minimiza cao do conjunto de casos de teste), gera cao dos requisitos de teste, analise
da adequa cao do conjunto de casos de teste e gera cao de relatorios. Na Tabela 8 estao
sintetizadas algumas das principais caractersticas das ferramentas Proteum, PROTEUM/IM
e PokeTool.
Tabela 8: Principais caractersticas das ferramentas PokeTool, Proteum e PROTEUM/IM.
PokeTool Proteum PROTEUM/IM
Linguagem C, COBOL, FORTRAN C C
Gera c ao automatica de casos de teste Nao Nao Nao
Edi c ao de casos de teste Sim Sim Sim
Registro sobre caminhos nao exe-
cutaveis ou mutantes equivalentes
Sim Sim Sim
Restri c ao de tamanho do programa a
ser testado
Nao Nao N ao
Elimina c ao de casos de teste redun-
dantes
Sim Sim N ao
Interface Menu, Janelas e Scripts Janelas e Scripts Janelas e Scripts
Sessoes de teste Sim Sim Sim
Apoio a experimentos Sim Sim Sim
Importa c ao de casos de teste Sim Sim Sim
Gera c ao seletiva de mutantes Nao se aplica Sim Sim
Ambiente compilado/interpretado Compilado Compilado Compilado
Execu c ao distribuda Nao Nao N ao
Determina c ao automatica de mutantes
equivalentes ou caminhos nao exe-
cutaveis (heursticas)
Sim Nao N ao
5 Estudos Empricos
Em virtude da diversidade de criterios de teste existente, saber qual deles deve ser
utilizado ou como utiliza-los de forma complementar a m de obter o melhor resultado
com o menor custo e uma questao complicada. A realiza cao de estudos empricos procura,
atraves da compara cao entre os criterios, obter uma estrategia que seja ecaz para revelar
a presen ca de erros no programa, ao mesmo tempo em que apresente um baixo custo de
aplica cao.
Para entender a importancia desses estudos, considere a seguinte situa cao [41]: e
preciso testar um programa P que sera usado em um ambiente de seguran ca crtica e o
funcionamento desse sistema depende de que P tenha sido bem testado. O testador deve
testar P tanto quanto for possvel e, para isso, decide usar varios criterios de teste a m
34
de vericar a adequa cao dos casos de teste desenvolvidos. Inicialmente, os casos de teste
sao gerados de modo a satisfazerem um determinado criterio C
1
. Assim, uma questao
que surge e: Tendo obtido um conjunto de casos de teste T adequado ao criterio C
1
e,
utilizando agora o criterio C
2
, consegue-se melhorar o conjunto de casos de teste T?.
Atraves de estudos empricos procura-se responder a essa e outras questoes que surgem
diante da diculdade em decidir quando um programa esta sucientemente testado.
Segundo Wong et al. [47], custo, ecacia e diculdade de satisfacao (strength)
sao fatores basicos para comparar a adequa cao dos criterios de teste. Custo: refere-se
ao esfor co necessario na utiliza cao de um criterio. Pode ser medido atraves do n umero
de casos de teste requeridos para satisfazer o criterio ou por outras metricas dependentes
do criterio, tais como: o tempo necessario para executar todos os mutantes gerados ou o
tempo gasto para identicar os mutantes equivalentes, caminhos e associa coes nao exe-
cutaveis, construir manualmente os casos de teste e aprender a utilizar as ferramentas de
teste. Ecacia: refere-se `a capacidade de um criterio em detectar um maior n umero de
erros em rela cao a outro. Diculdade de satisfa cao: refere-se `a probabilidade de satisfazer
um criterio tendo satisfeito outro [41]; seu objetivo e vericar o quanto consegue-se sat-
isfazer um criterio C
1
tendo satisfeito um criterio C
2
(C
1
e C
2
sao incomparaveis ou C
1
inclui C
2
).
Utilizando-se tais fatores comparativos, estudos empricos e teoricos sao conduzidos
com o objetivo de encontrar formas economicas e produtivas para a realiza cao dos testes.
O desenvolvimento de experimentos requer a elabora cao de um framework para sua con-
du cao. Esse framework e composto, basicamente, pelas seguintes atividades [42]:
sele cao e prepara cao dos programas;
sele cao das ferramentas de teste;
gera cao de conjuntos de casos de teste;
execu cao dos programas com os casos de teste gerados;
analise dos resultados do experimento.
A gera cao dos conjuntos de casos de teste e feita, em geral, aleatoriamente. A gera cao
aleatoria alem de ser facilmente automatizada e de gerar grandes conjuntos de casos
de teste a baixo custo, tambem elimina possveis inuencias do testador em conduzir
a gera cao dos casos de teste de acordo com o conhecimento dos programas utilizados.
Normalmente, dene-se o domnio de entrada de cada programa para a gera cao aleatoria
e, quando nao se consegue satisfazer o criterio, casos de teste criados manualmente sao
adicionados ao conjunto [43].
Alem dessas atividades, conforme o tipo de experimento a ser realizado, sao necessarias
atividades adicionais. Ao comparar o criterio Analise de Mutantes com os criterios basea-
dos em analise de uxo de dados, por exemplo, e necessario, durante a execu cao dos pro-
gramas, identicar os mutantes equivalentes e os caminhos/associa coes nao executaveis.
5.0.2 Estudos Empricos: Criterios Baseados em Analise de Fluxo de Dados
e Criterios Baseados em Mutacao
Do ponto de vista teorico, os criterios baseados em analise de uxo de dados tem com-
plexidade exponencial [4], o que motiva a condu cao de estudos empricos para determinar
o custo de aplica cao desses criterios do ponto de vista pratico.
35
Estudos empricos foram conduzidos para determina cao da complexidade desses criterios
em termos praticos, ou seja, uma avalia cao emprica desses e de outros criterios de teste
objetivando a determina cao de um modelo para estimativa do n umero de casos de teste
necessarios. Essa determina cao e muito importante para as atividades de planejamento
do desenvolvimento, por razoes obvias. Weyuker [88] caracterizou um benchmark para
a avalia cao emprica de uma famlia de criterios de teste estruturais; esse mesmo bench-
mark foi aplicado para uma primeira avalia cao emprica dos criterios Potenciais-Usos [134].
Com a aplica cao do benchmark, obtiveram-se resultados bastante interessantes. Em geral,
pode-se dizer que os criterios Potenciais-Usos, do ponto de vista pratico, sao factveis e
demandam um n umero de casos de teste relativamente pequeno.
Atraves de estudos empricos tem-se obtido evidencias de que a Analise de Mutantes
tambem pode constituir na pratica um criterio atrativo para o teste de programas [45].
Tais experimentos, alem de mostrarem como a Analise de Mutantes se relaciona com
outros criterios de teste, buscam novas estrategias a m de reduzir os custos associados
ao criterio.
Mathur e Wong [45] compararam dois criterios de muta cao alternativos: a Muta cao
Aleatoria (no caso, foi selecionado 10% de cada operador de muta cao) e a Muta cao Re-
strita. Esse experimento foi conduzido para comparar qual dessas estrategias apresentava
melhor rela cao custo/ecacia. Segundo os autores, ambas mostraram-se igualmente e-
cazes, obtendo-se signicativa redu cao no n umero de mutantes a serem analisados sem
sensvel perda na ecacia em revelar erros.
Em outro trabalho realizado por Mathur e Wong [41] foi comparada a adequa cao de
conjuntos de casos de teste em rela cao aos criterios Analise de Mutantes e Todos-Usos.
O objetivo do experimento era vericar a diculdade de satisfa cao entre os dois criterios,
bem como seus custos, uma vez que esses criterios sao incomparaveis do ponto de vista
teorico. Nesse estudo, os conjuntos de casos de teste Analise de Mutantes-adequados
tambem se mostraram Todos-Usos-adequados. No entanto, os conjuntos de casos de teste
Todos-Usos-adequados nao se mostraram, em muitos dos casos, adequados para o criterio
Analise de Mutantes. Esses resultados demonstram que e mais difcil satisfazer o criterio
Analise de Mutantes do que o criterio Todos-Usos, podendo-se dizer, na pratica, que
Analise de Mutantes inclui Todos-Usos [41].
Wong et al. [47] utilizaram a Muta cao Aleatoria (10%) e a Muta cao Restrita para
comparar o criterio Analise de Mutantes com o criterio Todos-Usos; o objetivo era veri-
car o custo, ecacia e diculdade de satisfa cao desses criterios. Os autores forneceram
evidencias de que os criterios Todos-Usos, Muta cao Aleatoria (10%) e Muta cao Restrita
representam, nesta ordem, o decrescimo do custo necessario para a aplica cao do criterio
(n umero de casos de teste requeridos), ou seja, o criterio Todos-Usos requer mais casos de
teste para ser satisfeito do que a Muta cao Restrita. Em rela cao `a ecacia para detectar
erros, a ordem (do mais ecaz para o menos) e Muta cao Restrita, Todos-Usos e Muta cao
Aleatoria. Observou-se, com isso, que examinar somente uma pequena porcentagem de
mutantes pode ser uma abordagem util na avalia cao e constru cao de conjuntos de casos
de teste na pratica. Desse modo, quando o testador possui pouco tempo para efetuar
os testes (devido ao prazo de entrega do produto) pode-se usar o criterio de Analise de
Mutantes para testar partes crticas do software, utilizando alternativas mais economicas,
tal como a Muta cao Restrita ou o criterio Todos-Usos, para o teste das demais partes do
software, sem comprometer signicativamente a qualidade da atividade de teste.
36
Outt tambem realizou um experimento comparando o criterio Analise de Mutantes
com o criterio Todos-Usos [135]. Os resultados foram semelhantes `aqueles obtidos por
Wong et al. [47], ou seja, o criterio Analise de Mutantes revelou um maior n umero de
erros do que o criterio Todos-Usos e mais casos de testes foram necessarios para satisfazer
o criterio Analise de Mutantes. Alem disso, os conjuntos de casos de teste Analise de
Mutantes-adequados foram adequados ao criterio Todos-Usos, n ao sendo o inverso ver-
dadeiro, resultado semelhante ao de Mathur [41].
Nos trabalhos de Wong et al. [48] e Souza [43] foram comparadas seis diferentes classes
de muta cao restrita quanto `a ecacia em revelar erros. Analisou-se a ecacia das classes
de muta cao obtidas a partir dos operadores de muta cao da ferramenta Proteum. Desse
experimento pode-se observar quais classes de muta cao eram mais economicas (baixo
custo de aplica cao) e ecazes. Com isso, foi possvel o estabelecimento de uma ordem
incremental para o emprego dessas classes de muta cao, com base na ecacia e custo de
cada uma. Desse modo, os conjuntos de casos de testes podem ser construdos inicialmente
de forma a serem adequados `a classe com menor rela cao custoecacia. Na seq uencia,
quando as restri coes de custo permitirem, esse conjunto pode ser melhorado de modo a
satisfazer as classes de muta cao com maior rela cao custoecacia.
Souza [43] realizou um estudo emprico com a nalidade de avaliar o strength e o
custo do criterio Analise de Mutantes empregando, para efeito comparativo, os criterios
Potenciais-Usos [4], os quais incluem o criterio Todos-Usos. Os resultados demonstraram
que o custo de aplica cao do criterio Analise de Mutantes, estimado pelo n umero de casos de
teste necessario para satisfazer o criterio, apresentou-se maior do que o custo dos criterios
Potenciais-Usos. Em rela cao `a diculdade de satisfa cao (strength) observou-se que, de uma
maneira geral, os criterios Analise de Mutantes e Todos-Potenciais-Usos (PU) sao incom-
paraveis mesmo do ponto de vista emprico. Ja os criterios Todos-Potenciais-Usos/Du
(PUDU) e Todos-Potenciais-DU-Caminhos (PDU) [4] apresentaram maior strength que o
criterio Todos-Potenciais-Usos (PU) em rela cao `a Analise de Mutantes, o que motiva a
investigar-se o aspecto complementar desses criterios quanto ` a ecacia.
Entre os estudos empricos que visam a estabelecer alternativas viaveis para a aplica cao
do criterio Analise de Mutantes pode-se destacar o trabalho de Outt et al. [46]. O
objetivo do estudo conduzido por Outt et al. [46] era determinar um conjunto essencial de
operadores de muta cao para o teste de programas FORTRAN, a partir dos 22 operadores
de muta cao utilizados pela Mothra. Os resultados obtidos demonstraram que apenas cinco
eram sucientes para aplicar ecientemente o teste de muta c ao.
Nessa mesma linha, um estudo preliminar realizado por Wong et al. [136], comparando
a Muta cao Restrita no contexto das linguagens C e Fortran, resultou na sele cao de um
subconjunto de operadores de muta cao da ferramenta Proteum [62, 137], constituindo
uma base para a determina cao do conjunto essencial de operadores de muta cao para a
linguagem C. A aplica cao deste subconjunto de operadores possibilitou reduzir o n umero
e mutantes gerados, mantendo a ecacia do criterio em revelar a presen ca de erros. A
sele cao dos operadores de muta cao foi realizada com base na experiencia dos autores e
os resultados motivaram a condu cao do trabalho de Barbosa [79]. Nesse trabalho forma
conduzidos experimentos com o objetivo de investigar alternativas pragmaticas para a
aplica cao do criterios Analise de Mutantes e, nesse contexto, foi proposto o procedimento
Essencial para a determina cao de um conjunto essencial de operadores de muta cao para a
linguagem C, com base nos operadores de muta cao implementados na ferramenta Proteum.
37
Para a aplica cao e valida cao desse procedimento dois experimentos foram conduzidos.
No primeiro, utilizou-se um grupo de 27 programas os quais compoem um editor de texto
simplicado; no segundo, 5 programas utilitarios do UNIX foram utilizados. De um modo
geral, ambos os conjuntos essenciais obtidos apresentaram um alto grau de adequa cao
em rela cao ao criterio Analise de Mutantes, com escores de muta cao acima de 0,995,
proporcionando, em media, redu coes de custo superiores a 65% [79].
Com a proposi cao do criterio Muta cao de Interface [35, 120] e evidente o aspecto
positivo de se utilizar o mesmo conceito de muta cao nas diversas fases do teste. Tam-
bem e natural a indaga cao sobre qual estrategia utilizar para se obter a melhor rela cao
custoecacia quando sao aplicados os criterios Analise de Mutantes e Muta cao de In-
terface no teste de um produto. Nesse contexto, investigou-se empiricamente qual o
relacionamento entre os criterios Analise de Mutantes e Muta cao de Interface e como
utilizar tais criterios de forma complementar na atividade de teste, tendo como objetivo
contribuir para o estabelecimento de uma estrategia de teste incremental, de baixo custo
de aplica cao e que garanta um alto grau de adequa cao em rela cao a ambos os criterios [44].
Inicialmente, estabeleceu-se uma estrategia incremental para a aplica cao dos oper-
adores de muta cao implementados na ferramenta PROTEUM/IM [35], procurando reduzir o
custo de aplica cao do criterio Muta cao de Interface. A utiliza cao dessa estrategia possibil-
itou uma redu cao no custo de aplica cao do criterio Muta cao de Interface em torno de 25%
e, ainda assim, conjuntos de casos de teste MI-adequados foram obtidos. Alem disso, um
estudo preliminar para a determina cao do conjunto essencial de operadores de muta cao
interface foi conduzido, utilizando o procedimento Essencial denido por Barbosa [79]. O
conjunto essencial obtido possibilitou a sele cao de conjuntos de casos de teste altamente
adequados ao criterio Muta cao de Interface (escores de muta cao em torno de 0,998) com
redu cao de custo, em termos do n umero de mutantes gerados, superior a 73% [44].
A diculdade de satisfa cao entre os criterios Analise de Mutantes e Muta cao de Inter-
face tambem foi avaliada, observando-se que tais criterios sao incomparaveis do ponto de
vista da rela cao de inclusao [30], devendo ser utilizados em conjunto para assegurar um
teste de melhor qualidade. Explorando o aspecto complementar desses criterios, algumas
estrategias de aplica cao dos operadores de muta cao de unidade e de integra cao foram
estabelecidas. Tais estrategias demonstraram que, mesmo com um n umero reduzido de
operadores, e possvel determinar conjuntos de casos de teste adequados ou muito proxi-
mos da adequa cao para ambos os criterios, a um menor custo [44].
6 Aplicacao do Criterio Analise de Mutantes no Con-
texto de Especicacoes Formais
Tecnicas de especica cao formal fornecem uma linguagem com sintaxe e semantica
formalmente denidas que possibilitam a deni cao do sistema de forma mais completa,
consistente, precisa e nao ambgua. As tecnicas formais sao empregadas durante a especi-
ca cao, analise e projeto, principalmente, de sistemas de seguran ca crtica.
Apesar de todo rigor das tecnicas formais, nao se garante que a especica cao formal
esteja livre de erros e de acordo com os requisitos do usuario. Observa-se tambem que
quanto mais cedo os erros sao detectados no processo de desenvolvimento, menos difcil
torna-se a tarefa de remove-los.
38
Algumas iniciativas de deni cao de criterios de teste para a valida cao de especica coes
formais sao identicadas. Tecnicas para sele cao de seq uencias de teste para especica coes
baseadas em Maquinas de Estados Finitos e Maquinas de Estados Finitos Estendidas sao
propostas, principalmente para o teste de conformidade de protocolos de comunica cao.
Os criterios de teste propostos por Ural [138], Probert e Guo [139], Fabbri [22], Souza et
al. [140] procuram utilizar o conhecimento adquirido no teste de programas, mapeando
criterios de teste empregados no nvel de programa para o nvel de especica cao. Essa
abordagem tem se mostrado promissora e pode complementar as tecnicas de simula cao
e analise de alcan cabilidade, normalmente empregadas para a valida cao de especica coes
baseadas em Maquinas de Estados, Redes de Petri, Estelle, entre outras.
Nesta se cao, sao apresentados os resultados da deni cao do criterio Analise de Mu-
tantes no contexto de especica coes formais, em particular, especica coes baseadas em
Redes de Petri, Maquinas de Estados Finitos, Statecharts e Estelle. Essas tecnicas formais
possuem apoio graco e por isso sao bastante empregadas, pois facilitam a visualiza cao e
a descri cao do sistema.
As Redes de Petri foram criadas para modelar sistemas que apresentam concorrencia,
paralelismo, comunica cao sncrona e assncrona [141]. Sua execu cao gera uma seq uencia
de eventos, obtidos a partir do disparo das transi coes, podendo ocorrer nao determinismo
no disparo das transi coes. Outro fator importante e que as Redes de Petri podem ser
utilizadas para analise de alcan cabilidade do sistema e para detec cao de impasses (dead-
lock), sendo que a arvore de alcan cabilidade e uma das principais tecnicas para analise de
Redes de Petri [22].
A tecnica Maquinas de Estados Finitos (MEFs) e muito utilizada para especica cao
do aspecto comportamental de sistemas reativos, particularmente, na area de protocolos
de comunica cao [142]. Sistemas Reativos sao sistemas baseados em eventos que reagem
a estmulos internos ou do ambiente, interagindo com o mesmo de forma a produzir
resultados corretos dentro de intervalos de tempo previamente especicados [143]. Sao
sistemas que devem funcionar com alto grau de conabilidade, pois falhas podem ocasionar
perdas humanas e economicas. O sistema modelado em uma MEF e descrito por uma
maquina, composto de estados e transi coes, estando em somente um de seus estados num
dado momento. A partir de uma entrada, a maquina gera uma sada e muda de estado.
A maquina pode ser representada por um diagrama de transi cao de estados ou por uma
tabela de transi cao, esta ultima seguindo o modelo de Mealy interse cao da linha com a
coluna especica o proximo estado e a sada gerada; ou o modelo de Moore interse cao
da linha com a coluna contem apenas o proximo estado e existe uma coluna separada para
indicar a sada associada com cada estado [144]. Com o objetivo de aumentar o poder
de representa cao das MEFs, extensoes dessa tecnica sao propostas, podendo-se citar:
Maquinas de Estados Finitos Estendidas (MEFEs) que representa o uso e deni cao
de variaveis associadas `as transi coes; e Maquinas de Estados Finitos com Comunica cao
(MEFCs) que representam os aspectos de comunica cao entre MEFs atraves de canais
de comunica cao com las associadas.
Statecharts e uma tecnica de especica cao formal proposta por Harel [143] para de-
screver o aspecto comportamental de sistemas reativos, atraves de uma hierarquia de
MEFEs. As caractersticas dessa tecnica a tornam mais atrativa que outras tecnicas for-
mais, como MEF, MEFE e Redes de Petri. Tais caractersticas sao: apresenta cao do
modelo por meio de uma hierarquia de MEFEs, que torna o modelo mais claro sendo
possvel visualizar os aspectos de concorrencia; ortogonalidade, que possibilita descrever
39
o paralelismo entre os componentes (MEFEs) do modelo especicado; broadcasting ou
rea cao em cadeia, que permite descrever a sincroniza cao entre os componentes ortogonais
do modelo; e historia, que possibilita lembrar estados que foram visitados previamente.
Essa tecnica permite descrever a dinamica dos sistemas reativos, de forma clara e re-
alstica, e ao mesmo tempo formal e rigorosa, de maneira a possibilitar tambem uma
simula cao detalhada do sistema [143].
Estelle - Extended State Transition Language e uma tecnica de descri cao formal desen-
volvida pela ISO (International Standards Organization), para especica cao de sistemas
distribudos, protocolos de comunica cao e servi cos. O padr ao ISO 9074 (1987) descreve a
semantica e sintaxe formal dessa tecnica. Um sistema especicado em Estelle e estrutu-
rado em uma hierarquia de modulos que se comunicam atraves de troca de mensagens. O
comportamento de cada modulo e descrito atraves de uma MEFE e utiliza, com algumas
restri coes, a linguagem Pascal, o que torna Estelle uma tecnica de facil aprendizagem. As
mensagens recebidas pelos modulos sao armazenadas em las de tamanho innito (tipo
FIFO - rst in rst out) e sao processadas de acordo com as condi c oes, prioridades e atra-
sos associados `as transi coes da MEFE. Estelle permite a descri cao de paralelismo sncrono
e assncrono entre as MEFEs do sistema, permitindo evolu cao dinamica da congura cao
do sistema. A especica cao pode ser descrita em diferentes nveis de abstra cao, vindo da
forma mais abstrata ate aproximar-se da implementa cao [145].
Para a deni cao do criterio Analise de Mutantes no contexto de especica coes e feito
um mapeamento da hipotese do programador competente, denindo a hipotese do es-
pecicador ou projetista competente: se a especica cao em teste foi construda por
um projetista ou especicador competente ou esta correta ou esta muito proxima do
correto. Fabbri [22] dene mais formalmente: dada uma especica cao S, gera-se um con-
junto de mutantes de S, (S), com base em um conjunto de operadores de muta cao, cuja
deni cao e um ponto fundamental para aplica cao do criterio Analise de Mutantes, e diz-se
que um conjunto de teste T e adequado para S em rela cao a se para cada especica cao
Z (S), ou Z e equivalente a S, ou Z difere de S em pelo menos um ponto de T.
Como mencionado anteriormente, um aspecto fundamental do criterio Analise de Mu-
tantes e a deni cao do conjunto de operadores de muta cao.
E necessario que esse conjunto
consiga representar os tipos de erros mais comuns que podem ser cometidos, no caso, pela
tecnica de especica cao.
Desse modo, Fabbri [22] dene o criterio Analise de Mutantes para valida cao de es-
pecica coes baseadas em Redes de Petri, em Maquinas de Estado Finito e em Statecharts,
considerando, para deni cao do conjunto de operadores de muta cao de cada tecnica, a
classica cao de erros sugerida por Chow [12]. Chow classica os erros de Maquinas de Es-
tados Finitos em 3 tipos: erros de transferencia (erros de transicao), erros de opera cao
(erros de sada) e erros de estados extras ou ausentes (erros de estados).
Para a tecnica Statecharts, o conjunto de operadores de muta cao e formado pelos
operadores denidos para MEF; pelos operadores de muta cao para MEFEs, os quais foram
denidos com base nos operadores de muta cao para a linguagem C [112] e que sao relativos
ao uso de variaveis e condi coes; e por alguns operadores de muta cao relativos aos aspectos
intrnsecos de Statecharts, como historia, broadcasting e paralelismo. Tres estrategias de
abstra cao para aplica cao do criterio Analise de Mutantes para Statecharts sao propostas:
Basica, Baseada em Ortogonalidade e Baseada em Historia. Essas estrategias permitem
selecionar os componentes do Statecharts em diferentes nveis de hierarquia, possibilitando
que a condu cao do teste seja realizada atraves das abordagens top-down ou bottom-
40
up. A partir dos componentes, o teste da especica cao pode partir do nvel mais alto
de abstra cao, que corresponde ao proprio Statecharts, ou partir do nvel mais baixo de
abstra cao, composto pelos componentes cujos estados sao atomos ou basicos [22].
Para a deni cao do criterio Analise de Mutantes para Estelle, Souza et al. [146] uti-
lizaram como base os operadores de muta cao denidos por Fabbri [22] para MEF e MEFE;
o trabalho de Probert e Guo [139], que dene operadores de muta cao para o aspecto
comportamental (MEFE) de Estelle; e o criterio Muta cao de Interface denido por Dela-
maro [120]. Os operadores de muta cao para Estelle sao divididos em 3 classes de acordo
com os aspectos da especica cao que sao abordados: muta cao nos modulos, que con-
siste, basicamente, na aplica cao de operadores de muta cao para as MEFEs dos modulos;
muta cao de interface, que procura validar os aspectos de comunica cao entre os modulos
do sistema; e muta cao na estrutura, que aplica os operadores de muta cao nos aspectos
arquiteturais da especica cao, como por exemplo, nas conexoes entre os modulos. Uma
estrategia incremental para aplica cao dos operadores de muta cao e apresentada.
Criterios de muta cao alternativo tambem foram denidos para as tecnicas de especi-
ca cao, visando a reduzir o n umero de mutantes gerados e, conseq uentemente, o custo do
criterio Analise de Mutantes. Sao utilizados os criterios muta cao aleatoria (sele cao de 10%
dos mutantes de cada operador) e muta cao restrita, visto que esses criterios apresentam
bons resultados para o nvel de programas, conforme apresentado na Se cao 3.4.
Mecanismos e ferramentas para automatizar a aplica cao do criterio Analise de Mu-
tantes no contexto dessas especica coes formais tambem tem sido explorados. Utilizando
a ferramenta Proteum como base, foram denidas as ferramentas: Proteum-RS/FSM
que apoia o teste de especica coes baseadas em MEF [147]; Proteum-RS/ST que apoia
o teste de especica coes baseadas em Statecharts [127, 148] e Proteum-RS/PN que apoia
o teste de especica coes baseadas em Redes de Petri [125, 126]. A disponibilidade dessas
ferramentas permite a realiza cao de experimentos para avaliar o custo e tambem ecacia
do criterio Analise de Mutantes no contexto de especica coes. Esses aspectos estao sendo
investigados.
Ainda no contexto do teste de especica coes, Wong et al. [149] investigaram como
criterios de uxo de controle e de dados poderiam ser utilizados no teste de especica coes
em SDL. Para auxiliar as atividades de teste e valida cao de especica coes, foi desen-
volvida a ferramenta CAT
SDL
(Coverage Analysis Tool SDL), que permite a analise de
cobertura de teste para especica coes baseadas em SDL e fornece dicas ao testador que
auxiliam na gera cao de casos de teste. A cobertura dos casos de teste e avaliada em re-
la cao a cinco criterios de teste inicialmente denidos para o teste em nvel de programas,
Todos-Blocos, Todas-Decisoes, Todos-Usos, Todos-P-Usos e Todos-C-Usos, sendo os dois
primeiros criterios de uxo de controle e os tres ultimos criterios de uxo de dados.
7 Aplicacao do Criterio Analise de Mutantes no Con-
texto de Programas OO
Atualmente, varios pesquisadores tem trabalhado na deni cao de operadores de mu-
ta cao para programas OO. Dentre eles destacam-se os trabalhos de Kim et al. [121, 150]
que denem um conjunto de operadores de muta cao de classes que nao exploram todas
as caractersticas de um programa OO; de Bieman et al. [151] que denem um conjunto
de operadores de muta cao especco para o teste de determinadas classes da Java API; e
41
de Ma et al. [122] os quais propuseram um conjunto de operadores de muta cao de classe
para Java que incluem os operadores propostos por Kim et al. [121, 150].
Outros pesquisadores tem tambem explorado o teste de muta c ao no contexto de sis-
temas distribudos que se comunicam via CORBA [152, 153]. Ainda, Delamaro et al. [154]
deniram um conjunto de operadores de muta cao que modelam erros tpicos cometidos
em programas concorrentes em Java.
Dada a existencia de um conjunto de operadores de muta cao denido para a linguagem
C para o teste de unidade e de integra cao, Vincenzi [155] identicou, para o teste de
metodos, quais dos operadores de unidade da linguagem C poderiam ser aplicados no
contexto de programas C++ e Java.
Usando a linguagem de descri cao de operadores de muta cao MuDeL [156], todos os
80 operadores de muta cao de unidade foram implementados em MuDeL. Em seguida,
devido `as similaridades das gramaticas das linguagens de C, C++ e Java em determinadas
constru coes, foram avaliadas tanto a possibilidade de aproveitar a mesma descri cao do
operador de muta cao emMuDeL nas tres linguagens, bem como a concep cao do operador
em si.
A Figura 19 sintetiza os resultados obtidos. Considerando que no total sao 80 oper-
adores de muta cao, observa-se que 31 (38,75%) operadores sao comuns `as tres linguagens
de programa cao. A maioria, 34 (42,50%), sao comuns `as linguagens C e C++. Alem disso,
para a linguagem C, outros 15 (18,75%) operadores podem ser aplicados, totalizando os
80 operadores. O mesmo acontece para a linguagem C++. No caso da linguagem Java,
alem dos operadores comuns 31 (38,75%) , mais 28 (35,00%) puderam ser instanciados
por caracterizarem erros tpico que podem ocorrer quando se programa em Java. Os de-
mais, por serem de caractersticas intrnsecas de C e C++, tais como ponteiros, nao foram
implementados. Observa-se entretanto que, embora existam operadores especcos para
estruturas sintaticas de C e C++ que nao existem em Java, como o caso do operador SGLR
goto Label Replacement , a ideia do operador pode ser aproveitada no contexto de Java.
Ou seja, embora Java nao tenha comando goto, Java possui comandos tais como break
e continue com rotulos, os quais nao existem em C e C++. Assim sendo, esse operador
que troca rotulos de comandos goto em programas C e C++ pode ser adaptado para o
contexto de Java para trocar os rotulos de comandos break e continue com rotulos.
Um ponto importante destacado por Binder [157, 158] e que, em geral, a complexidade
dos metodos em programas OO nao e muito grande. A ideia e desenvolver metodos simples
que, pela intera cao com outros metodos da mesma ou de outras classes, implementem a
funcionalidade desejada. Nesse sentido, o teste de integra cao entre metodos e tao ou
mais importante no teste de programas OO quanto o teste de unidade em programas
procedimentais.
Assim sendo, o proximo passo e a avalia cao da adequa cao dos operadores de Muta cao
de Interface [35] no teste de programas OO. Uma vez que OO apresenta caractersticas
de encapsulamento, heran ca, polimorsmo e acoplamento din amico, e necessario inves-
tigar como essas caractersticas impactam a aplica cao dos criterios e quais operadores
devem ser adaptados/redenidos de modo a permitir a aplica c ao do criterio Muta cao de
Interfaceno contexto de programas OO, viabilizando o teste de integra cao nesse contexto:
inter-metodo, intra-classe e inter-classe. Alem disso, a ferramenta de teste JaBUTi deve
ser estendida para apoiar o teste de muta cao em programas OO [155].
42
OAAA OAAN OABA OABN OAEA
OBAA OBAN OBBA OBBN OBEA
OBNG OCNG OEAA OEBA OLLN
OLNG OMMO OPPO ORRN SBRC
SBRn SCRB SCRn SDWD SMTC
SMTT SSDL SSWM STRI STRP
SWDD
CGCR CLCR OALN OARN OASA
OASN OBLN OBRN OBSA OBSN
OESA OIPM OLAN OLBN OLRN
OLSN ORAN ORBN ORLN ORSN
OSAA OSAN OSBA OSBN OSEA
OSLN OSRN OSSA OSSN SGLR
SRSR VASM VDTR VTWD
CGSR CLSR CRCR OCOR
SMVB SSOM VGAR VGPR
VGSR VGTR VLAR VLPR
VLSR VLTR VSCR
CGSR CLSR CRCR OCOR
SMVB SSOM VGAR VGPR
VGSR VGTR VLAR VLPR
VLSR VLTR VSCR
CGCR CGSR CLCR CLSR CRCR
OASA OASN OBSA OBSN OCOR
OESA OSAA OSAN OSBA OSBN
OSEA OSSA OSSN SMVB SRSR
SSOM VASM VDTR VGAR VGSR
VLAR VLSR VTWD
C C++
Java
Figura 19: Classica cao Operadores Linguagem.
8 Conclusao
Neste texto foram apresentados alguns criterios de teste de software e conceitos per-
tinentes, com enfase naqueles considerados mais promissores a curto e medio prazo: os
criterios baseados em uxo de dados, o criterio Analise de Mutantes e o criterio Muta cao
de Interface. Foram tambem apresentadas as ferramentas de teste PokeTool, Proteum e
PROTEUM/IM, assim como identicadas varias outras iniciativas e esfor cos de automatiza-
cao desses criterios, dada a relevancia desse aspecto para a qualidade e produtividade da
propria atividade de teste.
Procurou-se ressaltar o aspecto complementar das diversas tecnicas e criterios de teste
e a relevancia de se conduzir estudos empricos para a forma cao de um corpo de conheci-
mento que favore ca o estabelecimento de estrategias de teste incrementais que explorem
as diversas caractersticas dos criterios. Nessas estrategias seriam aplicados inicialmente
criterios mais fracos e talvez menos ecazes para a avalia cao da adequa cao do conjunto
de casos de teste, e em fun cao da disponibilidade de or camento e de tempo, incremen-
talmente, poderiam ser utilizados criterios mais fortes e eventualmente mais ecazes,
porem, em geral, mais caros. Estudos empricos sao conduzidos no sentindo de avaliar
os aspectos de custo, strength e ecacia dos criterios de teste, buscando contribuir para o
estabelecimento de estrategias de teste ecazes, de baixo custo e para a transforma cao do
estado da pratica, no que tange ao uso de criterios e ferramentas de teste.
Discutiu-se a deni cao de criterio de teste para a aplica c ao no contexto de especi-
ca coes baseadas em Redes de Petri, Maquinas de Estado Finito, Statecharts, Estelle e SDL.
Mecanismos e ferramentas de teste para apoiar a aplica cao desse criterio no contexto de es-
pecica coes tem sido desenvolvidas, com por exemplo as ferramentas Proteum-RS/FSM,
Proteum-RS/ST, Proteum-RS/PN e CAT
SDL
que apoiam o teste de especica coes em
MEFs, Statecharts, Redes de Petri e SDL, respectivamente.
E importante observar que o
43
conjunto de casos de teste obtido para testar e validar a especica cao pode ser utilizado
durante o teste de conformidade da implementa cao em teste. A rela cao existente entre
esses nveis de abstra cao: especica cao e implementa cao estao sendo investigados.
Mostrou-se tambem que os conceitos e mecanismos desenvolvidos originalmente para
o teste de programas procedimentais podem ser utilizados no contexto do paradigma de
desenvolvimento de software orientado a objeto, com as devidas adapta coes. Extensoes de
criterios de teste baseados em uxo de controle, uxo de dados e de muta cao foram pro-
postas para o teste de programas OO. Alem disso, ferramentas de apoio a esses criterios
tambem foram desenvolvidas, como por exemplo as ferramentas
X
Suds e JaBUTi. De
uma maneira geral, pode-se dizer que a atividade de teste tem forte rela cao com a ativi-
dade de Qualidade do Software, sendo que testes bem conduzidos procuram aumentar a
conabilidade do software. Alem disso, o conjunto de informa coes obtidos na atividade
de teste e signicativo para as atividades de depura cao, estimativa de conabilidade e de
manuten cao.
Referencias
[1] M. E. Delamaro and J. C. Maldonado. Uma visao sobre a aplica cao da analise de
mutantes. Technical Report 133, ICMC/USP, Sao Carlos SP, March 1993.
[2] J. C. Maldonado, A. M. R. Vincenzi, E. F. Barbosa, S. R. S. Souza, and M. E.
Delamaro. Aspectos teoricos e empricos de teste de cobertura de software. Technical
Report 31, Instituto de Ciencias Matematicas e de Computa cao ICMC-USP, June
1998.
[3] R. S. Pressman. Software Engineering A Practitioners Approach. McGraw-Hill,
4 edition, 1997.
[4] J. C. Maldonado. Criterios Potenciais Usos: Uma Contribui c ao ao Teste Estrutural
de Software. PhD thesis, DCA/FEE/UNICAMP, Campinas, SP, July 1991.
[5] M. C. Paulk. Capability maturity model for software version 1.1. Technical Report
93-TR-24, CMU/SEI, February 1993.
[6] T. J. Ostrand and E. J. Weyuker. Using data ow analysis for regression testing. In
Sixth Annual Pacic Northwest Software Quality Conference, Portland Oregon,
September 1988.
[7] J. Hartmann and D. J. Robson. Techniques for selective revalidation. IEEE Soft-
ware, 7(1):3136, January/February 1990.
[8] A. Veevers and A. Marshall. A relationship between software coverage metrics and
reliability. Software Testing, Verication and Reliability, 4(1):38, 1994.
[9] G. S. Varadan. Trends in reliability and test strategies. IEEE Software, 12(3):10,
May 1995.
[10] G. J. Myers. The Art of Software Testing. Wiley, New York, 1979.
44
[11] B. Beizer. Software Testing Techniques. Van Nostrand Reinhold Company, New
York, 2nd edition, 1990.
[12] T. S. Chow. Testing software design modelled by nite-state machines. IEEE
Transactions on Software Engineering, 4(3):178187, May 1978.
[13] S. Fujiwara, G. V. Bochmann, F. Khendek, M. Amalou, and A. Ghedamsi. Test
selection based on nite state models. IEEE Transactions on Software Engineering,
17(6):591603, June 1991.
[14] E. V. Berard. Essays on Object-Oriented Software Engineering, volume 1. Prentice-
Hall Inc, Englewood Clis, New Jersey, 1992.
[15] M. J. Harrold, J. D. McGregor, and K. J. Fitzpatrick. Incremental testing of object-
oriented class structures. In 14th International Conference on Software Engineering,
pages 6880, Los Alamitos, CA, May 1992. IEEE Computer Society Press.
[16] D. Homan and P. Strooper. A case study in class testing. In CASCON 93, pages
472482, IBM Toronto Laboratory, October 1993.
[17] M. D. Smith and D. J. Robson. A framework for testing object-oriented programs.
Journal of Object-Oriented Programming, 5(3):4553, June 1992.
[18] P. C. Jorgensen and C. Erickson. Object oriented integration testing. Communica-
tions of the ACM, 37(9):3038, September 1994.
[19] J. D. McGregor. Functional testing of classes. In Proc. 7th International Quality
Week, San Francisco, CA, May 1994. Software Research Institute.
[20] G. C. Murphy, P. Townsend, and P. S. Wong. Experiences with cluster and class
testing. Communications of the ACM, 37(9):3947, September 1994.
[21] S. C. P. F. Fabbri, J. C. Maldonado, M. E. Delamaro, and P. C. Masiero. Uma
ferramenta para apoiar a valida cao de maquinas de estado nito pelo criterio de
analise de mutantes. In Software Tools Proceedings of the 9th Brazilian Symposium
on Software Engineering, pages 475478, Recife PE, Brazil, October 1995.
[22] S. C. P F. Fabbri. A Analise de Mutantes no Contexto de Sistemas Reativos: Uma
Contribui cao para o Estabelecimento de Estrategias de Teste e Valida c ao. PhD
thesis, IFSC-USP, Sao Carlos SP, October 1996.
[23] W. E. Howden. Software Engineering and Technology: Functional Program Testing
and Analysis. McGrall-Hill Book Co, New York, 1987.
[24] D. E. Perry and G. E. Kaiser. Adequate testing and object-oriented programming.
Journal on Object-Oriented Programming, 2(5):1319, January/February 1990.
[25] T. A. Budd. Mutation Analysis: Ideas, Example, Problems and Prospects, chapter
Computer Program Testing. North-Holand Publishing Company, 1981.
[26] J. B. Goodenough and S. L. Gerhart. Towards a theory of test data selection. IEEE
Transactions on Software Engineering, 2(3):156173, September 1975.
45
[27] P. M. Herman. A data ow analysis approach to program testing. Australian
Computer Journal, 8(3):9296, November 1976.
[28] W. E. Howden. Weak mutation testing and completeness of test sets. IEEE Trans-
actions on Software Engineering, 8(4):371379, July 1982.
[29] J. W. Laski and B. Korel. A data ow oriented program testing strategy. IEEE
Transactions on Software Engineering, 9(3):347354, May 1983.
[30] S. Rapps and E. J. Weyuker. Data ow analysis techniques for program test data
selection. In 6th International Conference on Software Engineering, pages 272278,
Tokio, Japan, September 1982.
[31] S. Rapps and E. J. Weyuker. Selecting software test data using data ow informa-
tion. IEEE Transactions on Software Engineering, 11(4):367375, April 1985.
[32] S. C. Ntafos. On required element testing. IEEE Transactions on Software Engi-
neering, 10(6):795803, November 1984.
[33] H. Ural and B. Yang. A structural test selection criterion. Information Processing
Letters, 28:157163, 1988.
[34] R. A. DeMillo, R. J. Lipton, and F. G. Sayward. Hints on test data selection: Help
for the practicing programmer. IEEE Computer, 11(4):3443, April 1978.
[35] M. E. Delamaro. Muta cao de Interface: Um Criterio de Adequa c ao Inter-
procedimental para o Teste de Integra c ao. PhD thesis, Instituto de Fsica de Sao
Carlos Universidade de Sao Paulo, Sao Carlos, SP, June 1997.
[36] J. W. Duran and S. C. Ntafos. An evaluation of random testing. IEEE Transactions
on Software Engineering, 10(4), July 1984.
[37] P. G. Frankl and E. J. Weyuker. A formal analysis of the fault-detecting ability
of testing methods. IEEE Transactions on Software Engineering, 19(3):202213,
March 1993.
[38] P. G. Frankl and E. J. Weyuker. An analytical comparison of the fault-detecting
ability of data ow testing techniques. In XV International Conference on Software
Engineering, pages 415424, May 1993.
[39] M. R. Girgis and M. R. Woodward. An experimental comparison of the error
exposing ability of program testing criteria. In Workshop on Software Testing,
pages 6471, Ban Canada, July 1986. Computer Science Press.
[40] A. P. Mathur. On the relative strengths of data ow and mutation testing. In Ninth
Annual Pacic Northwest Software Quality Conference, pages 165181, Portland,
OR, October 1991.
[41] A. P. Mathur and W. E. Wong. An empirical comparison of data ow and mutation
based test adequacy criteria. The Journal of Software Testing, Verication, and
Reliability, 4(1):931, March 1994.
46
[42] W. E. Wong. On Mutation and Data Flow. PhD thesis, Department of Computer
Science, Purdue University, W. Lafayette, IN, December 1993.
[43] S. R. S. Souza. Avalia cao do custo e ecacia do criterio analise de mutantes na
atividade de teste de programas. Masters thesis, ICMC-USP, Sao Carlos SP,
June 1996.
[44] A. M. R. Vincenzi. Subsdios para o estabelecimento de estrategias de teste baseadas
na tecnica de muta cao. Masters thesis, ICMC-USP, Sao Carlos SP, November
1998.
[45] A. P. Mathur and W. E. Wong. Evaluation of the cost of alternative mutation
strategies. In VII Simposio Brasileiro de Engenharia de Software, pages 320335,
Rio de Janeiro, RJ, Brazil, October 1993.
[46] A. J. Outt, A. Lee, G. Rothermel, R. H. Untch, and C. Zapf. An experimen-
tal determination of sucient mutant operators. ACM Transactions on Software
Engineering Methodology, 5(2):99118, April 1996.
[47] W. E. Wong, A. P. Mathur, and J. C. Maldonado. Mutation versus all-uses: An
empirical evaluation of cost, strength, and eectiveness. In International Conference
on Software Quality and Productivity, pages 258265, Hong Kong, December 1994.
Chapman and Hall.
[48] W. E. Wong, J. C. Maldonado, M. E. Delamaro, and A. P. Mathur. Constrained
mutation in C programs. In 8th Brazilian Symposium on Software Engineering,
pages 439452, Curitiba, PR, Brazil, October 1994.
[49] E. F. Barbosa, J. C. Maldonado, and A. M. R. Vincenzi. Towards the determination
of sucient mutant operators for C. In First International Workshop on Automated
Program Analysis, Testing and Verication, Limerick, Ireland, June 2000. (Edi cao
especial do Software Testing Verication and Reliability Journal, 11(2), 2001).
[50] J. C. Maldonado, E. F. Barbosa, A. M. R. Vincenzi, and M. E. Delamaro. Evaluation
N-selective mutation for C programs: Unit and integration testing. In Mutation 2000
Symposium, pages 2233, San Jose, CA, October 2000. Kluwer Academic Publishers.
[51] A. M. R. Vincenzi, J. C. Maldonado, E. F. Barbosa, and M. E. Delamaro. Unit
and integration testing strategies for C programs using mutation-based criteria. In
Symposium on Mutation Testing, page 45, San Jose, CA, October 2000. Kluwer Aca-
demic Publishers. (Edi cao especial do Software Testing Verication and Reliability
Journal 11(4), 2001).
[52] R. A. Demillo. Mutation analysis as a tool for software quality assurance. In
COMPSAC80, Chicago, IL, October 1980.
[53] R. A. DeMillo, D. S. Gwind, K. N. King, W. N. McKraken, and A. J. Outt.
An extended overview of the mothra testing environment. In Software Testing,
Verication and Analysis, pages 142151, Ban, Canada, July 1988.
[54] M. Luts. Testing tools. IEEE Software, 7(3), May 1990.
47
[55] F. G. Frankl and E. J. Weyuker. Data ow testing tools. In Softfair II, pages 4653,
San Francisco, CA, December 1985.
[56] J. R. Horgan and P. Mathur. Assessing testing tools in research and education.
IEEE Software, 9(3):6169, May 1992.
[57] J. R. Horgan and S. A. London. Data ow coverage and the C language. In Sym-
posium Software Testing, Analysis, and Verication, pages 8797, Victoria, British
Columbia, Canada, October 1991. ACM Press.
[58] B. Korel and J. W. Laski. A tool for data ow oriented program testing. In Softfair
II, pages 3438, San Francisco, CA, December 1985.
[59] T. J. Ostrand and E. J. Weyuker. Data ow based test adequacy for languages with
pointers. In Symposium on Software Testing, Analysis and Verication TAV4,
pages 7486, Victoria, British Columbia, Canada, October 1991. ACM Press.
[60] J. C. Maldonado, M. L. Chaim, and M. Jino. Arquitetura de uma ferramenta de teste
de apoio aos criterios potenciais usos. In XXII Congresso Nacional de Informatica,
Sao Paulo, SP, September 1989.
[61] M. L. Chaim. Poke-tool uma ferramenta para suporte ao teste estrutural de progra-
mas baseado em analise de uxo de dados. Masters thesis, DCA/FEEC/UNICAMP,
Campinas, SP, April 1991.
[62] M. E. Delamaro. Proteum: Um ambiente de teste baseado na an alise de mutantes.
Masters thesis, ICMC/USP, Sao Carlos SP, October 1993.
[63] S. C. P. F. Fabbri, J. C. Maldonado, M. E. Delamaro, and P. C. Masiero. Pro-
teum/FSM uma ferramenta para apoiar a valida cao de maquinas de estado nito
pelo criterio analise de mutantes. In IX Simposio Brasileiro de Engenharia de Soft-
ware, pages 475478, Recife, PE, October 1995.
[64] P. R. S. Vilela, J. C. Maldonado, and M. Jino. Program graph visualization. Software
Practice and Experience, 27(11):12451262, November 1997.
[65] M. E. Delamaro, J. C. Maldonado, A. Pasquini, and A. P. Mathur. Interface muta-
tion test adequacy criterion: An empirical evaluation. To be submitted.
[66] A. M. R. Vincenzi, M. E. Delamaro, A. S. Simao, W. E. Wong, and J. C. Maldonado.
Jaba a Java bytecode analyzer. In XVI SBES Simposio Brasileiro de Engenharia
de Software, pages 414419, Gramado, RS, Brasil, October 2002.
[67] A. M. R. Vincenzi, W. E. Wong, M. E. Delamaro, and J. C. Maldonado. JaBUTi:
A coverage analysis tool for Java programs. In XVII SBES Simposio Brasileiro
de Engenharia de Software, Manaus, AM, Brasil, October 2003. a ser publicado.
[68] R. A Demillo. Software Testing and Evaluation. The Benjamin/Cummings Pub-
lishing Company Inc
1987.
[69] E. J. Weyuker and T. Ostrand. Theory of program testing and the application of
revealing subdomains. IEEE Transactions on Software Engineering, 6, June 1980.
48
[70] U. Linnenkugel and M. M ullerburg. Test data selection criteria for (software) in-
tegration testing. In First International Conference on Systems Integration, pages
709717, Morristown, NJ, April 1990. IEEE Computer Society.
[71] A. M. Price and A. Zorzo. Visualizando o uxo de controle de programas. In IV
Simposio Brasileiro de Engenharia de Software,
Aguas de Sao Pedro, SP, October
1990.
[72] R. A. DeMillo and A. J. Outt. Constraint based automatic test data generation.
IEEE Transactions on Software Engineering, 17(9):900910, September 1991.
[73] E. J. Weyuker, S. N. Weiss, and R. G. Hamlet. Comparison of program testing
strategies. In 4th Symposium on Software Testing, Analysis and Verication, pages
154164, Victoria, British Columbia, Canada, 1991. ACM Press.
[74] R. A. DeMillo, A. P. Mathur, and W. E. Wong. Some critical remarks on a hier-
archy of fault-detecting abilities of test methods. IEEE Transactions on Software
Engineering, 21(10):858860, October 1995.
[75] M. J. Harrold and G. Rothermel. Performing data ow testing on classes. In Second
ACM SIGSOFT Symposium on Foundations of Software Engineering, pages 154
163, New York, NY, December 1994. ACM Press.
[76] Y. K. Malaiya, N. Li, J. Bieman, R. Karcick, and B. Skibe. The relationship between
test coverage and reliability. In International Symposium on Software Reliability
Engineering, pages 186195, Monterey, CA, November 1994.
[77] W. E. Wong and A. P. Mathur. Reducing the cost of mutation testing: An empirical
study. The Journal of Systems and Software, 31(3):185196, December 1995.
[78] W. E. Wong and A. P. Mathur. Fault detection eectiveness of mutation and data
ow testing. Software Quality Journal, 4(1):6983, March 1995.
[79] E. F. Barbosa, A. M. R. Vincenzi, and J. C. Maldonado. Uma contribui cao para
a determina cao de um conjunto essencial de operadores de muta cao no teste de
programas C. In XII Simposio Brasileiro de Engenharia de Software, pages 103
120, Maringa, PR, October 1998.
[80] H. Agrawal, J. Alberi, J. R. Horgan, J. Li, S. London, W. E. Wong, S. Ghosh,
and N. Wilde. Mining system tests to aid software maintenance. IEEE Computer,
31(7):6473, July 1998.
[81] IEEE. IEEE standard glossary of software engineering terminology. Standard
610.12, IEEE Computer Society Press, 1990.
[82] F. G. Frankl. The Use of Data Flow Information for the Selection and Evaluation
of Software Test Data. PhD thesis, Universidade de New York, New York, NY,
October 1987.
[83] S. C. Ntafos. A comparison of some structural testing strategies. IEEE Transactions
on Software Engineering, 14(6):868873, July 1988.
49
[84] M. J. Harrold. Testing: A roadmap. In 22th International Conference on Software
Engineering Future of SE Track, pages 6172, June 2000.
[85] E. J. Weyuker. The complexity of data ow for test data selection. Information
Processing Letters, 19(2):103109, August 1984.
[86] E. J. Weyuker and B. Jeng. Analyzing partition testing strategies. IEEE Transac-
tions on Software Engineering, 17(7):703711, July 1991.
[87] H. Zhu. A formal analysis of the subsume relation between software test adequacy
criteria. IEEE Transactions on Software Engineering, 22(4):248255, April 1996.
[88] E. J. Weyuker. The cost of data ow testing: an empirical study. IEEE Transactions
on Software Engineering, 16(2):121128, February 1990.
[89] M. Jino M. L. Chaim, J. C. Maldonado. Ferramenta para o teste estrutural de
software baseado em analise de uxo de dados: o caso poke-tool. In Workshop
do Projeto de Valida cao e Teste de Sistemas de Opera c ao, pages 2939,
Aguas de
Lindoia SP, January 1997.
[90] M. E. Delamaro, J. C. Maldonado, and A. M. R. Vincenzi. Proteum/IM 2.0: An
integrated mutation testing environment. In Mutation 2000 Symposium, pages 91
101, San Jose, CA, October 2000. Kluwer Academic Publishers.
[91] A. J. Outt and A. Irvine. Testing object-oriented software using the category-
partition method. In 17th International Conference on Technology of Object-
Oriented Languages and Systems, pages 293304, Santa Barbara, CA, August 1995.
Prentice-Hall.
[92] S. Linkman, A. M. R. Vincenzi, and J. Maldonado. An evaluation of systematic
functional testing using mutation testing. In 7th International Conference on Em-
pirical Assessment in Software Engineering EASE, Keele, UK, April 2003. The
IEE.
[93] W. E. Howden. Functional Program Testing and Analysis. McGrall-Hill, New York,
1987.
[94] M. R. Woodward, D. Heddley, and M. A. Hennel. Experience with path analysis
and testing of programs. IEEE Transactions on Software Engineering, 6:278286,
May 1980.
[95] W. E. Howden. Methodology for the generation of program test data. IEEE Com-
puter, C-24(5):554559, May 1975.
[96] S. R. Verglio, J. C. Maldonado, and M. Jino. Uma estrategia para a gera cao de
dados de teste. In VII Simposio Brasileiro de Engenharia de Software, pages 307
319, Rio de Janeiro, RJ, October 1993.
[97] C. Ghezzi and M. Jazayeri. Programming Languages Concepts. John Wiley and
Sons, New York, 2 edition, 1987.
50
[98] A. Haley and S. Zweben. Development and application of a white box approach to
integration testing. The Journal of Systems and Software, 4:309315, 1984.
[99] M. J. Harrold and M. L. Soa. Selecting and using data for integration test. IEEE
Software, 8(2):5865, March 1991.
[100] Z. Jin and A. J. Out. Integration testing based on software couplings. In X Annual
Conference on Computer Assurance (COMPASS 95), pages 1323, Gaithersburg,
Maryland, January 1995.
[101] P. R. S. Vilela. Criterios Potenciais Usos de Integra c ao: Deni c ao e Analise. PhD
thesis, DCA/FEEC/UNICAMP, Campinas, SP, April 1998.
[102] P. G. Frankl and E. J. Weyuker. An applicable family of data ow testing criteria.
IEEE Transactions on Software Engineering, 14(10):14831498, October 1988.
[103] M. J. Harrold and M. L. Soa. Interprocedural data ow testing. In 3rd Testing,
Analysis, and Verication Symposium, pages 158167, Key West, Florida, December
1989. ACM Press.
[104] A. M. R. Vincenzi, M. E. Delamaro, J. C. Maldonado, and W. E. Wong. Java byte-
code static analysis: Deriving structural testing requirements. In 2nd UK Software
Testing Workshop UK-Softest2003, Department of Computer Science, University
of York, York, England, September 2003. University of York Press.
[105] A. M. R. Vincenzi, J. C. Maldonado, M. E. Delamaro, E. S. Spoto, and W. E.
Wong. Component-Based Software Quality: Methods and Techniques, volume 2693
of Lecture Notes in Computer Science, chapter Component-Based Software: An
Overview of Testing, pages 99127. Springer-Verlag, New York, NY, June 2003. (A.
Cechich and M. Piattini and A. Vallecillo ed.).
[106] P. S. J. Leitao. Suporte ao teste estrutural de programas cobol no ambiente poke-
tool. Masters thesis, DCA/FEE/UNICAMP, Campinas, SP, August 1992.
[107] R. P. Fonseca. Suporte ao teste estrutural de programas fortran no ambiente poke-
tool. Masters thesis, DCA/FEE/UNICAMP, Campinas, SP, January 1993.
[108] T. Chusho. Test data selection and quality estimation based on concept of essential
branches for path testing. IEEE Transactions on Software Engineering, 13(5):509
517, 1987.
[109] S. R. Vergilio. Criterios Restritos: Uma Contribui c ao para Aprimorar a Ecacia da
Atividade de Teste de Software. PhD thesis, DCA/FEEC/UNICAMP, Campinas,
SP, July 1997.
[110] A. D. Friedman. Logical Design of Digital Systems. Computer Science Press, 1975.
[111] M. E. Delamaro and J. C. Maldonado. Proteum a tool for the assessment of test
adequacy for C programs. In Conference on Performability in Computing Systems
(PCS96), pages 7995, East Brunswick, NJ, July 1996.
51
[112] H. Agrawal, R. A. DeMillo, R. Hathaway, W. Hsu, W. Hsu, E. W. Krauser, R. J.
Martin, A. P. Mathur, and E. H. Spaord. Design of mutant operators for the
C programming language. Technical Report SERC-TR41-P, Software Engineering
Research Center, Purdue University, West Lafayette, IN, March 1989.
[113] A. T. Acree, T. A. Budd, R. A. DeMillo, R. J. Lipton, and F. G. Sayward. Mu-
tation analysis. Technical Report GIT-ICS-79/08, Georgia Institute of Technology,
Atlanta, GA, September 1979.
[114] T. A. Budd. Mutation Analysis of Program Test Data. PhD thesis, Yale University,
New Haven, CT, 1980.
[115] B. J. Choi, A. P. Mathur, and A. P. Pattison. pmothra: Scheduling mutants for
execution on a hypercube. In 3rd Symposium on Software Testing, Analysis and
Verication, pages 5865, Key West, FL, December 1989.
[116] E. W. Krauser, A. P. Mathur, and V. J. Rego. High performance software testing on
simd machines. IEEE Transactions on Software Engineering, 17(5):403422, May
1991.
[117] A. P. Mathur and E. W. Krauser. Modeling mutation on vector processor. In X
International Conference on Software Engineering, pages 154161, Singapore, April
1988.
[118] B. J. Choi and A. P. Mathur. High-performance mutation testing. The Journal of
Systems and Software, 1(20):135152, February 1993.
[119] A. C. Marshall, D. Hedley, I. J. Riddell, and M. A. Hennell. Static dataow-aided
weak mutation analysis (sdawm). Information and Software Technology, 32(1),
January/February 1990.
[120] M. E. Delamaro, J. C. Maldonado, and A. P. Mathur. Interface mutation: An
approach for integration testing. IEEE Transactions on Software Engineering,
27(3):228247, March 2001.
[121] S. Kim, J. A. Clark, and J. A. Mcdermid. Class mutation: Mutation testing for
object-oriented programs. In FMES, 2000. http://www-users.cs.york.ac.uk/
~jac/ [15-04-2001].
[122] Y.-S. Ma, Y.-R. Kwon, and J. Outt. Inter-class mutation operators for Java. In
13th International Symposium on Software Reliability Engineering - ISSRE2002,
pages 352366, Annapolis, MD, November 2002. IEEE Computer Society Press.
[123] S. C. P. F. Fabbri, J. C. Maldonado, P. C. Masiero, and M. E. Delamaro. Analise de
mutantes baseada em maquinas de estado nito. In XI SBRC Simposio Brasileiro
de Redes de Computadores, pages 407425, Campinas, SP, May 1993.
[124] S. C. P. F. Fabbri, J. C. Maldonado, P. C. Masiero, and M. E. Delamaro. Mu-
tation analysis testing for nite state machines. In 5th International Symposium
on Software Reliability Engineering (ISSRE94), pages 220229, Monterey CA,
November 1994. IEEE Computer Society Press.
52
[125] S. C. P. F. Fabbri, J. C. Maldonado, P. C. Masiero, and M. E. Delamaro. Mutation
analysis applied to validate specications based on petri nets. In FORTE95 8th
IFIP Conference on Formal Descriptions Techniques for Distribute Systems and
Communication Protocols, pages 329337, Montreal, Canada, October 1995. Kluwer
Academic Publishers.
[126] A. S. Simao. Proteum-RS/PN: Uma ferramenta para a valida cao de redes de petri
baseada na analise de mutantes. Masters thesis, ICMC/USP, Sao Carlos, SP, Febru-
ary 2000.
[127] T. Sugeta. Proteum-rs/st : Uma ferramenta para apoiar a valida cao de especi-
ca coes statecharts baseada na analise de mutantes. Masters thesis, ICMC-USP, Sao
Carlos, SP, November 1999.
[128] M. R. Woodward. Mutation testing its origin and evolution. Information and
Software Technology, 35(3):163169, March 1993.
[129] S. P. F. Fabbri and J. C. Maldonado. Proteum/FSM: Uma ferramenta de teste
baseada na analise de mutantes para apoiar a valida cao de especica coes em
maquinas de estado nito. Revista da Asser, November 1996.
[130] A. M. R. Vincenzi, E. F. Barbosa, Vincenzi S. R. S. Souza, M. E. Delamaro, and
J. C. Maldonado. Criterio analise de mutantes: Estado atual e perspectivas. In
Workshop do Projeto de Valida c ao e Teste de Sistemas de Opera c ao, pages 1526,