Geração automática de testes com objetos mock baseados em interações.

Detalhes bibliográficos
Ano de defesa: 2010
Autor(a) principal: SOUTO, Sabrina de Figueirêdo. lattes
Orientador(a): GUERRERO, Dalton Dario Serei. lattes
Banca de defesa: FIGUEIREDO , Jorge Cesar Abrantes de., COELHO, Roberta de Souza.
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Campina Grande
Programa de Pós-Graduação: PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
Departamento: Centro de Engenharia Elétrica e Informática - CEEI
País: Brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: https://dspace.sti.ufcg.edu.br/handle/riufcg/7883
Resumo: O objetivo de um teste de unidade é verificar o funcionamento de um software e procurar defeitos na menor parte testável, de forma isolada do restante do sistema. Porém, este isolamento nem sempre é possível devido às interações entre a a classe sob teste - CUT (Class Under Test) e seus colaboradores, fazendo-se necessário o uso de objetos mock para simular os colaboradores, em um mecanismo onde a CUT não sabe se ela está interagindo com colaboradores reais ou objetos mock. Desta forma, objetos mock podem ser de grande utilidade na escrita de testes de unidade, uma vez que isolam a CUT, tornando o teste mais eficaz e eficiente. Entretanto, escrever testes com objetos mock pode ser uma tarefa custosa, tediosa e repetitiva, mesmo com o suporte de frameworks, como o EasyMock [34] por exemplo, devido às atividades necessárias ao seu funcionamento. Dada a necessidade de se utilizar objetos mock nos testes de unidade e seus benefícios, e considerando a dificuldade envolvida no desenvolvimento e manutenção deste tipo de código, propomos e avaliamos uma técnica para automatizar o desenvolvimento de testes com objetos mock, gerando-os automaticamente para um determinado cenário de teste. Esta técnica tem por base a identificação das interações entre a CUT e seus colaboradores em um dado cenário de teste, através da análise estática e dinâmica de código. Após essas análises, a técnica provê a geração de código de teste com objetos mock para os colaboradores e interações identificadas. O código resultante consiste em uma nova versão do código do cenário de teste inicial, onde os colaboradores da CUT são substituídos por objetos mock, bem como suas interações. Considerando o baixo custo de se gerar automaticamente o código para os objetos mock, não se faz necessária a reutilização deste código, o qual poderá ser gerado novamente a cada modificação. Para avaliar nossa técnica realizamos um estudo experimental comparativo entre a forma manual e a automática de se desenvolver testes com objetos mock, através da observação do esforço empregado em tais atividades e o nível de cobertura de interações do código resultante, que tenta assegurar que o código gerado possui pelo menos a mesma precisão do código inicial. Os resultados da avaliação evidenciam que nossa técnica foi capaz de reduzir o esforço empregado no desenvolvimento de testes com objetos mock, resultando em um código melhor e mais preciso comparado ao manual.
id UFCG_c81a689d122321e42709479a8d9ca68f
oai_identifier_str oai:dspace.sti.ufcg.edu.br:riufcg/7883
network_acronym_str UFCG
network_name_str Biblioteca Digital de Teses e Dissertações da UFCG
repository_id_str
spelling GUERRERO, Dalton Dario Serei.GUERRERO, D. D. S.http://lattes.cnpq.br/2050632960242405FIGUEIREDO , Jorge Cesar Abrantes de.COELHO, Roberta de Souza.http://lattes.cnpq.br/0595422027989879SOUTO, Sabrina de Figueirêdo.O objetivo de um teste de unidade é verificar o funcionamento de um software e procurar defeitos na menor parte testável, de forma isolada do restante do sistema. Porém, este isolamento nem sempre é possível devido às interações entre a a classe sob teste - CUT (Class Under Test) e seus colaboradores, fazendo-se necessário o uso de objetos mock para simular os colaboradores, em um mecanismo onde a CUT não sabe se ela está interagindo com colaboradores reais ou objetos mock. Desta forma, objetos mock podem ser de grande utilidade na escrita de testes de unidade, uma vez que isolam a CUT, tornando o teste mais eficaz e eficiente. Entretanto, escrever testes com objetos mock pode ser uma tarefa custosa, tediosa e repetitiva, mesmo com o suporte de frameworks, como o EasyMock [34] por exemplo, devido às atividades necessárias ao seu funcionamento. Dada a necessidade de se utilizar objetos mock nos testes de unidade e seus benefícios, e considerando a dificuldade envolvida no desenvolvimento e manutenção deste tipo de código, propomos e avaliamos uma técnica para automatizar o desenvolvimento de testes com objetos mock, gerando-os automaticamente para um determinado cenário de teste. Esta técnica tem por base a identificação das interações entre a CUT e seus colaboradores em um dado cenário de teste, através da análise estática e dinâmica de código. Após essas análises, a técnica provê a geração de código de teste com objetos mock para os colaboradores e interações identificadas. O código resultante consiste em uma nova versão do código do cenário de teste inicial, onde os colaboradores da CUT são substituídos por objetos mock, bem como suas interações. Considerando o baixo custo de se gerar automaticamente o código para os objetos mock, não se faz necessária a reutilização deste código, o qual poderá ser gerado novamente a cada modificação. Para avaliar nossa técnica realizamos um estudo experimental comparativo entre a forma manual e a automática de se desenvolver testes com objetos mock, através da observação do esforço empregado em tais atividades e o nível de cobertura de interações do código resultante, que tenta assegurar que o código gerado possui pelo menos a mesma precisão do código inicial. Os resultados da avaliação evidenciam que nossa técnica foi capaz de reduzir o esforço empregado no desenvolvimento de testes com objetos mock, resultando em um código melhor e mais preciso comparado ao manual.The main purpose of unit tests is to verify the correct work of software and search for defects in the smallest part of the system, in isolated way. However, this isolation not always is possible due to the relationship among the CUT (Class Under Test) and its collaborators, needing the use of mock objects to simulate the collaborators behavior, by a mechanism that the CUT has no science if it is interacting with real collaborators or mock objects. As a result, mock objects can be very useful to write unit tests because they isolate the CUT, improving both efficiency and effectiveness of unit testing. On the other hand, writing tests that use mocks can be a tedious, repetitive, and costly task, even with the support of frameworks, due to the necessary procedures for it working. Given the high importance in the use of mock objects and its benefits, and considering the mentioned drawbacks, we propose a technique that automates the development of tests with mock objects, by automatically generating them for a given testing scenario. This technique is based on automatically identifying interactions among the CUT and its collaborators in a given testing scenario, via both static analysis and dynamic analysis of the code. After these analyses, the technique generates code of test with mock objects for those collaborators and the identified interactions, resulting on a new version of the initial testing scenario code, where the collaborators are replaced by mock objects as well its interactions. Considering the low cost in automatically generate test code with mock objects, it is not necessary maintain this code, which can be generated for each change in the testing scenario. In order to evaluate our technique, we performed a comparative study, by means of experimentation, between the manual and automatic way of develop tests with mock objects, by observing the spent effort (development time and size of produced code) on those procedures and the interaction coverage level of the resulting code, which tries to assure that the generated code contains in minimum the same quality of the input code. The evaluation results demonstrate that our technique was able to reduce the spent effort on developing tests with mock objects, resulting on a better and more precise code when compared to the one manually developed.Submitted by Maria Medeiros (maria.dilva1@ufcg.edu.br) on 2019-10-09T10:02:09Z No. of bitstreams: 1 SABRINA DE FIGUEIRÊDO SOUTO - DISSERTAÇÃO (PPGCC) 2010.pdf: 2874046 bytes, checksum: 5211a26a1f1681e30762c4baa12692f8 (MD5)Made available in DSpace on 2019-10-09T10:02:09Z (GMT). No. of bitstreams: 1 SABRINA DE FIGUEIRÊDO SOUTO - DISSERTAÇÃO (PPGCC) 2010.pdf: 2874046 bytes, checksum: 5211a26a1f1681e30762c4baa12692f8 (MD5) Previous issue date: 2010-08-31Universidade Federal de Campina GrandePÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGBrasilCentro de Engenharia Elétrica e Informática - CEEICiência da ComputaçãoTeste de SoftwareTeste de UnidadeObjetos MockAnálise EstáticaAnálise DinâmicaSoftware TestingUnit TestMock ObjectsStatic AnalysisDynamic AnalysisGeração automática de testes com objetos mock baseados em interações.Automatic test generation with mock objects based on interactions.2010-08-312019-10-09T10:02:09Z2019-09-092019-10-09T10:02:09Zhttps://dspace.sti.ufcg.edu.br/handle/riufcg/7883SOUTO, S. de F. Geração automática de testes com objetos mock baseados em interações. 2010. 133 f. Dissertação (Mestrado em Ciência da Computação) – Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2010. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/7883info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisporinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCGTEXTSABRINA DE FIGUEIRÊDO SOUTO - DISSERTAÇÃO (PPGCC) 2010.pdf.txtSABRINA DE FIGUEIRÊDO SOUTO - DISSERTAÇÃO (PPGCC) 2010.pdf.txttext/plain214988https://dspace.sti.ufcg.edu.br/bitstream/riufcg/7883/4/SABRINA+DE+FIGUEIR%C3%8ADO+SOUTO+-+DISSERTA%C3%87%C3%83O+%28PPGCC%29+2010.pdf.txt7bc097e5ff665df4ef81dc1bf76a8e85MD54ORIGINALSABRINA DE FIGUEIRÊDO SOUTO - DISSERTAÇÃO (PPGCC) 2010.pdfSABRINA DE FIGUEIRÊDO SOUTO - DISSERTAÇÃO (PPGCC) 2010.pdfapplication/pdf1521379https://dspace.sti.ufcg.edu.br/bitstream/riufcg/7883/3/SABRINA+DE+FIGUEIR%C3%8ADO+SOUTO+-+DISSERTA%C3%87%C3%83O+%28PPGCC%29+2010.pdf545ee01bdad40100e5eac230cf4a8cf8MD53LICENSElicense.txtlicense.txttext/plain; charset=utf-81748https://dspace.sti.ufcg.edu.br/bitstream/riufcg/7883/2/license.txt8a4605be74aa9ea9d79846c1fba20a33MD52riufcg/78832025-07-24 04:57:44.699oai:dspace.sti.ufcg.edu.br:riufcg/7883Tk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=Biblioteca Digital de Teses e Dissertaçõeshttp://bdtd.ufcg.edu.br/PUBhttp://dspace.sti.ufcg.edu.br:8080/oai/requestbdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.bropendoar:48512025-07-24T07:57:44Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false
dc.title.pt_BR.fl_str_mv Geração automática de testes com objetos mock baseados em interações.
dc.title.alternative.pt_BR.fl_str_mv Automatic test generation with mock objects based on interactions.
title Geração automática de testes com objetos mock baseados em interações.
spellingShingle Geração automática de testes com objetos mock baseados em interações.
SOUTO, Sabrina de Figueirêdo.
Ciência da Computação
Teste de Software
Teste de Unidade
Objetos Mock
Análise Estática
Análise Dinâmica
Software Testing
Unit Test
Mock Objects
Static Analysis
Dynamic Analysis
title_short Geração automática de testes com objetos mock baseados em interações.
title_full Geração automática de testes com objetos mock baseados em interações.
title_fullStr Geração automática de testes com objetos mock baseados em interações.
title_full_unstemmed Geração automática de testes com objetos mock baseados em interações.
title_sort Geração automática de testes com objetos mock baseados em interações.
author SOUTO, Sabrina de Figueirêdo.
author_facet SOUTO, Sabrina de Figueirêdo.
author_role author
dc.contributor.advisor1.fl_str_mv GUERRERO, Dalton Dario Serei.
dc.contributor.advisor1ID.fl_str_mv GUERRERO, D. D. S.
dc.contributor.advisor1Lattes.fl_str_mv http://lattes.cnpq.br/2050632960242405
dc.contributor.referee1.fl_str_mv FIGUEIREDO , Jorge Cesar Abrantes de.
dc.contributor.referee2.fl_str_mv COELHO, Roberta de Souza.
dc.contributor.authorLattes.fl_str_mv http://lattes.cnpq.br/0595422027989879
dc.contributor.author.fl_str_mv SOUTO, Sabrina de Figueirêdo.
contributor_str_mv GUERRERO, Dalton Dario Serei.
FIGUEIREDO , Jorge Cesar Abrantes de.
COELHO, Roberta de Souza.
dc.subject.cnpq.fl_str_mv Ciência da Computação
topic Ciência da Computação
Teste de Software
Teste de Unidade
Objetos Mock
Análise Estática
Análise Dinâmica
Software Testing
Unit Test
Mock Objects
Static Analysis
Dynamic Analysis
dc.subject.por.fl_str_mv Teste de Software
Teste de Unidade
Objetos Mock
Análise Estática
Análise Dinâmica
Software Testing
Unit Test
Mock Objects
Static Analysis
Dynamic Analysis
description O objetivo de um teste de unidade é verificar o funcionamento de um software e procurar defeitos na menor parte testável, de forma isolada do restante do sistema. Porém, este isolamento nem sempre é possível devido às interações entre a a classe sob teste - CUT (Class Under Test) e seus colaboradores, fazendo-se necessário o uso de objetos mock para simular os colaboradores, em um mecanismo onde a CUT não sabe se ela está interagindo com colaboradores reais ou objetos mock. Desta forma, objetos mock podem ser de grande utilidade na escrita de testes de unidade, uma vez que isolam a CUT, tornando o teste mais eficaz e eficiente. Entretanto, escrever testes com objetos mock pode ser uma tarefa custosa, tediosa e repetitiva, mesmo com o suporte de frameworks, como o EasyMock [34] por exemplo, devido às atividades necessárias ao seu funcionamento. Dada a necessidade de se utilizar objetos mock nos testes de unidade e seus benefícios, e considerando a dificuldade envolvida no desenvolvimento e manutenção deste tipo de código, propomos e avaliamos uma técnica para automatizar o desenvolvimento de testes com objetos mock, gerando-os automaticamente para um determinado cenário de teste. Esta técnica tem por base a identificação das interações entre a CUT e seus colaboradores em um dado cenário de teste, através da análise estática e dinâmica de código. Após essas análises, a técnica provê a geração de código de teste com objetos mock para os colaboradores e interações identificadas. O código resultante consiste em uma nova versão do código do cenário de teste inicial, onde os colaboradores da CUT são substituídos por objetos mock, bem como suas interações. Considerando o baixo custo de se gerar automaticamente o código para os objetos mock, não se faz necessária a reutilização deste código, o qual poderá ser gerado novamente a cada modificação. Para avaliar nossa técnica realizamos um estudo experimental comparativo entre a forma manual e a automática de se desenvolver testes com objetos mock, através da observação do esforço empregado em tais atividades e o nível de cobertura de interações do código resultante, que tenta assegurar que o código gerado possui pelo menos a mesma precisão do código inicial. Os resultados da avaliação evidenciam que nossa técnica foi capaz de reduzir o esforço empregado no desenvolvimento de testes com objetos mock, resultando em um código melhor e mais preciso comparado ao manual.
publishDate 2010
dc.date.issued.fl_str_mv 2010-08-31
dc.date.accessioned.fl_str_mv 2019-10-09T10:02:09Z
dc.date.available.fl_str_mv 2019-09-09
2019-10-09T10:02:09Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://dspace.sti.ufcg.edu.br/handle/riufcg/7883
dc.identifier.citation.fl_str_mv SOUTO, S. de F. Geração automática de testes com objetos mock baseados em interações. 2010. 133 f. Dissertação (Mestrado em Ciência da Computação) – Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2010. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/7883
url https://dspace.sti.ufcg.edu.br/handle/riufcg/7883
identifier_str_mv SOUTO, S. de F. Geração automática de testes com objetos mock baseados em interações. 2010. 133 f. Dissertação (Mestrado em Ciência da Computação) – Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2010. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/7883
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Campina Grande
dc.publisher.program.fl_str_mv PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
dc.publisher.initials.fl_str_mv UFCG
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Centro de Engenharia Elétrica e Informática - CEEI
publisher.none.fl_str_mv Universidade Federal de Campina Grande
dc.source.none.fl_str_mv reponame:Biblioteca Digital de Teses e Dissertações da UFCG
instname:Universidade Federal de Campina Grande (UFCG)
instacron:UFCG
instname_str Universidade Federal de Campina Grande (UFCG)
instacron_str UFCG
institution UFCG
reponame_str Biblioteca Digital de Teses e Dissertações da UFCG
collection Biblioteca Digital de Teses e Dissertações da UFCG
bitstream.url.fl_str_mv https://dspace.sti.ufcg.edu.br/bitstream/riufcg/7883/4/SABRINA+DE+FIGUEIR%C3%8ADO+SOUTO+-+DISSERTA%C3%87%C3%83O+%28PPGCC%29+2010.pdf.txt
https://dspace.sti.ufcg.edu.br/bitstream/riufcg/7883/3/SABRINA+DE+FIGUEIR%C3%8ADO+SOUTO+-+DISSERTA%C3%87%C3%83O+%28PPGCC%29+2010.pdf
https://dspace.sti.ufcg.edu.br/bitstream/riufcg/7883/2/license.txt
bitstream.checksum.fl_str_mv 7bc097e5ff665df4ef81dc1bf76a8e85
545ee01bdad40100e5eac230cf4a8cf8
8a4605be74aa9ea9d79846c1fba20a33
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)
repository.mail.fl_str_mv bdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.br
_version_ 1863363441398382592