Table Of ContentOrientac(cid:24)a~o a Objeto: De(cid:12)nic(cid:24)a~o, Implementac(cid:24)a~o e
Ana(cid:19)lise de Recursos de Teste e Validac(cid:24)a~o
Auri Marcelo Rizzo Vincenzi
Tese apresentada ao Instituto de Ci^encias
Matema(cid:19)ticasedeComputac(cid:24)a~o{ICMC-USP,
como parte dos requisitos para obtenc(cid:24)a~o do
t(cid:19)(cid:16)tulo de Doutor em Ci^encias { Ci^encias de
Computac(cid:24)a~o e Matema(cid:19)tica Computacional.
Orientador: Prof. Dr. Jos(cid:19)e Carlos Maldonado
Co-orientador: Prof. Dr. Ma(cid:19)rcio Eduardo Delamaro
USP { Sa~o Carlos
Maio de 2004
Ao Amauri, a(cid:18) Leise e a(cid:18)
Elaine.
i
ii
Agradecimentos
(cid:15) A Deus pela minha vida e pelos dons que me concedeu.
(cid:15) Ao meu orientador e amigo Prof. Dr. Jos(cid:19)e Carlos Maldonado pelo apoio, pela
con(cid:12)anc(cid:24)a em mim depositada, pelas sugesto~es e pelo pro(cid:12)ssionalismo na orientac(cid:24)a~o
desta tese.
(cid:15) Ao meu co-orientador e tamb(cid:19)em amigo Prof. Dr. Ma(cid:19)rcio Eduardo Delamaro pelos
questionamentos sempre pertinentes e pela pronta ajuda em todos os momentos.
(cid:15) To the Department of Computer Science at The University of Texas at Dallas.
Specially to Dr. W. E. Wong who made possible my stay at The University of
Texas at Dallas as a Visiting Scholar and who also contributed to this work.
(cid:18)
(cid:15) A Elaine pela paci^encia, incentivo, compreensa~o, e, principalmente, pelo amor em
todos os momentos dessa nossa jornada.
(cid:18)
(cid:15) A minha fam(cid:19)(cid:16)lia, em especial aos meus pais, Amauri e Leise, e minhas irma~s pelo
constante apoio e con(cid:12)anc(cid:24)a que foram fundamentais para a realizac(cid:24)a~o de meus
sonhos.
(cid:15) A todos os professores do grupo de Engenharia de Software do ICMC, em especial
a(cid:18) Profa. Dra. Rosely Sanches pela recepc(cid:24)a~o e orientac(cid:24)a~o acad^emica em minha
chegada ao ICMC.
(cid:15) Ao Fred pelas orac(cid:24)o~es, amizade, conselhos e incentivo constantes.
(cid:15) Ao Adenilso, amigo de todas as horas e com quem sempre pude contar para discutir
id(cid:19)eiasebuscarsoluc(cid:24)o~es. AosamigosAndr(cid:19)eeRodrigoquetamb(cid:19)emcontribu(cid:19)(cid:16)ramcom
(cid:18)
parte das informac(cid:24)o~es utilizadas nesta tese. A Profa. Dra. Sandra Fabbri sempre
disposta a ajudar no que for preciso e aos demais amigos e amigas do LABES e do
ICMC que tornaram muito mais agrada(cid:19)veis os momentos dentro e fora da USP.
(cid:15) AoscompanheirosdemoradiaemRichardson{Texas, TatianaePaulo, eaosdemais
brasileiros encontrados por la(cid:19) por tornar muito mais amistosa e agrada(cid:19)vel nossa
estadia.
A todos os funciona(cid:19)rios do ICMC, em especial a(cid:18) Ana Paula, Beth, Enza, Mar(cid:19)(cid:16)lia,
Laura e Tatiana pelo apoio acad^emico.
(cid:18)
(cid:15) A FAPESP, CNPq e a The University of Texas at Dallas pelo suporte (cid:12)nanceiro.
iii
iv
Resumo
O DESENVOLVIMENTO desoftwarebaseadonoparadigmaOri-
entado a Objetos (OO) e baseado em componentes (cid:19)e uma reali-
dade. Este trabalho trata de teste e validac(cid:24)a~o dentro desse contexto.
Observa-seque diversostrabalhosrelacionadosao teste de programas
OO v^em sendo desenvolvidos. Apesar de ser um ponto controverso,
alguns pesquisadores consideram que crit(cid:19)erios de teste desenvolvi-
dos para o teste de programas procedimentais podem ser facilmente
estendidos para o teste de programas OO, pelo menos para o teste
de m(cid:19)etodos. Ainda sa~o poucas as iniciativas de estender crit(cid:19)erios
de (cid:13)uxo de dados e crit(cid:19)erios baseados em mutac(cid:24)a~o, tradicionalmente
utilizados no teste de programas procedimentais, para o teste de pro-
gramas OO. O presente trabalho visa a contribuir na identi(cid:12)cac(cid:24)a~o e
de(cid:12)nic(cid:24)a~oderecursosdetesteevalidac(cid:24)a~oquepossamserutilizadosno
testedeprogramasOO,com^enfasenoscrit(cid:19)eriosdetestebaseadosem
(cid:13)uxo de dados e em mutac(cid:24)a~o, cobrindo as fases do teste de unidade
e de integrac(cid:24)a~o. Al(cid:19)em disso, para apoiar a aplicac(cid:24)a~o desses crit(cid:19)erios,
(cid:19)e de fundamental importa^ncia o desenvolvimento de ferramentas au-
tomatizadas que permitam a realizac(cid:24)a~o de estudos comparativos e
a transfer^encia tecnolo(cid:19)gica para a indu(cid:19)stria. Em suma, o presente
trabalho traz contribuic(cid:24)o~es teo(cid:19)ricas, com a de(cid:12)nic(cid:24)a~o de crit(cid:19)erios de
teste; emp(cid:19)(cid:16)rica, com a realizac(cid:24)a~o de estudos emp(cid:19)(cid:16)ricos; e de automa-
tizac(cid:24)a~o, com a de(cid:12)nic(cid:24)a~o e implementac(cid:24)a~o de um ambiente integrado
de teste e validac(cid:24)a~o para programas OO. Exemplos sa~o utilizados
para ilustrar as id(cid:19)eias e ferramentas apresentadas neste trabalho.
v
vi
Abstract
THE developmentofObject-Oriented(OO)andcomponent-based
software is a reality. This work investigates software testing and
validation in this context. Several studies related with OO testing
have been carried out. In spite of being a controversial point, some
researchers state that the procedural testing criteria can be easily ex-
tendedtoOOprogramtesting, forinstancetothetestingofmethods.
There are few initiatives aiming at applying data-(cid:13)ow and mutation-
based criteria, traditionally used for procedural testing, to the test
of OO programs. The present work aims at contributing to identify
and de(cid:12)ne resources for OO program testing and validation, consi-
dering data-(cid:13)ow and mutation based testing criteria, involving the
unit and integration testing phases. An integrated environment for
testing and validation has been developed to support the application
of these criteria. This environment provides means to comparative
studies amongst the criteria and to technology transfer processes.
This work provides contributions to the following testing perspecti-
ves: theoretical { with the de(cid:12)nition of testing criteria; empirical {
with the conduction of empirical studies; and to testing automation
{ with the speci(cid:12)cation and implementation of an integrated envi-
ronment for testing and validation of OO programs. Examples are
provided to illustrate the ideas and tools presented in this work.
vii
viii
Description:of OO programs. The present work aims at contributing to identify and define resources for OO program testing and validation, consi- Por exemplo, o operador “+” nas linguagens C++ e Java pode ser classe ou t˜ao sofisticado como um JavaBean, Enterprise JavaBean (Matena e Stearns,.