ledyvania - dissertacao

Upload: lucas-dutra

Post on 01-Mar-2018

225 views

Category:

Documents


0 download

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.