ledyvania - dissertacao
TRANSCRIPT
-
7/26/2019 Ledyvania - Dissertacao
1/83
Ledyvnia Franzotte
UTILIZANDO ANLISE DE MUTANTES PARA REALIZAR
O TESTE DE DOCUMENTOSXML SCHEMA
CURITIBA
2006
-
7/26/2019 Ledyvania - Dissertacao
2/83
Ledyvnia Franzotte
UTILIZANDO ANLISE DE MUTANTES PARA REALIZAR
O TESTE DE DOCUMENTOSXML SCHEMA
Dissertao apresentada comorequisito parcial obteno dograu de Mestre. Programa de Ps-Graduao em Informtica, Setorde Cincias Exatas, UniversidadeFederal do Paran.
Orientadora: Profa. Dra. Silvia Regina Verglio
Universidade Federal do Paran
CURITIBA2006
-
7/26/2019 Ledyvania - Dissertacao
3/83
"Comear a parte mais importante de qualquer trabalho."
Plato
-
7/26/2019 Ledyvania - Dissertacao
4/83
Dedico este trabalho aos meus pais, Ledy
Braun Franzotte e Vardenir Franzotte, e ao
meu irmo, Wagner Luizio Franzotte, pelo
apoio e compreenso durante toda esta
caminhada.
-
7/26/2019 Ledyvania - Dissertacao
5/83
Agradeo primeiramente a Deus a
oportunidade de realizar o Mestrado e,
principalmente, a conquista deste ttulo.
Agradeo a minha famlia o apoio que me foi
dado desde o comeo.
Agradeo a minha orientadora Silvia Regina
Verglioa pacincia e o aprendizado adquirido.Agradeo a todos os meus colegas do
mestrado que, com alegria, em diversos
momentos ajudaram a amenizar os momentos
difceis e complicados pelos quais passamos.
E agradeo, em especial, as minhas amigas os
momentos de alegrias e brincadeiras. Regina
de Cssia Nandi, sempre presente, desde oincio, em todos os momentos alegres e tristes
pelos quais passamos, e Francielle Biguelini,
sempre disposta a ajudar e apoiar nos
momentos que precisei. Tambm agradeo ao
meu namorado,Rodrigo Cordeiro dos Santos,
a pacincia e o carinho demonstrado durante o
Mestrado.
-
7/26/2019 Ledyvania - Dissertacao
6/83
i
SUMRIO
RESUMO ______________________________________________________________ iiiABSTRACT ____________________________________________________________ iv
LISTA DE TABELAS _____________________________________________________v
LISTA DE FIGURAS ____________________________________________________ vi
GLOSSRIO ___________________________________________________________vii
1. INTRODUO______________________________________________________1
1.1. Contexto _____________________________________________________________ 1
1.2. Motivao____________________________________________________________ 4
1.3. Objetivos ____________________________________________________________ 4
1.4. Organizao do Trabalho_______________________________________________ 5
2. XML E TECNOLOGIAS______________________________________________6
2.1. DTD (Document Type Definition) ________________________________________ 7
2.2. XML SCHEMA _______________________________________________________ 9
2.3. Biblioteca de manipulao de documentos XML ___________________________ 112.3.1. SAX ____________________________________________________________________ 112.3.2. DOM ___________________________________________________________________ 12
2.4. Consideraes Finais__________________________________________________ 133. TESTE DE SOFTWARE_____________________________________________16
3.1. Trabalhos Relacionados _______________________________________________ 183.1.1. Testes em Componentes Web ________________________________________________ 193.1.2. Teste de Mutao em documentosXML Schema__________________________________ 22
3.2. Consideraes Finais__________________________________________________ 27
4. OPERADORES DE MUTAO PARA DOCUMENTOSXML SCHEMA ___29
4.1. Contexto do Teste ____________________________________________________ 29
4.2. Representao dos operadores__________________________________________ 31
4.3. Operadores de Manipulao de Dados ___________________________________ 31
4.4. Operadores de Manipulao de Estrutura ________________________________ 34
4.5. Consideraes Finais__________________________________________________ 36
5. A FERRAMENTA XTM_____________________________________________37
5.1. Exemplo de utilizao da ferramenta ____________________________________ 38
5.2. Consideraes Finais__________________________________________________ 39
6. EXPERIMENTOS__________________________________________________40
6.1. Experimento 1 _______________________________________________________ 40
6.2. Experimento 2 _______________________________________________________ 46
-
7/26/2019 Ledyvania - Dissertacao
7/83
ii
6.3. Consideraes Finais__________________________________________________ 49
7. CONCLUSO E TRABALHOS FUTUROS ______________________________50
7.1. Trabalhos Futuros____________________________________________________ 51
REFERNCIAS ________________________________________________________53Apndice A Algoritmos da XTM ____________________________________________57
Anexo A Operadores Definidos por Li e Miller ________________________________59
Anexo B Especificaes dos esquemas utilizados nos experimentos _______________64
-
7/26/2019 Ledyvania - Dissertacao
8/83
iii
RESUMO
Diversas aplicaes Web utilizam documentos XML para troca de
informaes, tanto entre componentes de aplicaes distintas quanto entre
componentes da prpria aplicao. Estes documentos, na maioria dos casos,
obedecem a uma gramtica previamente descrita por um esquema.
O tipo de esquema que est se tornando mais utilizado o documento
XML Schema. Este fato deve-se principalmente a algumas de suas
caractersticas, tais como: possuir uma gramtica rica na representao dos
dados e poder ser escrito utilizando-se a linguagem XML que a mesma usada
para escrever documentos.
Estes esquemas so traduzidos de especificaes textuais escritas em
linguagem natural, e consequentemente, usual que neste processo de traduo
aconteam enganos que acabam permitindo que defeitos semnticos estejam
presentes nos documentos XML utilizados pela aplicao.
Este trabalho apresenta um processo de teste para revelar defeitos em
documentosXML Schemabaseado na tcnica Anlise de Mutantes. Operadores
de mutao so propostos tendo-se como base os erros mais comuns cometidos
ao se projetar um documento XML Schema. Para dar suporte aos operadores
propostos, foi implementada uma ferramenta denominada XTM. Com o auxlio
dessa ferramenta alguns experimentos puderam ser realizados. Resultados
desses experimentos mostram a aplicabilidade dos operadores propostos bem
como sua eficcia em revelar defeitos.
-
7/26/2019 Ledyvania - Dissertacao
9/83
iv
ABSTRACT
XML language is largely used by Web-based applications to exchange data
among different components. XML documents, in most cases, follow a previously
grammar or schema that describes which elements and data types are expected
by the application.
XML Schemahas become very popular, due to its characteristics, such as:
rich grammar to represent data; expressed in XML, which is the same format used
in documents.These schema are translated from specifications written in natural
language, and consequently, in this process some mistakes are usually made in
this process, resulting in semantic faults in the XML documents.
This work introduces a testing process to reveal XML Schemafaults based
on Mutation Analysis technique. Mutation operators are proposed considering the
most common mistakes made in the project ofXML Schemas. A tool, named XTM,
to support the proposed operators was implemented. By using this tool someexperiments were accomplished. Results from these experiments show the
applicability of the operators, as well as, their efficacy to reveal faults.
-
7/26/2019 Ledyvania - Dissertacao
10/83
v
LISTA DE TABELAS
Tabela 2-1: Contedos Permitidos em um Documento DTD.......................................8
Tabela 2-2: Principais Diferenas entre DOM e JDOM ..............................................14
Tabela 3-1: Exemplo do Operador LenOf.....................................................................19
Tabela 3-2: Exemplo do Operador MemberOf.............................................................20
Tabela 3-3: Descrio dos Operadores Definidos por Xu et al [XU05] ....................22
Tabela 3-4: Lista de Operadores Definidos por Li e Miller.........................................25
Tabela 3-5: Continuao da Lista de Operadores Definidos por Li e Miller............26
Tabela 6-1: Mutantes Gerados por Operador de Mutao ........................................42
Tabela 6-2: Esquemas Mutantes No Vlidos pelo Nmero de Mutantes Vlidos
W3C.............................................................................................................................43
Tabela 6-3: Esquemas Mutantes No Vlidos pelo Nmero de Mutantes Vlidos
XMLSpy ......................................................................................................................44
Tabela 6-4: Esquemas Mutantes No Vlidos pelo Nmero de Mutantes Vlidos
Stylus Studio ..............................................................................................................44
Tabela 6-5: Porcentagem Mdia Total de Mutantes Validados.................................45
Tabela 6-6: Resultados Obtidos no Experimento 2 .....................................................47
-
7/26/2019 Ledyvania - Dissertacao
11/83
vi
LISTA DE FIGURAS
Figura 2-1: Exemplo de um documento XML .................................................................6
Figura 2-2: Representao Hierrquica de um Documento XML ...............................7
Figura 2-3: Exemplo de um Documento DTD ................................................................8
Figura 2-4: Exemplo de um DocumentoXML Schema.................................................9
Figura 2-5: Hierarquia de Classes do DOM [DOM05].................................................12
Figura 3-1: Operadores Primitivos.................................................................................23
Figura 3-2: Operadores No-Primitivos .........................................................................23
Figura 4-1: Processo Proposto .......................................................................................30
Figura 4-2: Exemplo de um XML Schema ...................................................................34
Figura 4-3: Exemplo do Operador SubTree_Exchange.............................................35
Figura 4-4: Exemplo do Operador Insert_Tree ............................................................35
Figura 4-5: Exemplo do Operador Delete_Tree ...........................................................36
Figura 5-1: Ferramenta XTM...........................................................................................37
Figura 5-2: Exemplo do Funcionamento da Ferramenta XTM Operadores de
Dados ..........................................................................................................................39
-
7/26/2019 Ledyvania - Dissertacao
12/83
vii
GLOSSRIO
Sigla Definio
AOC Attribute Occurence Change
API Applications Programming Interface
CCR Complex Type Compositors Replacement
COC Complex Type Order Change
CSP Change Singular Plural
DOM Document Object Model
DT Data Type
DTC Derived Type Control Replacement
DTD Document Type Definition
EBNF Extended Backus Naur Form
EEC Enumeration Element Change
ENM Element Namespace Removal
ENR Element Namespace Replacement
EOC Element Occurence Change
GO Group Order
HTML HyperText Markup Language
IT Insert_Tree
JDOM Java DOM
NCC Number Constraint Change
QGR Qualification Globally Replacement
QIR Qualification Individually Replacement
RAR Restriction Arguments Replacement
REQ Required
RPC Remote Procedure Call
RT Remove_Tree
RTG Regular Tree Grammar
SAX Simple API for XML
-
7/26/2019 Ledyvania - Dissertacao
13/83
viii
SLC String Lenght Change
SNC XML SchemaNamespace Changes
SO Size Occurence
SPC SimpleType Pattern Change
SQC Schema Quality Checker
SQL Structured Query Language
STE SubTree_Exchange
TDE Target and Default Exchange
UCR Use of Controller Replacement
W3C World Wide WebConsortium
XML eXtensive Markup Language
XQUERY XML Query Language
XSV XML SchemaValidador
XTM Ferramenta para Teste de DocumentosXML
SchemaBaseado em Teste de Mutao
-
7/26/2019 Ledyvania - Dissertacao
14/83
1
1. INTRODUO
1.1. Contexto
XML (eXtensible Markup Language) [XML05] uma linguagem de
marcao para contedo. um padro utilizado pelos documentos usados na
troca de informaes entre diversos tipos de aplicaes, como por exemplo,
aplicaes Web.Estes documentos, na maioria dos casos, obedecem a uma sintaxe
previamente definida por algum esquema. Os esquemas referem-se a metadados
para validao e especificao de elementos que os documentos XML podem
conter. As linguagens de definies de esquemas mais utilizadas so: DTD (Data
Type Definition) [DTD05] eXML Schema[XMLS05].
Atualmente a linguagem XML Schema est sendo mais utilizado que a
DTD, pois ela expressa em XML, o mesmo formato dos documentos usados
pelas aplicaes. Como o desenvolvedor j est familiarizado com a linguagem
XML, o documento XML Schema acaba tornando-se mais fcil de ser escrito e
compreendido por no necessitar de aprendizado de uma outra linguagem. Este
um dos fatores que influenciam no crescente uso doXML Schema.
Os esquemas so utilizados apenas para validar a sintaxe do documento
XML, ou seja, qualquer elemento existente no documento XML tem que estar
especificado no esquema, caso contrrio o documento no ser considerado
vlido.
Os documentos devem ser bem-formados e vlidos. A verificao da
formatao um passo executado sem o conhecimento de um esquema. A
ferramenta mais comum o disponibilizado no prprio site da W3C [XSV05], mas
podem tambm ser usadas outras ferramentas tais como XMLSpy [SPY05],
Stylus Studio[STY05] dentre outras disponveis no mercado.
A validao, contudo, s obtida usando-se esquemas, pois so eles que
definem a gramtica a qual o documento XML deve obedecer. de
-
7/26/2019 Ledyvania - Dissertacao
15/83
2
responsabilidade do desenvolvedor definir o que est sendo especificado. Devido
a isso, diversos tipos de erros de sintaxe podem acontecer, como por exemplo, o
nome de uma tagestar escrito de maneira incorreta, o tipo de um contedo mal
definido, dentre outros. Estes erros refletem em problemas semnticos nos
documentos XML que so utilizados na troca de mensagens. Se os esquemas
contiverem erros, a validao dos documentos XML fica prejudicada. Ou seja, se
for utilizado um documento XML incorreto, criado baseado em um esquema com
defeitos, diversas falhas nas aplicaes envolvidas podero ocorrer. Por isso,
para assegurar a qualidade das aplicaes Web,o teste dos esquemas de acordo
com a sua especificao fundamental.
A atividade de teste visa revelar defeitos nas aplicaes. Para isto, necessrio planejar, projetar, executar e avaliar os resultados obtidos na etapa de
testes. Diversas tcnicas podem ser utilizadas para tentar identificar o maior
nmero possvel de erros. A cada tcnica esto associados diversos critrios a
serem satisfeitos.
As principais tcnicas utilizadas so [PRE05]: funcional, que deriva dados
de teste considerando aspectos funcionais do software; estrutural, que deriva
dados de teste baseados em fluxo de controle e de dados; e a tcnica baseadaem defeitos, que tem como objetivo mostrar que certos tipos de defeitos esto
presentes no programa em teste. O critrio Anlise de Mutantes, que um critrio
baseado em defeitos [DEM78], tem se mostrado um dos mais eficazes para
revelar defeitos [WON94].
Este critrio baseado em dois pressupostos [DEM78]: na hiptese do
programador competente, que diz que os programadores desenvolvem programas
prximos do correto e, no efeito do acoplamento, ou seja, defeitos complexos sorevelados revelando-se defeitos simples.
A idia deste critrio inserir pequenas modificaes no programa em
teste. Cada programa modificado denominado mutante. Dados de teste so
executados com o propsito de que todos os mutantes criados sejam mortos, ou
seja, deve-se executar o programa mutante com um dado de teste de tal forma
que sua sada seja diferente da sada do programa original para aquele dado. Os
que no forem mortos so considerados vivos e caso no exista um caso de teste
-
7/26/2019 Ledyvania - Dissertacao
16/83
3
que diferencie o comportamento do programa mutante do comportamento do
programa original este dito mutante equivalente.
Diversos trabalhos de pesquisa tm focalizado o teste de aplicaes Web
[KUN00, LIU00a, LIU00b, OFF02, WU04, LEE01, OFF04, XU05, LI05, EME05].
Dentre esses, os cinco ltimos focalizam tcnicas baseadas em defeito.
Em [LEE01], Lee e Offutt introduzem a idia de mutao de interao
introduzindo operadores para modificar documentos XML. Os documentos XML
modificados so usados como casos de teste para testar interaes entre
componentes Web. Extenses desse trabalho resultaram em uma abordagem
baseada em perturbao de dados para o teste de Web Services [OFF04].
Mensagens XML e SOAP so modificadas por operadores e utilizados comocasos de teste. Com esse mesmo objetivo Xu et al [XU05] introduziram
operadores de mutao para os esquemas. Os esquemas modificados so
utilizados para gerar documentos XML mutantes vlidos e invlidos no teste de
Web Services.
So poucos os trabalhos que tm o objetivo de validar documentos XML
Schema [LI05, EME05]. Em [LI05], Li e Miller introduzem alguns operadores de
mutao para documentos XML Schema. Estes operadores descrevem algunsdefeitos cometidos ao se projetar esquemas. Entretanto, muitos deles geram
esquemas que no so considerados vlidos, facilmente descobertos na
validao dos esquemas. Os autores tambm no introduziram um processo que
realmente aplique o critrio anlise de mutantes, ou seja, no abordam algumas
questes tais como diferenciar o comportamento do programa original e do
mutante.
Emer et al [EME05] descrevem uma abordagem cujo objetivo tambmtestar esquemas. Utilizando classes de defeito em esquemas, documentos XML
mutantes so gerados e consultas a esses documentos so executadas. Os
resultados dessas consultas so ento analisados para se identificar defeitos nos
esquemas.
As idias apresentadas nos trabalhos descritos anteriormente so bastante
promissoras, entretanto, os trabalhos no aplicam efetivamente o critrio Anlise
de Mutantes. Xu et al [XU05] no tm o objetivo de testar os esquemas, Emer et
al [EME05] no gerou esquemas mutantes, Li e Miller [LI05], apesar de gerarem
-
7/26/2019 Ledyvania - Dissertacao
17/83
4
mutantes, no definiram um processo que permita a utilizao dos mesmos no
teste de esquemas. Tambm no abordam algumas questes, tais como: Como
diferenciar o comportamento dos esquemas mutantes e original? Que casos de
teste utilizar?
1.2. Motivao
Dado o contexto acima, tm-se as seguintes questes como motivao
para o presente trabalho:
1. teste de software uma atividade fundamental para assegurar a qualidade do
software e a aplicao de tcnicas sistemticas pode diminuir o custo dessa
atividade;
2. O critrio Anlise de Mutantes tem se mostrado um dos mais eficazes em
revelar defeitos;
3. Importncia de realizar o teste de esquemas no contexto de teste de
aplicaes Web;
4. Documentos XML Schema tm sido cada vez mais utilizados, entretanto atraduo de uma especificao para um documento XML Schema pode ser
feita incorretamente;
5. Documentos XML Schema bem formados e vlidos podem conter defeitos
com relao a sua especificao. Esses defeitos no so detectados por
validadores;
6. Tcnicas baseadas em defeito tm sido estudadas e aplicadas com sucesso
no teste de aplicaes Web, WebServices e esquemas. Entretanto, o critrioAnlise de Mutantes no foi efetivamente aplicado, nem foi definido um
processo adaptado ao contexto deXML Schema;
7. A aplicao prtica e a avaliao do critrio Anlise de Mutantes s so
possveis se uma ferramenta estiver disponvel.
1.3. Objetivos
-
7/26/2019 Ledyvania - Dissertacao
18/83
5
Este trabalho tem como objetivo explorar o uso do critrio Anlise de
Mutantes no teste de documentos XML Schema. Para que esse critrio seja
utilizado foi introduzido um conjunto de operadores de mutao baseado nos
trabalhos de [LEE01, LI05, XU05, EME05] que descrevem os principais defeitos
em esquemas. Foi tambm introduzido um processo de aplicao do critrio. Para
diferenciar os mutantes do esquema original em teste, documentos XML so
gerados e utilizados como dados de testes.
Para dar suporte a esses operadores e a esse processo, uma ferramenta,
denominada XTM (Ferramenta para Teste de Documentos XML Schema
Baseado em Teste de Mutao) foi implementada. Com o auxlio dessa
ferramenta, experimentos foram conduzidos para avaliar a proposta introduzida.
1.4. Organizao do Trabalho
Este trabalho est subdividido em sete captulos. No Captulo 2
apresentada uma breve introduo da linguagem XML, de esquemas e de
diferentes tecnologias relacionadas. No Captulo 3 so apresentados os principaisconceitos sobre teste de software e os trabalhos relacionados.
No Captulo 4 operadores de mutaes para os documentos XML Schema
so introduzidos. Estes operadores visam a descrever os diferentes tipos de
defeitos que podem estar presentes nos esquemas. O Captulo 5 descreve a
ferramenta XTM.
No Captulo 6 so apresentados resultados de experimentos realizados
para avaliar os operadores propostos e a implementao da ferramenta. OCaptulo 7 contm as concluses e os trabalhos futuros para a continuao deste
estudo.
O trabalho contm um apndice e dois anexos. O Apndice A contm os
principais algoritmos utilizados na implementao da XTM. O Anexo A contm a
relao dos operadores propostos em [LI05] e o Anexo B contm as
especificaes dos esquemas utilizados nos experimentos realizados.
-
7/26/2019 Ledyvania - Dissertacao
19/83
6
2. XML E TECNOLOGIAS
XML (eXtensible Markup Language) [XML05] uma linguagem de
marcao para contedo que, diferentemente do HTML [HTML99] no apresenta
nenhum elemento de apresentao inerente ou embutido [TIT03]. Um documento
XML composto por uma lista de elementos de dados que possuem marcas
(tags) de abertura e fechamento, e entre essas tags est contido o contedo o
qual elas intuitivamente descrevem.
Sua estrutura lgica definida atravs de uma hierarquia, assim como uma
rvore, facilitando desta maneira sua manipulao. O documento composto de
partes que podem ser elementos individuais, comentrios, atributos, instrues de
processamento dentre outros. a representao mais adequada para
processamento e troca de dados [MAR01].
Um arquivo XML dito bem-formado quando todas as marcaes abertas
foram devidamente fechadas e o aninhamento das tags est correto, como
ilustrado pelo documento da Figura 2-1.
Figura 2-1: Exemplo de um documento XML
Uma vez estando o arquivo bem-formado possvel que o mesmo seja
representado como uma estrutura hierrquica (rvore) conforme demonstra a
Figura 2-2.
-
7/26/2019 Ledyvania - Dissertacao
20/83
7
Figura 2-2: Representao Hierrquica de um Documento XML
Em um documento XML possvel codificar o contedo, a semntica e as
esquematizaes para uma grande variedade de aplicaes desde simples at as
mais complexas.
Como a sua estrutura semelhante a uma rvore, este composto de um
n chamado raiz e diversos outros ns internos denominados elementos. Para
descrever o contedo do documento utiliza-se as tags de marcao .
Um documento XML dito vlido segue a estrutura lgica definida por um
arquivo de validao chamado de esquema. Este pode ser por exemplo, uma
DTD (Document Type Definition) [DTD05], ou um tipo de documento semelhante
ao documento XML chamado deXML Schema, dentre outros.
2.1. DTD (Document Type Definition)
A DTD utilizada para definio de tipos de elementos de um documento
XML possibilitando que sua sintaxe seja vlida, pois qualquer elemento que no
esteja especificado na DTD ou que no esteja conforme especificado torna o
documento XML invlido [MAR01].
A DTD usa uma gramtica oficial, a EBNF (Extended Backus Naur Form)
para especificar a estrutura e valores que so permitidos em um documento XML
[MAR01].
-
7/26/2019 Ledyvania - Dissertacao
21/83
8
A Tabela 2-1 descreve os tipos de elementos que podem estar contidos nos
documentos DTD. Os dois primeiros tipos so elementos que espera-se encontrar
em documentos XML, e os demais so opcionais.
A DTD define todos os elementos que esto presentes em um documento
XML [TIT03]. A Figura 2-3 apresenta um exemplo de uma DTD. Este exemplo
valida o documento XML mostrado Figura 2-1, ou seja, nele esto presentes
todos os elementos e seus respectivos tipos permitidos no documento XML.
Tabela 2-1: Contedos Permitidos em um Documento DTD
Elementos Significados
ELEMENT Declarao de um tipo elemento XML
ATTLIST
Declaraes dos atributos que podem ser designados
a um tipo de elemento especifico e os valores
permitidos
ENTITY Declarao de contedo reutilizvel
NOTATIONDeclarao do formato para contedo que no deve
ser analisado em termos de sintaxe
Figura 2-3: Exemplo de um Documento DTD
Os documentos DTD apresentam alguns problemas tais como [MAR01]: o
entendimento e a escrita no so to intuitivos, pois usam uma sintaxe diferente
da linguagem XML (EBNF), no possvel a utilizao do DOM (Seo 2.3.2)
para sua leitura; no fornecem suporte para espaos identificadores
(namespaces), e todas as definies precisam estar contidas na DTD criada no
sendo possvel pegar emprestado de outras DTD.
-
7/26/2019 Ledyvania - Dissertacao
22/83
9
Devido a esta e outras caractersticas mencionadas anteriormente que o
XML Schema, descrito a seguir, quando comparado DTD, mostra-se mais rico
na representao das informaes, pois possui uma sintaxe semelhante com a
dos documentos XML.
2.2. XML SCHEMA
A origem do XML Schema est relacionada s limitaes da DTD. Sua
idia geral descrever (e restringir) um conjunto de instncias de documentos
XML e ser por si s um documento XML. Possui os tipos de dados primitivos
como cadeias, nmeros, booleanos e datas e, mecanismos para definir novos
tipos de dados ao combinar ou restringir tipos existentes ou simplesmente ao
enumerar os valores no tipo de dados [MAR01]. O exemplo da Figura 2-4
descreve um documento XML Schemae, assim como a DTD, tambm possui a
descrio de todos os elementos e respectivos tipos permitidos no documento
XML.
Figura 2-4: Exemplo de um DocumentoXML Schema
-
7/26/2019 Ledyvania - Dissertacao
23/83
10
EsteXML Schemadescreve a estrutura fsica (sintaxe) do documento XML
apresentado como exemplo Figura 2-1. Nele definido os elementos e atributos
que podero aparecer em um documento, quais elementos tero elementos filhos,
qual sua ordem e o nmero de elementos filhos. Tambm define se um elemento
vazio ou possui texto, os tipos de dados para elementos e atributos e define
padres e fixa valores para elementos e atributos.
Os documentos XML Schema aperfeioam as DTD por permitirem mais
preciso na expresso de alguns conceitos no vocabulrio e possurem uma
estrutura mais rica na descrio da informao [MAR01]. Devido a estas
caractersticas que o uso de XML Schema para validao da estrutura lgica
est se tornando cada vez mais freqente nas aplicaes que utilizam XML.Em um XML Schemapodem-se criar novos tipos de dados os quais so
divididos em duas categorias: tipo de dados simples e tipo de dados complexo.
tipo de dados simples so os elementos que possuem apenas texto, como por
exemplo integer, string, date, entre outros. Este tipo restringe o texto que pode
aparecer no valor de um atributo ou no contedo de um elemento textual.
tipo de dados complexos so os elementos que podem conter outros
elementos ou atributos. Este tipo restringe o contedo de um elementorelativamente aos atributos e elementos filho que pode ter.
Devido a todas as caractersticas apresentadas, um XML esquema possui
vrias vantagens em relao a um DTD:
utiliza sintaxe XML: ou seja, um XML Schema um documento XML. Isso
significa que ele pode ser processado como qualquer outro XML, com as
mesmas ferramentas;
permite a definio de tipo de dado: podem-se definir elementos com tipointeger, date, time, string, entre outros;
extensvel: alm dos tipos de dados definidos pela especificao do XML
Schema, possvel criar novos, inclusive derivados de tipos de dados j
definidos;
possui um poder de expresso maior; por exemplo, elementos podem ser
validados atravs de expresses regulares, ou seja, definio de padres para
determinados campos; prov integrao com namespacesXML;
-
7/26/2019 Ledyvania - Dissertacao
24/83
11
prov herana;
o documentoXML Schemapossui facilidade de documentao por meio dos
elementos xsd:annotation e xsd:documentation que so especficos para
documentao;
2.3. Biblioteca de manipulao de documentos XML
Uma vez definidos os arquivos XML, suas estruturas e as aplicaes que
as utilizaro, necessria uma API (Application Programming Interface) para
manipulao destes arquivos. As APIs que podem ser geralmente utilizadas so:
SAX, DOM e JDOM (extenso da API DOM para aplicaes JAVA) e qualquer
uma delas tem a mesma finalidade: manipular as rvores do documento XML
2.3.1. SAX
A interface SAX (Simple API for XML) [SAX05] permite que sejam lidos
dados contidos em um documento XML sem que este seja todo carregado para a
memria. uma API baseada em eventos, pois, o analisador l o documento e
diz ao programa a respeito dos smbolos que ele encontra [MAR01]. Ela oferece
mtodos que respondem a eventos produzidos durante a leitura do documento
notificando quando um elemento abre, quando fecha, dentre outros.
A utilizao desta API apresenta algumas vantagens, dentre elas: permite
que sejam utilizados arquivos de grande tamanho (por haver pouco consumo de
memria) e possibilita a criao da estrutura de dados; simples de ser usada e a
informao que se busca rapidamente obtida. Ela ideal para aplicaessimples que no precisam manipular toda a rvore de objetos.
Assim como qualquer outra API, a SAX tambm possui algumas
desvantagens, dentre as quais citamos [MAR01]: no h acesso aleatrio ao
documento, pois deve-se lidar com os dados medida que estes so lidos, no
possui uma DTD para validao, informaes lxicas no esto disponveis tais
como, comentrios, ordem dos atributos e caracteres de nova linha. Outra
desvantagem apresentada que ela no permite modificao no arquivo XML,
-
7/26/2019 Ledyvania - Dissertacao
25/83
12
tornando este um arquivo apenas para leitura alm de no servir para validar
referncias cruzadas.
2.3.2. DOM
A interface DOM (Document Object Model) [DOM05] assim como a API
SAX permite que os dados de documentos XML sejam lidos. Todo o arquivo
quebrado em elementos individuais e carregado para a memria criando-se uma
representao do arquivo como uma rvore.
A API DOM uma recomendao definida pela W3C que contm a
especificao para a interface que pode acessar qualquer documento estruturado
XML e descreve como as cadeias de caracteres devem ser manipuladas e define
os objetos, mtodos e propriedades que a compem [DOM05].Esta API oferece um conjunto robusto de interfaces para facilitar a
manipulao da rvore e dos ns, conforme mostra a Figura 2-5.
Figura 2-5: Hierarquia de Classes do DOM [DOM05]
Os mtodos disponibilizados para o acesso s informaes do documento
servem para insero/remoo/troca de ns, adicionar novos ns no final da
rvore (inserir como sendo o ltimo elemento), alm de oferecer um mtodo para
consultar se um determinado n possui ns filhos.
Assim como mtodos, a API tambm disponibiliza propriedades parareferenciar os ns da estrutura.
-
7/26/2019 Ledyvania - Dissertacao
26/83
13
Diferente da API SAX, a DOM permite que os arquivos XML sejam
alterados, permite a utilizao de esquemas para validar a gramtica (DTD e XML
Schema), garante a boa formatao e simplifica a manipulao interna dos
documentos, pois os elementos esto dispostos como elementos de uma rvore
na memria, assim como est representado na Figura 2-2.
1.1.1.1 JDOM
A interface JDOM (Java DOM) [JDOM05] uma extenso da API DOM.
uma API escrita em Java puro e open source. Foi criada para resolver alguns
inconvenientes da API DOM, como, por exemplo, s possuir um nico tipo de
exceo, no possuir mtodos tpicos de classes Java como equals(), hashcode(),clone(), tostring(), alm de ser uma API mais intuitiva para os desenvolvedores
JAVA do que o DOM [CLA04].
Por ser uma extenso da API DOM, tambm est baseada na estrutura de
rvores e permite oparsing, criao, manipulao e serializao dos documentos
XML. A Tabela 2-2 apresenta as principais diferenas entre os elementos usados
pelas API DOM e JDOM [CLA04].
2.4. Consideraes Finais
Este captulo apresentou a tecnologia XML, as principais linguagens de
definio de esquemas utilizadas para a validao de documentos XML, bem
como as principais bibliotecas de manipulao para esses documentos. Dentre os
esquemas estudados, definiu-se utilizar neste trabalho a linguagem XML Schemapois, realizando uma comparao entre DTD e XML Schema, possvel
diferenci-los em vrios pontos.
Apesar da DTD ser mais simples para se trabalhar, possui a grande
desvantagem de no ser XML, dificultando assim o seu uso, uma vez que o
usurio precisa conhecer uma segunda ferramenta para realizar o trabalho. Por
outro lado, o XML Schema, apesar de ser mais complexo, conhecendo-se a
linguagem XML, possvel facilmente escrev-lo para a definio de outrosdocumentos XML.
-
7/26/2019 Ledyvania - Dissertacao
27/83
14
Outra diferena, e vantagem do XML Schema em relao DTD, que
permite a utilizao de namespaces, ou seja, espaos identificadores que
determinam o contexto dos tipos de elementos e nomes de atributos usados nos
documentos XML. E por ltimo pode-se destacar a flexibilidade doXML Schema,
pois este alm dos tipos de dados j existentes permite a criao de novos tipos.
Por causa desses aspectos, e das demais caractersticas descritas na Seo 2.3,
o foco desse trabalho ser em documentosXML Schema.
Tabela 2-2: Principais Diferenas entre DOM e JDOM
DOM JDOM Significado
Attr Attribute AtributoCDATASection CharacterData Tipo que descreve uma seqncia de
caracteres
Comment Comment Comentrios
Document Document Documento XML
DocumentType DocType Documento DTD
DocumentFragment -- Parte do documento
DOMImplementation -- Objeto que fornece acesso aos mtodos
Element Element Elemento N
Entity Entity Contedo reutilizvel
EntityReference -- Referncia ao contedo
NamedNodeMap -- Coleo de objetos Node
Node -- N
NodeList -- Lista de Ns
Notation -- Declarao do formato para contedo que no
deve ser analisado em termos de sintaxe
ProcessingInstruction ProcessingInstruction Instrues de Processamento
Text java.lang.String Tipo String
-- Verifier
DOMException JDOMException,
IllegalAddException,
IllegalDataException,
IllegalNameException.,
IllegalTargetException
Tipos de excees
-
7/26/2019 Ledyvania - Dissertacao
28/83
15
Para implementar a ferramenta XTM descrita no Captulo 5, foi utilizada a
biblioteca JDOM para a manipulao dos documentos XML e XML Schemapois,
alm de ser uma extenso do DOM e possuir todas as caractersticas desta API,
uma biblioteca especfica para a linguagem JAVA, a qual foi escolhida para o
desenvolvimento da ferramenta. Alm disso, JDOM possibilita parsing dos
esquemas mutantes gerados o que facilitou a implementao da XTM pois,
necessrio que os mutantes sejam documentos vlidos e bem-formados e esta
verificao feita pela prpria API atravs de alguns mtodos de manipulao
existentes.
-
7/26/2019 Ledyvania - Dissertacao
29/83
16
3. TESTE DE SOFTWARE
A atividade de teste de software um elemento crtico da garantia de
qualidade de software e representa a ltima reviso de especificao, projeto e
codificao [PRE05].
O principal objetivo do teste encontrar erros. Para um programa em teste,
so gerados diversos casos de testes que so compostos de dados de entrada
mais sada esperada. Um caso de teste bem sucedido aquele que consegue
revelar um defeito ainda no descoberto [MYE79].
Um processo de teste envolve planejar, projetar, executar casos de teste e
avaliar os resultados obtidos. A etapa de elaborao (projeto) de casos de testes
uma das mais difceis de realizar pois dela depende a qualidade dos dados
gerados. Nesta etapa escolhe-se a tcnica de teste a ser utilizada.
Depois de escolhida uma tcnica, devem-se considerar os critrios a serem
aplicados. Um critrio de teste estabelece requisitos a serem satisfeitos pelos
casos de teste e pode auxiliar na seleo de dados e na avaliao de sua
qualidade. Satisfazer um critrio significa atender aos requisitos estabelecidos por
ele [RAP85].
Para o projeto de casos de testes utilizam-se trs tcnicas principais, cada
uma com critrios de teste associados:
Baseada em Defeitos: os dados de teste so gerados considerando os
principais defeitos mais cometidos pelos desenvolvedores. Por exemplo, o
critrio Anlise de Mutantes [DEM78];
Funcional: os dados de teste so gerados considerando os requisitos
funcionais do sistema. Por exemplo, os critrios Anlise do Valor Limite,
Grafo de Causa Efeito [PRE05];
Estrutural: Os dados de teste so gerados considerando a estrutura interna
do programa em teste. Por exemplo, critrios baseados em fluxo de
controle [PRE95, RAP82] e fluxo de dados [MAL91, RAP82];
-
7/26/2019 Ledyvania - Dissertacao
30/83
17
A medida do porcentual dos elementos requeridos (elementos que devem
ser exercitados) que foram efetivamente exercitados em relao ao nmero total
de elementos requeridos, representa a cobertura atingida pelo critrio [RAP82].
A escolha de um critrio depende: a) do custo para sua execuo, que
avalia o nmero de casos de teste que ser necessrio criar para satisfaz-lo; b)
a eficcia do critrio, ou seja, a capacidade de revelar um nmero maior de
defeitos; e, c) a dificuldade de satisfao, que indica a probabilidade de satisfazer
um critrio tendo satisfeito outro. Estudos da literatura tm mostrado que o critrio
anlise de mutantes o mais eficaz em revelar defeitos, porm o mais custoso
[WON94].
O critrio anlise de mutantes foi introduzido por DeMillo [DEM78]. AAnlise de Mutantes tem por finalidade introduzir pequenos defeitos em um
programa em teste atravs de operadores de mutao e gerar novos programas
chamados de mutantes. Ela baseia-se em dois pressupostos [DEM78]:
Hiptese do programador competente: os programadores fazem programas
bem prximo do correto;
Efeito de acoplamento: um defeito complexo revelado, revelando-se
defeitos simples.Pequenas modificaes so introduzidas no programa atravs da aplicao
de operadores de mutao (operadores que modificam alguma parte do cdigo)
que geram novos programas chamados mutantes. So utilizados casos de testes
na execuo destes mutantes para distingui-los do programa original.
Um mutante dito morto quando um caso de teste conseguir fazer a
distino entre o programa mutante e o programa original gerando sadas
diferentes. Se a sada do programa original for considerada correta, ento esteestar livre do possvel defeito descrito pelo programa mutante. Caso contrrio,
um defeito descoberto e o programa dever ser corrigido. O critrio Anlise de
Mutantes exige que todos os mutantes sejam mortos [DEM78].
Os casos de teste que matam os mutantes so classificados como
eficientes. Caso aps a execuo de todos os casos de testes, ainda existam
mutantes que gerem a mesma sada do programa original e se no for possvel
gerar um caso de teste cuja sada diferencie o programa original do programa
mutante, os mutantes so considerados equivalentes ao programa original. A
-
7/26/2019 Ledyvania - Dissertacao
31/83
18
determinao de um mutante equivalente sempre realizada pelo usurio, pois
determinar se dois programas computam a mesma funo uma questo
indecidvel [BUD81].
Um grau de cobertura definido para o programa, ou seja, o score de
mutao (S) para o conjunto de casos de testes (T) utilizados. Este score
definido como:
S (T) = Mm / (Mg Me), onde:
Mm o nmero de mutantes mortos;
Mg o nmero de mutantes gerados
Me o nmero de mutantes equivalentes
O score de mutao permite avaliar a adequao dos casos de testes
usados e, como conseqncia, a confiana no programa testado, pois o scorede
mutao relaciona o nmero de mutantes mortos com o nmero de mutantes
gerados no equivalentes. O score de mutao varia no intervalo entre 0 e 1
sendo que quanto maior o scoremais adequado o conjunto de casos de teste
para o programa que est sendo testado [DEM78]Atualmente existem ferramentas para gerao de mutantes tais como a
Proteum [13] que utilizada para gerao de mutantes em teste de programas
desenvolvidos na linguagem C.
3.1. Trabalhos Relacionados
A utilizao do teste baseado em defeitos e do teste de mutantes para a
tecnologia XML tem sido alvo de pesquisas. Foram encontrados na literatura
alguns artigos relacionados ao tema e que sero apresentados nas prximas
sees. Estes trabalhos foram divididoss entre: testes em componentes Web e
testes em documentosXML Schema.
-
7/26/2019 Ledyvania - Dissertacao
32/83
19
3.1.1. Testes em Componentes Web
Lee e Offutt [LEE01] propuseram a utilizao do teste de mutao para
aplicaes Web. Baseado nos documentos XML que a aplicao possui so
propostos dois operadores de mutao para a gerao de documentos XML
mutantes. Os documentos mutantes so utilizados como casos de teste na
interao entre componentes Web(mutao de interaes).
Os operadores so:
LenOf: altera o nmero de caracteres do contedo de um determinado
elemento.
MemberOf: Tendo-se T e T dois documentos XML, os dados do
documento T devem existir no documento T, ou seja, estas informaes
devem fazer parte de T.
Os operadores criados por Lee e Offutt apenas alteram os contedos
contidos nas tagsdos documentos XML pois, como mencionado anteriormente,
s possvel uma alterao dos contedos dos documentos e no na sintaxe do
mesmo.
O operador LenOf altera o tamanho do contedo acrescentando ouremovendo algum caractere. A Tabela 3-1 mostra alguns exemplos da
funcionalidade deste operador.
Tabela 3-1: Exemplo do Operador LenOf
Tag Original Tag Alterada Operador
Ledyvnia Ledy Caracteres removidos
Ledyvnia LedyvniaXXX Caracteres includos
O operador MemberOfvalida se o contedo da tagest presente em outro
documento XML que utilizado para validaes, como por exemplo, validar login
e senha. Estes dados estariam presentes em um documento D que seria utilizado
pela aplicao para consultar se os dados vindos no documento de troca de
informao da aplicao esto corretos. A Tabela 3-2 mostra um exemplo deste
operador.
-
7/26/2019 Ledyvania - Dissertacao
33/83
20
Existe um arquivo de validao de dados (documento A) contendo todos os
dados permitidos pela aplicao na troca de mensagens atravs de um
documento XML B. Este documento tem uma de suas tags alteradas, baseando-
se na ausncia de valores do documento A, gerando, desta maneira, outro
documento XML C. Este documento C ento utilizado para a trocar de
mensagens entre as aplicaes.
Como visto, estes operadores criados por Lee e Offutt apresentam uma
grande limitao no testes dos documentos XML por limitar o teste ao contedo
dos elementos.
Tabela 3-2: Exemplo do Operador MemberOf
Arquivo de Validao
(documento A)
Tag Original (trecho do
Documento B)
Tag Alterada (trecho do
Documento C)
Ledyvnia
Ledyvnia
Maria
Em outro trabalho, Offutt e Xu [OFF04] realizam o teste de integrao entre
componentes de software via Web Service usando perturbao de dados. A
mensagem de requisio modificada e enviada uma nova mensagem, a
mensagem modificada. Eles utilizaram dois tipos de perturbao: de dados e de
interao.
Na perturbao de dados os valores dos dados so modificados baseando-
se na idia de teste de valores limites. Os valores utilizados so os limites
especificados pelo documentoXML Schema[OFF04].
A perturbao de interao est subdivida em outros dois tipos: RPC
(Remote Procedure Call) e comunicao de dados. Na perturbao RPC os
valores das tags so alterados. Quatro tipos de operadores numricos foram
definidos baseados na seguinte representao da rvore do XML esquema
[OFF04]:
T = (N, D, X, E, nr), onde:
N o conjunto de elementos e atributos do n;
D o conjunto de tipos de dados;
-
7/26/2019 Ledyvania - Dissertacao
34/83
21
X o conjunto de restries;
E o conjunto de ligaes entre os ns;
nr o n raiz;
Considerando n N, os seguintes operadores foram definidos:
Divide(n): onde o valor n alterado por 1 / n;
Multiply(n): onde o valor n alterado por n x n;
Negative(n): onde o valor n alterado por n;
Absolute(n): onde o valor n alterado por |n|;
Mediante a possibilidade de existir comandos SQL no prprio documento
XML para serem executados direto no banco de dados, Offutt definiu outros dois
operadores [OFF04]:
Exchange(n1, n2): quando n1 e n2 so elementos do mesmo tipo troca-
se o valor n1 por n2 e vice versa;
Unauthorized(str): atravs do uso de SQL injectiono valor de um string
str alterado para str OR 1 = 1.
Estes operadores, assim como em [LEE01], alteram apenas o contedo
das tags. Porm a diferena que no caso dos operadores numricos,
consideram-se os valores especificados pelo esquema utilizado.
Outro tipo de perturbao utilizada foi perturbao na comunicao de
dados. Este tem por objetivo testar os relacionamentos e restries entre os
elementos pai e filho tais como a cardinalidade entre eles [OFF04].
Xu et al [XU05] propem alguns operadores de mutao para perturbao
de esquemas, utilizando o XML Schema.Estes operadores tm a finalidade de
perturbar os esquemas com o propsito de criar mensagens XML incorretas para
testar o comportamento dos WebServices[XU05].
So propostos 4 (quatro) operadores primitivos e 3 (trs) operadores
adicionais no-primitivos para auxiliar os outros operadores primitivos criados
[XU05]. Estes operadores so definidos na Tabela 3-3. Para melhor
compreenso, um documento XML Schema foi definido com uma rvore [XU05]para a qual se utiliza a mesma notao de [OFF04].
-
7/26/2019 Ledyvania - Dissertacao
35/83
22
Nenhum dos operadores definidos em [XU05] alteram o n raiz do
esquema, apenas inserem ou removem ns ou subrvores.
Com base nestes operadores, Xu et al [XU05] definiram trs critrios de
cobertura de testes:
Delete Coverage (DC): critrio para remoo de ns
Insert Coverage (IC): critrio para insero de ns
Constraint Coverage (CC): critrio para inverso de restries;
Tabela 3-3: Descrio dos Operadores Definidos por Xu et al [XU05]
Operador Descrio Exemplo
insertN (e, ep, ec, n) Insere um novo n entre 2 (dois) ns
j existentes.
Figura 3-1 A
DeleteN (n) Remove um n da rvore e a aresta
que o liga com o n pai
Figura 3-1 B
insertND (np, ep, n, ec, d) Insere um novo n (n) em que a
definio de seu tipo ser a do n
pai (np)
Figura 3-1 C
deleteND (n) Remove da rvore um n e a sua
definio de tipo
Figura 3-1 D
insertT (n, e, Ta) Insere uma subrvore Figura 3-2 A
DeleteT (e) Remove uma subrvore a partir da
aresta e
Figura 3-2 B
changeE (e, e) Inverte duas subrvores trocando
duas arestas (e, e)
Figura 3-2 C
3.1.2. Teste de Mutao em documentos XML Schema
Testes em documento XML Schema tornam possvel a validao
semntica de documentos XML visto que os esquemas so usados para somente
a validao sinttica de documentos XML no lugar da DTD.
Para realizar o teste de esquemas, tcnicas baseadas em defeito tm sido
utilizadas [LI05, EME05].
-
7/26/2019 Ledyvania - Dissertacao
36/83
23
Figura 3-1: Operadores Primitivos
Figura 3-2: Operadores No-Primitivos
-
7/26/2019 Ledyvania - Dissertacao
37/83
24
Li e Miller [LI05] propuseram 18 (dezoito) operadores de mutao com
base em caractersticas do XML Schema e dos elementos existentes. Cada
operador altera um valor ou atributo conforme demonstra a Tabela 3-4 e a Tabela
3-5. Os exemplos de cada operador encontram-se no Anexo A.
Estes operadores foram criados com base nos erros mais comuns
cometidos pelos desenvolvedores [LI05]. Aps a gerao dos mutantes algumas
ferramentas foram utilizadas para validar os esquemas com o objetivo de mostrar
que os esquemas mutantes, apesar de conterem defeitos, podiam ser validados.
Foram utilizadas as seguintes ferramentas: SQC (SchemaQualityChecker
[SQC05]), XSV (XML SchemaValidador[XSV05]) e XMLSpy5[SPY05].
Neste trabalho Li e Miller [LI05] tm como objetivo revelar os defeitosinseridos nos esquemas usando para isso apenas alguns validadores de
esquema aos quais os mutantes gerados so submetidos. Algumas questes no
so abordadas no trabalho, tais como: Como aplicar o critrio Anlise de
Mutantes? Como considerar um mutante morto? Qual caso de teste utilizar?
Outro trabalho que visa o teste de esquema o de Emer et al [EME05]. O
objetivo desta abordagem, baseada em defeitos, revelar possveis defeitos no
XML Schemacom relao sua especificao.Neste trabalho utilizado um modelo formal para o documento XML
Schemaderivado de outros trabalhos publicados. Todo esquema representado
atravs de uma extenso da gramtica regular de rvores (Regular Tree
Grammar RTG) [EME05].
Para auxiliar no processo de teste so propostas 3 (trs) classes de
defeitos:
Elementos: defeitos relacionados definio dos elementos. Subdivide-seem ordem incorreta, valores incorretos e ocorrncias incorretas;
Atributos: defeitos relacionados definio dos atributos dos elementos.
Subdivide-se em uso incorreto e valores incorretos;
Restries nos dados: defeitos associados s definies de restries de
dados que podem ser assumidos pelos elementos. Subdivide-se em tipo de
dado incorreto, valores enumerados incorretos, valor mnimo e mximo
incorreto, padro incorreto, caracter branco incorreto, tamanho incorreto e
dgitos incorretos;
-
7/26/2019 Ledyvania - Dissertacao
38/83
25
Tabela 3-4: Lista de Operadores Definidos por Li e Miller
Sigla Nome Descrio
SNC XML SchemaNamespace Change Altera o ano de referncia
no namespace do esquema
TDE Target and Default Exchange Inverte os valores dos
atributos namespacetarget
e default
ENR Element Namespace Replacement Altera o identificador do
namespacepara outro valor
aleatrio
ENM Element Namespace Removal Remove o elemento
prefixado do identificador do
namespace
QGR Qualification Globally Replacement Altera a definio da
qualificao dos elementos
locais e atributos das tags
elementFormDefaulte
attributeFormDefault
QIR Qualification Individually Replacement Semelhante ao QGR, porm
altera as definies de
qualificao do atributo form
nas tags attribute
CCR ComplexType Compositors Replacement Altera a definio da
composio dos tipos
complexos
COC ComplexType Order Change Altera a ordem de elementos
dentro de uma composiodo tipo sequence
CDD ComplexType Definition Decrease Remove um elemento de
uma composio de
qualquer tipo
EOC Element Occurence Change Altera a restrio de
ocorrncias mnimas e/ou
mximas de um elemento
-
7/26/2019 Ledyvania - Dissertacao
39/83
26
Tabela 3-5: Continuao da Lista de Operadores Definidos por Li e Miller
AOC Attribute Occurence Change Altera a restrio de tipo de
ocorrncia de um atributo
SPC SimpleType Pattern Change Altera as expresses
regulares declaradas para
uma seqncia exata de
caracteres aceitveis
RAR Restriction Arguments Replacement Altera os valores e os tipos
de restries para valores
numricos
EEC Enumeration Element Change Inclui ou remove um
elemento de uma restrio
para conjuntos enumerados
SLC String Length Change Altera o tamanho (mximo
e/ou mnimo) permitido de
uma string
NCC Number Constraint Change Altera o tamanho de um
nmero decimal nas
restries de representao
decimal
DTC Derived Type Control Replacement Altera o tipo de derivaes
de controle
(extension/restriction)
UCR Use of Controller Replacement Altera o modificador de
controle usado nas
instncias
O processo de teste proposto inicia-se na construo do modelo RTG do
esquema, e baseado neste modelo as classes de defeitos so geradas. Estas
classes so usadas para inserir as modificaes em documentos XML vlidos
gerando assim documentos mutantes. Cada elemento e atributo do esquema
associado a uma das classes de defeito. Para cada associao identificada
gerada uma consulta que ento executada para cada documento XML mutante.Os resultados das consultas so confrontados com a especificao [EME05].
-
7/26/2019 Ledyvania - Dissertacao
40/83
27
Nos exemplos utilizados como estudo de caso foram gerados documentos
XML com modificaes simples e para estes foram geradas as consultas. Os
resultados obtidos revelaram defeitos nos esquemas em teste com relao s
especificaes.
Os defeitos revelados referem-se a ausncia de restries na definio de
alguns elementos, tais como, tamanho e padres, valores limites e nmero de
ocorrncias dos elementos.
Esta abordagem, como descrito por Emer et al [EME05], visa garantir a
qualidade do dado em documentos XML atravs de um processo de testes que
utiliza documentos XML mutantes e XQuery (linguagem de consulta para
documentos XML) para revelar os defeitos mais comuns.
3.2. Consideraes Finais
A atividade de teste uma das principais maneiras de garantir a qualidade
de um software. Com base no crescente nmero de aplicaes Webexistentes e
com a popularizao das tecnologias XML importante estender os critrios deteste para que eles possam tambm ser aplicados nesse contexto.
Neste captulo foram apresentados 5 (cinco) trabalhos que aplicam
tcnicas baseadas em defeito. Os trabalhos [LEE01, OFF04, XU05] visam testar o
comportamento dos Web Services com relao ao uso de documentos XML
incorretos na comunicao entre as aplicaes.
Em [LEE01] proposta a alterao do prprio documento XML. Nos
demais, os documentos so criados de acordo com esquemas alterados usando-se a tcnica de perturbao de dados. Estes defeitos inseridos geram mutantes
divergentes da especificao do esquema.
Como visto, nenhum dos trabalhos realmente aplica a anlise de mutantes
para testar esquemas. Em [OFF04] o objetivo testar a interao entre
componentes Webutilizando-se documentos XML gerados a partir de esquemas
mutantes. Em [LI05] os mutantes so apenas validados com alguma ferramenta
de validao, porm um processo para diferenciar os esquemas mutantes vlidosdo original no foi definido.
-
7/26/2019 Ledyvania - Dissertacao
41/83
28
Em [EME05] embora seja apresentado um processo para validar esquemas
este no gera esquemas mutantes e sim documentos XML mutantes a partir do
esquema em teste.
Com base nos estudos feitos e nos trabalhos relacionados apresentados
neste capitulo, propem-se a utilizao da tcnica de anlise de mutantes para
validar documentosXML Schemae no prximo captulo introduzido um conjunto
de operadores de mutao.
-
7/26/2019 Ledyvania - Dissertacao
42/83
29
4. OPERADORES DE MUTAO PARA
DOCUMENTOSXML SCHEMA
O objetivo deste trabalho realizar teste de documentos XML Schema
aplicando o critrio Anlise de Mutantes. Para a aplicao deste critrio, quatro
passos so necessrios:
1. estudar os principais erros cometidos ao se projetar esquemas atravs da
anlise dos documentosXML Schema;2. definir operadores de mutao com base nos tipos de erros previstos;
3. definir um processo de aplicao dos operadores;
4. implementar uma ferramenta de suporte;
Neste captulo so introduzidos os operadores de mutao para
documentos XML Schema. Estes operadores foram definidos considerando os
principais enganos cometidos ao se projetar esquemas e os defeitos que podemser introduzidos neste processo. Os trabalhos apresentados no captulo anterior
foram tomados como base para a definio do conjunto de operadores propostos.
Para a aplicao dos operadores foi definido um processo que permite a
gerao de dados de teste e identificao de quais esquemas mutantes se
comportam diferente do esquema em teste.
4.1. Contexto do Teste
A escolha do padro XML Schemapara gerao de mutantes para testes
deve-se principalmente ao vocabulrio e a estrutura rica de seu documento,
possibilitando desta maneira a criao de vrios tipos de operadores de mutao.
O objetivo validar a semntica de documentos XML utilizados por uma
aplicao, uma vez que a validao sinttica do mesmo j feita atravs de umparserimplementado, por exemplo, pela API DOM.
-
7/26/2019 Ledyvania - Dissertacao
43/83
30
Os operadores implementados so utilizados na gerao de mutantes para
testes de documentos XML Schema. Cada operador insere algum tipo de defeito
no esquema original.
Assim sendo, so gerados novos esquemas considerados mutantes os
quais so testados atravs de casos de testes, que so na realidade documentos
XML. A Figura 4-1 apresenta o processo proposto.
O testador fornece como entrada o esquema que ser testado e o conjunto
de casos de teste (documentos XML) a ser utilizado. Cada documento XML
submetido a um validador e confrontado sua validade com relao ao esquema
sendo testado e com relao a cada mutante gerado.
Um esquema mutante ser dito morto por um documento XML se forconsiderado vlido de acordo com o esquema original e no o for pelo esquema
mutante ou, ao contrrio, se o documento for validado pelo esquema mutante e
no o for pelo esquema original, ou seja, o esquema mutante se comporta
diferentemente do esquema em teste.
No final, um status fornecido para o mutante. O testador dever definir
esquemas equivalentes bem como avaliar os resultados obtidos, ou seja, quais
casos de testes obtiveram as respostas esperadas revelando ou no a presenade defeitos no esquema.
Figura 4-1: Processo Proposto
Os operadores foram divididos em dois grupos: manipulao de dados e de
manipulao da estrutura. Para a representao dos operadores foi necessrio
definir uma representao formal para o documentoXML Schema.
-
7/26/2019 Ledyvania - Dissertacao
44/83
31
4.2. Representao dos operadores
Para uma representao mais formal ser utilizada a seguinte notao para
um documentoXML Schema.
Trvore
Econjunto de Elementos
Dconjunto de Dados
Nconjunto de Ns
Aconjunto de Atributos
Oconjunto de Operadores
o GOGroup Order
o REQRequired
o DTDataType
o SOSizeOccurs
o CTChangeTag
o CSPChangeSingPlural
o LOLengthOf
o STESubTree_Exchange
o ITInsert_Tree
o RTRemove_Tree
4.3. Operadores de Manipulao de Dados
Estes operadores fazem as alteraes referentes aos valores dos atributos
e o nome das tags dos elementos na rvore. Neste grupo encontram-se os
seguintes operadores:
Group Order- GO
Required- REQ
DataType- DT
SizeOccurs- SO: semelhante ao operador EOC [LI05])
ChangeTag- CT: semelhante aos operadores CCR, DTC E RAR [LI05]
-
7/26/2019 Ledyvania - Dissertacao
45/83
32
ChangeSingPlural- CSP
LengthOf - LO: semelhante ao operador SLC [LI05] e ao lengthOf
definido por [LEE01]
E os seguintes operadores de Li e Miller [LI05] tambm fazem parte deste
grupo: SNC, QGR, AOC, QIR, CCR, UCR, RAR, NCC, DTC, SPCe TDE.
A seguir so apresentados a definio e um exemplo prtico dos
operadores propostos neste trabalho para auxiliar na compreenso. So eles:
Group_Order (GO):Altera a ordem na qual os elementos devem estar no
grupo. O domnio do operador {sequence, one, many, choice}
Exemplo:
Mutaes possveis:
;;
Required (REQ):Altera o tipo da obrigatoriedade dos atributos. O domnio
do operador {yes, no}Exemplo:
Mutaes possvel:
DataTypes (DT): Altera o tipo dos elementos/atributos. O domnio do
operador so todos os tipos definidos, por exemplo, {integer, string, float,decimal, int, enumaration}.
Exemplo:
Mutaes possveis:
;
LenghtOf (LO):Altera o tamanho do nome dos elementos.
-
7/26/2019 Ledyvania - Dissertacao
46/83
33
Exemplo:
Mutaes possveis:
ChangeSingPlural (CSP): Altera o tamanho do elemento adicionando ou
removendo o caracter s no final da string.
Exemplo 1:
Mutaes possvel:
Exemplo 1:
Mutaes possveis:
ChangeTag (CTP):Altera as tagsdos ns.
Exemplo:
Mutaes possvel:
SizeOccurs (SO): Altera-se os tamanhos das ocorrncias Mximas e/ou
Mnimas tanto dos tipos fixos (strings) quanto dos tipos criados pelo
usurios.Exemplo:
Mutaes possvel:
O operador SO tem como objetivo tambm testar os limites superior e
inferior dos valores dos atributos minOccurs e maxOccurspara testar o nmero
de ocorrncias permitidas para dado elemento do esquema.
-
7/26/2019 Ledyvania - Dissertacao
47/83
34
4.4. Operadores de Manipulao de Estrutura
Foram criados 3 (trs) operadores para gerao de mutantes alterando-se
a estrutura da rvore do esquema. Os exemplos citados para os operadores so
baseados no esquema mostrado na Figura 4-2
Figura 4-2: Exemplo de um XML Schema
Neste segundo grupo esto os seguintes operadores os quais englobam
alguns operadores definidos por [LI05] e [XU05]:
SubTree_Exchange - STE: semelhante ao operador changeE [XU05] eCOC [LI05].
Insert_Tree - IT: semelhante aos operadores insertN, insertND[XU05] e
EEC [LI05]
Remove_Tree - DT: semelhante aos operadores deleteN, deleteND
[XU05], CDD e EEC [LI05]
Para cada operador proposto para este grupo so apresentados sua
definio e um exemplo prtico para auxiliar na compreenso. So eles:
-
7/26/2019 Ledyvania - Dissertacao
48/83
35
SubTree_Exchange: Invertem as subrvores desde que os elementos que
esto sendo invertidos sejam do mesmo tipo. A Figura 4-3 mostra dois
exemplos prticos desde operador.
Insert_Tree: Acrescenta um n na estrutura da subrvore. A Figura 4-4
mostra um exemplo deste operador.
Figura 4-3: Exemplo do Operador SubTree_Exchange
Figura 4-4: Exemplo do Operador Insert_Tree
Delete_Tree: Um dos ns ou subrvores removido da estrutura da
rvore. A Figura 4-5 mostra dois exemplos deste operador.
-
7/26/2019 Ledyvania - Dissertacao
49/83
36
Figura 4-5: Exemplo do Operador Delete_Tree
4.5. Consideraes Finais
Esse captulo introduziu um conjunto de operadores de mutao e um
processo de teste para permitir a aplicao do critrio Anlise de Mutantes em
documentosXML Schema.
Foram introduzidos dois grupos de operadores. O primeiro grupo gera
modificaes em tipos de dados e atributos dos documentos. Esses operadores
foram propostos considerando os trabalhos de Li e Miller [LI05], Offutt e Xu
[OFF04] e Emer et al [EME05]. O segundo grupo de operadores modifica a
estrutura da rvore do documentoXML Schemaso baseados no trabalho de Xu
et al [XU05].
O processo de aplicao dos operadores considera documentos XML como
casos de teste para diferenciar os esquemas mutantes gerados e obter cobertura.
Para avaliar a proposta desse captulo, a ferramenta XTM foi implementadae descrita no captulo a seguir.
-
7/26/2019 Ledyvania - Dissertacao
50/83
37
5. A FERRAMENTA XTM
XTM (Ferramenta para Teste de Documentos XML SchemaBaseado em
Teste de Mutao) uma ferramenta que automatiza a gerao de mutantes para
um dado documento XML Schema em teste, implementando os operadores
descritos no captulo anterior. Foi completamente desenvolvida na linguagem
JAVA utilizando-se a API JDOM para a leitura e manipulao dos esquemas. No
decorrer da leitura da rvore os operadores so aplicados e uma cpia do
documento salva criando-se assim diversos esquemas mutantes que so
usados para validar um conjunto de documentos XML usados como dados de
teste.
Com o auxlio de uma ferramenta externa, Stylus Studio [STY05], alguns
dados de teste, ou seja, documentos XML, foram criados para avaliar o conjunto
de mutantes a fim de revelar defeitos no esquema em teste.
A Figura 5-1 mostra quais os passos do processo foram implementados
pela XTM.
Figura 5-1: FerramentaXTM
A ferramenta tem como entrada um XML Schema, o qual deve estar
sintaticamente correto, ou seja, deve ser um documento bem formado, e um
conjunto de dados de teste. A partir do esquema em teste so gerados diversos
mutantes aplicando-se o conjunto de operadores de mutao previamente
definidos no Captulo 4: GO, REQ, DT, SO, CTP, CSP, LO, STE, IT, RT. Para
-
7/26/2019 Ledyvania - Dissertacao
51/83
38
poder realizar comparaes tambm foram implementados os seguintes
operadores de Li e Miller [LI05]: SNC, QCR, AOC, QIR, CCR, UCR, SLC, RAR,
NCC, DTC. Devido ao escopo mais abrangente dos operadores CCR, RAR e
DTC, decidiu-se implement-los no lugar do operador proposto CTP pois, pode-se
constatar que estes operadores abrangiam o operador CTP em um escopo mais
amplo.
Aps a gerao dos esquemas mutantes, estes so utilizados na tentativa
de validao dos documentos XML informados como dados de teste. Conforme
as tentativas de validao so executadas, e o statusde cada mutante vai sendo
informado. Este, conforme a sada gerada, pode ser considerado morto ou vivo.
Dentre os mutantes que permanecem vivos, segundo anlise do testador, algunspodem ser considerados esquemas equivalentes.
Neste processo, o testador avalia os dados de testes que geraram uma
sada diferente do XML Schemaoriginal. Caso o mutante tenha gerado a sada
correta, um defeito identificado no esquema em teste.
Os principais algoritmos utilizados na implementao da XTM esto no
Apndice A. Um exemplo de utilizao apresentado na prxima seo.
5.1. Exemplo de utilizao da ferramenta
A Figura 5-2 mostra um exemplo de execuo da ferramenta para o grupo
de operadores de manipulao de dados.
Alm de gerar os mutantes, os dados de teste (documentos XML, neste
caso o nico documento aluno.xml), so validados com o esquema em teste (oesquema aluno.xsd), e informado se este valido ou no. No caso do exemplo
o documento valido. Aps a validao desse caso de teste (aluno.xml) pelos
esquemas mutantes gerados, os mutantes vivos so indicados. Ao final
informado o nmero total de mutantes criados por esse operador e o nmero total
de mutantes vivos. Analogamente esse passo conduzido para os outros
operadores e dados de teste restantes para se obter o scorede mutao.
-
7/26/2019 Ledyvania - Dissertacao
52/83
39
Figura 5-2: Exemplo do Funcionamento da Ferramenta XTM Operadores de
Dados
5.2. Consideraes Finais
Neste captulo foi descrita a ferramenta XTM, suas principais
funcionalidades e um exemplo de uso. A XTM implementa os operadores de
mutao e o processo descritos no Captulo 4. Ela gera documentos XML
Schemamutantes para um dado esquema em teste e permite que um dado de
teste (documento XML) seja ou no validado pelos esquemas mutantes gerados.
A validao ou no de um documento XML utilizada para descobrir defeitos noesquema.
A implementao da ferramenta XTM permite a aplicao do teste de
mutao em esquemas e a conduo de experimentos para a avaliao dos
operadores propostos. O prximo captulo descreve tais experimentos.
-
7/26/2019 Ledyvania - Dissertacao
53/83
40
6. EXPERIMENTOS
Com o objetivo de avaliar os operadores propostos e validar a
implementao da XTM, bem como comparar os operadores e a abordagem
deste trabalho com outros trabalhos, foram realizados dois experimentos. Neste
captulo, os experimentos so descritos. So apresentados seus objetivos,
metodologia adotada, resultados e anlise dos mesmos. Para realizar os
experimentos foram utilizados os seguintes esquemas: aluno.xsd, disciplina.xsd,
obras.xsd, usurio.xsd, sih.xsd e sia.xsd
Estes esquemas referem-se a 3 (trs) diferentes sistemas: sistema de
matricula (aluno.xsd e disciplina.xsd), sistema de biblioteca (obras.xsd e
usuarios.xsd) e sistema hospitalar (sia.xsd, sih.xsd). As especificaes desses
esquemas esto no Anexo B.
Os dois primeiros sistemas so os mesmos utilizados por Emer et al
[EME05] e foram escritos por alunos da disciplina de Engenharia de Software da
Universidade Federal do Paran - UFPR. O ltimo pertence a uma aplicao real
desenvolvida para um hospital. Todos foram utilizados para avaliar a eficcia dos
operadores. Os dois primeiros sistemas, utilizados por Emer et al [EME05],
permitiu uma comparao com a abordagem desses autores. O ltimo sistema
no possua defeitos conhecidos em seus esquemas e, para que esses
esquemas pudessem ser tambm utilizados na anlise da eficcia, alguns
defeitos foram aleatoriamente semeados pelos seus desenvolvedores.
6.1. Experimento 1
Objetivo
Este experimento teve como objetivo mostrar que as ferramentas de
validao de esquemas, geralmente utilizadas, tais como a ferramenta da W3C
por exemplo, no so capazes de identificar os defeitos introduzidos pelos
-
7/26/2019 Ledyvania - Dissertacao
54/83
41
operadores de mutao, neste caso, os operadores propostos neste trabalho.
Esse experimento tambm foi realizado por Li e Miller [LI05] para avaliar seus
operadores. A mesma metodologia foi seguida e permitiu comparaes entre os
conjuntos de operadores definidos.
Ferramentas utilizadas
Para validar os esquemas foram utilizadas duas das mesmas ferramentas
utilizadas no trabalho de Li e Miller [LI05]: Validador da W3C [XSV05] e XMLSpy
[SPY05]. Alm dessas, tambm foi utilizada outra ferramenta, o Stylus Studio 6
[STY05].
Para este experimento algumas observaes referentes s validaesefetuadas pelas ferramentas so feitas, pois isto influencia diretamente a
quantidade de mutantes vlidos gerados pelos operadores de mutao propostos
tanto por Li e Miller [LI05] quanto os propostos neste trabalho:
O atributo minOccursno pode ter ocorrncias iguais a 0 (zero) quando o
group orderfor do tipoAll;
Os tipos de dados no podem ser declarados diferente de, por exemplo,
xs:string; Quando existem referncias a outros ns, estas referncias so validadas;
O atributo minOccursno pode ter valores negativos (vlido somente para
o validador da W3C);
Descrio do Experimento
Para cada esquema em teste foram realizados os seguintes passos:
1. Gerar mutantes utilizando todos os operadores implementados pela XTM.2. Validar sintaticamente os esquemas mutantes utilizando as ferramentas da
seo anterior
Resultados
A Tabela 6-1 mostra o nmero total de mutantes gerados por esquemas
para todos os operadores de mutao implementados. Este total no considera a
validade dos documentos. Nesta tabela detalhado o nmero de mutantesgerados para o grupo de operadores de dado, sendo que, os 11 (onze) primeiros
-
7/26/2019 Ledyvania - Dissertacao
55/83
42
operadores so os propostos por Li e Miller [LI05] e os demais foram propostos
neste trabalho porm, os operadores de Li e Miller que no foram implementados
so similares a estes operadores. O total de mutantes gerados tambm
apresentado na tabela.
Tabela 6-1: Mutantes Gerados por Operador de Mutao
XML SchemaOper.
Aluno Disciplina Usuario Obras Sih Sia
Total
Vlidos
Total
Gerado
1. SNC 1 1 1 1 1 1 6 0
2. QCR 1 1 1 1 1 1 6 6
3. AOC 0 0 0 0 0 0 0 0
4. QIR 0 0 0 0 0 0 0 0
5. CCR 4 4 6 4 16 16 50 50
6. UCR 0 0 0 0 0 0 0 0
7. SLC 0 0 0 0 0 0 0 0
8. RAR 0 0 0 0 3 3 6 6
9. NCC 0 0 0 0 0 0 0 0
10. DTC 0 0 0 0 1 1 2 2
11. SPC 0 0 0 0 0 0 0 0
12. GO 0 0 0 0 0 0 0 0
13. CSP 10 10 11 8 36 34 109 107
14. REQ 0 0 0 0 0 0 0 0
15. DT 12 12 10 8 52 48 142 139
16. SO 23 20 32 25 80 75 255 218
17. LO 10 10 11 8 35 36 110 110
18. IT 22 28 28 20 80 83 261 62
19. STE 28 28 28 15 77 96 271 268
20. RT 4 15 15 12 54 57 157 153
Total 115 129 143 102 436 451 1376 1021
-
7/26/2019 Ledyvania - Dissertacao
56/83
43
A Tabela 6-2, a Tabela 6-3 e a Tabela 6-4 apresentam o nmero de
mutantes gerados no validados pelo nmero de mutantes validados. Foram
utilizadas respectivamente as ferramentas W3C [XSV05], XMLSpy [SPY05] e
Stylus Studio[STY05].
Nessas tabelas os operadores esto agrupados da seguinte forma para
facilitar a compreenso e anlise dos resultados: Dados (operadores do grupo de
Dados), STE (SubTree_Exchange), IT (InsertTree) e RT (RemoveTree). Tambm
so apresentados o nmero e a porcentagem de mutantes vlidos gerados para
cada esquema e para cada grupo de operadores.
Anlise dos resultados
Considerando o nmero total de mutantes gerados, conforme a Tabela 6-1,
pode-se considerar que, embora alguns mutantes invlidos tenham sido gerados,
a grande maioria pode ser validada conforme mostra resumidamente a Tabela 6-5
feita com base nas demais tabelas apresentadas.
Tabela 6-2: Esquemas Mutantes No Vlidos pelo Nmero de Mutantes Vlidos W3C
W3CXML Schema
Dados STE IT RT
Total de
Vlidos
% mutantes
vlidos
Aluno.xsd 26/35 0/28 19/3 0/4 70 66,66
Disciplina.xsd 16/42 0/28 24/4 0/15 89 74,79
Obras.xsd 13/59 0/28 24/4 0/15 106 80,30
Usurio.xsd 11/48 0/11 17/3 0/12 74 78,72
Sia.xsd 68/146 0/77 70/10 2/52 285 68,67
Sih.xsd 85/139 0/96 71/12 2/55 304 75,80
Total de Vlidos 471 268 36 153 928 -
% Vlidos 81,62 100 13,79 97,45 - 74,15
Conforme demonstra a Tabela 6-5, com exceo dos operadores de
insero de ns (InsertTree), todos os demais geraram pelo menos mais de 60%de mutantes vlidos. Portanto, nem todos os defeitos inseridos representados por
-
7/26/2019 Ledyvania - Dissertacao
57/83
44
esses operadores so revelados apenas utilizando-se parsers na validao dos
esquemas mutantes, muitos destes possveis defeitos geraram mutantes vlidos
segundo o experimento feito.
Tabela 6-3: Esquemas Mutantes No Vlidos pelo Nmero de Mutantes Vlidos
XMLSpy
XMLSpyXML Schema
Dados STE IT RT
Total de
Vlidos
% mutantes
vlidos
Aluno.xsd 21/40 0/28 19/3 0/4 75 71,42
Disciplina.xsd 16/42 0/28 24/4 0/15 89 74,79
Obras.xsd 29/40 0/28 24/4 0/15 90 68,18
Usurio.xsd 23/36 0/11 17/3 0/12 62 65,96
Sia.xsd 64/150 0/77 70/10 2/52 289 69,63
Sih.xsd 89/137 0/96 71/12 2/55 300 74,81
Total de Vlidos 448 268 36 153 905 -
% Vlidos 77,64 100 13,79 97,45 - 70,80
Tabela 6-4: Esquemas Mutantes No Vlidos pelo Nmero de Mutantes Vlidos
Stylus Studio
Stylus StudioXML Schema
Dados STE IT RT
Total de
Vlidos
% mutantes
vlidos
Aluno.xsd 26/35 0/28 19/3 0/4 70 66,63
Disciplina.xsd 23/35 0/28 24/4 0/15 82 68,90
Obras.xsd 30/42 0/28 24/4 0/15 89 67,42
Usurio.xsd 24/35 0/11 17/3 0/12 59 62,76
Sia.xsd 89/125 0/77 70/10 2/52 264 70,55
Sih.xsd 99/127 0/96 71/12 2/55 290 72,32
Total de Vlidos 399 268 36 153 856 -
% Vlidos 81,58 100 13,79 97,45 - 68,10
Apenas o operador de insero de novos ns apresentou uma grande
quantidade de mutantes invlidos, porm, isto se deve ao fato do tipo de n
-
7/26/2019 Ledyvania - Dissertacao
58/83
45
inserido no levar em considerao o contexto no qual ele est sendo aplicado,
gerando, desta maneira, diversos mutantes invlidos. Para se evitar isso novos
experimentos devero ser conduzidos e uma possvel redefinio desse operador
ser realizada.
Tabela 6-5: Porcentagem Mdia Total de Mutantes Validados
% Mdia Mutantes vlidosXML Schema
Dados SBT IT RT Total
Aluno.xsd 60.10 100 32,14 100 68,24
Disciplina.xsd 68.39 100 14,29 100 72,83
Obras.xsd 68.12 100 14,29 100 71,97Usuarios.xsd 67.23 100 15 100 69,15
Sia.xsd 65.57 100 12,50 96.3 69,62
Sih.xsd 59.43 100 14,46 96,49 74,62
Total 64.80 100 17,11 98,8 71,02
Como visto anteriormente na Tabela 6-1 a maioria dos mutantes foramgerados com os operadores de mutao propostos neste trabalho. Os operadores
de Li e Miller [LI05] geraram poucos mutantes. No foi possvel aplicar alguns
operadores em nenhum dos esquemas utilizados, pois estes no atendiam as
especificaes para aplicao dos operadores visto que se tratavam de exemplos
simples.
Quanto mais complexo for o esquema a ser utilizado mais abrangente ser a
aplicao dos operadores. Muitos operadores propostos por Li e Miller [LI05]requerem estruturas complexas tais como herana. Estas no estavam presentes
nos esquemas desse experimento. Uma melhor anlise deve ser efetuada para
verificar o impacto desses operadores e avaliar se essas estruturas so pouco
utilizadas pelos projetistas. Esses operadores podem ser desabilitados pelo
testador em tais casos, se desejado.
-
7/26/2019 Ledyvania - Dissertacao
59/83
46
6.2. Experimento 2
Objetivo
O objetivo dos operadores propostos neste trabalho descrever defeitos
relacionados semntica e no apenas a defeitos sintticos. Como apontado
pelos resultados do Experimento 1, os defeitos no so revelados apenas com
validadores. Para revelar os defeitos descritos pelos operadores necessrio
aplicar o teste de mutantes.
O Experimento 2 teve como objetivo a aplicao dos operadores propostos e
verificar quantos dados de teste so necessrios por operador para identificar
todos os mutantes gerados, qual o nmero de esquemas equivalentes gerados, e
o nmero de defeitos revelados. Este experimento permitiu que uma comparao
com o trabalho de Emer et al [EME05] fosse realizada. Para a comparao,
apenas os esquemas utilizados no referido trabalho foram considerados:
aluno.xsd, disciplina.xsd, obras.xsd e usuario.xsd.
Passos
Para cada esquema foram considerados todos os esquemas mutantesvlidos gerados pela XTM no passo anterior. Foi utilizado na ferramenta XTM um
mecanismo de validao utilizando-se a API SAX o qual descarta mutantes no
vlidos para validar de documentos XML. Este mecanismo semelhante s
validaes feitas pelo validador da W3C.
Os seguintes passos foram realizados:
1. Para a realizao deste experimento foi utilizado um conjunto inicial de dados
de teste, isto , documentos XML que estavam disponveis para os esquemasdescritos por seus desenvolvedores. Cada documento do conjunto de dados
de teste foi submetido validao de acordo com o esquema em teste e com
cada esquema mutante gerado. O esquema mutante considerado morto se
ele produziu uma sada diferente da sada do esquema sendo testado.
2. Para os mutantes que permaneceram vivos aps o Passo1, isto , produziram
as mesmas sadas que o esquema original para todos os documentos no
conjunto de teste inicial. Nesse passo, documentos XML adicionais foram
-
7/26/2019 Ledyvania - Dissertacao
60/83
47
gerados com o objetivo de mata-los. Nenhum esquema mutante equivalente
ao original foi identificado, consequentemente, todos puderam ser mortos.
3. O scorede mutao foi ento calculado.
No Passo 2 necessrio avaliar o resultado de um mutante para consider-
lo morto. Ele ser considerado morto se validou um documento XML e o esquema
original no o fez, ou, caso contrrio, um documento XML no pde ser validado
pelo mutante, mas o foi pelo esquema sendo testado. No caso de o resultado do
mutante ser o correto, um defeito no esquema em teste foi revelado. Esse
resultado foi utilizado para a anlise da eficcia.
Resultados
Os resultados obtidos com este experimento so apresentados na Tabela
6-6. Est identificado para cada esquema o nmero de mutantes vlidos usados
no experimento, quantidade de mutantes equivalentes gerados, nmero de dados
de testes distintos usados e o scorede mutao obtido. A quantidade de defeitos
revelados pela quantidade de defeitos conhecidos por esquema tambm
informada.
Tabela 6-6: Resultados Obtidos no Experimento 2
XML Schema Qtd mutantes
vlidos
Mutantes
Equivalentes
Scorede
Mutao
Qtd. Dados
de Testes
Qtd. Defeitos
Revelados /
existentes
Aluno.xsd 60 0 1 3 10/10
Disciplina.xsd 79 0 1 4 8/8
Obras.xsd 95 0 1 3 4/4
Usurio.xsd 66 0 1 3 9/9
Sia.xsd 250 0 1 4 0/0
Sih.xsd 268 0 1 4 1/1
No caso do sistema hospitalar a quantidade de defeitos conhecidos a o
nmero de defeitos semeados no esquema pelo desenvolvedor, e para os demais
esquemas foi utilizada como base a quantidade de defeitos encontrados notrabalho de Emer et al [EME05].
-
7/26/2019 Ledyvania - Dissertacao
61/83
48
Os tipos de defeitos revelados nos 4 (quatro) primeiros esquemas foram:
tamanho, padro e tipo de dado de alguns campo, como login e senha por
exemplo, nmero de ocorrncias e valores limites permitidos. O esquema Sia.xsd
no possua nenhum defeito com base em sua especificao. O esquema Sih.xsd
teve o defeito referente ao valor limite permitido para um tipo de dado criado,
inserido manualmente, revelado.
Anlise dos Resultados
Para cada um dos sistemas utilizados os dados de testes foram gerados
utilizando-se a ferramenta Stulys Studio.
Neste experimento, com a utilizao de alguns dados de teste, foi possveldetectar todos os defeitos (naturais e semeados) nos esquemas. Uma
caracterstica destes dados de teste utilizados foi o alto grau de acoplamento
apresentado por todos. Ao tentar revelar um determinado erro outros erros
tambm eram revelados, ou seja, o efeito de acoplamento pode ser constatado
neste experimento.
Os operadores propostos mostraram-se mais eficazes no auxlio das
deteces de defeitos do que apenas a utilizao de ferramentas para validar osmutantes gerados podendo, desta maneira, identificar os defeitos nos esquemas
usados no experimento.
Realizando uma comparao com a abordagem feita por Emer et al
[EME05], neste experimento tambm foi possvel revelar os mesmos defeitos
revelados em sua abordagem para os esquemas em testes dos sistemas de
matrcula e de biblioteca. Em seu experimento, para o documento Aluno.xsd
foram gerados 22 consultas a partir de 22 documentos XML mutantes gerados.Para o mesmo documento, o experimento deste trabalho necessitou de 3
documentos XML para identificar todos os mutantes gerados.
No houve a identificao de nenhum mutante equivalente para nenhum
dos esquemas, todos os mutantes foram mortos. O nmero de documentos XML
usados para revelar os defeitos foi pequeno, resultando em um baixo custo para a
aplicao do critrio Anlise de Mutantes.
Pode-se constatar no segundo experimento realizado que os operadores
propostos demonstraram mais eficcia na identificao de defeitos em esquemas
-
7/26/2019 Ledyvania - Dissertacao
62/83
49
do que o primeiro experimento. Quase todos os defeitos conhecidos nos
documentos XML Schema foram revelados usando os operadores propostos.
Apenas 1 dos defeitos conhecidos que estava presente no esquema do sistema
hospitalar (SIH.xsd) foi revelado usando um dos operadores propostos por Li e
Miller [LI05], neste caso o operador RAR. Este operador no pertence ao escopo
dos operadores definidos neste trabalho e, consequentemente no teria sido
revelado pelos operadores propostos neste trabalho.