Please use this identifier to cite or link to this item: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/15895
Full metadata record
DC FieldValueLanguage
dc.creator.IDPONTES, F. B.pt_BR
dc.creator.Latteshttp://lattes.cnpq.br/2757376642187399pt_BR
dc.contributor.advisor1GHEYI, Rohit.-
dc.contributor.advisor1IDGHEYI, R.pt_BR
dc.contributor.advisor1Latteshttp://lattes.cnpq.br/2931270888717344pt_BR
dc.contributor.advisor2RIBEIRO, Márcio de Medeiros.-
dc.contributor.advisor2IDRIBEIRO, Márciopt_BR
dc.contributor.advisor2Latteshttp://lattes.cnpq.br/9300936571715992pt_BR
dc.contributor.referee1MASSONI, Tiago Lima.-
dc.contributor.referee2ALVES, Everton Leandro Galdino.-
dc.contributor.referee3GARCIA, Alessandro Fabricio.-
dc.contributor.referee4TEIXEIRA, Leopoldo Motta.-
dc.description.resumoDesenvolvedores de Application Programming Interfaces (APIs) as implementam e testam com base em documentos comumente especificados em linguagem natural. Entretanto, não se sabe até onde os desenvolvedores que implementam as APIs são capazes de sistematicamente revelar i) especificações indeterminadas; e ii) não conformidades entre suas implementações e a especificação. Este trabalho apresenta uma análise da suíte de testes da API de Reflexão de Java da máquina virtual OpenJDK e resultados de duas surveys para verificar se a especificação influencia no entendimento deles. Neste trabalho, propõe-se uma técnica para detectar especificações indeterminadas e não conformidades entre a especificação e implementações de uma API. A técnica automaticamente gera casos de teste e os executa usando diferentes implementações. Se os resultados forem diferentes, a técnica detecta um candidato a especificação indeterminada ou a uma não conformidade entre a especificação e pelo menos uma implementação da API. Para avaliar a técnica, foi usada a API de Reflexão de Java com 446 programas de entrada. A técnica proposta identificou especificações indeterminadas e candidatos a não conformidades em 32 métodos públicos de sete classes da API de Reflexão de Java. Foram reportados candidatos a especificações indeterminadas em 12 métodos da API de Reflexão de Java. Especificadores da API de Reflexão de Java aceitaram três candidatos a especificação indeterminada (25%). Também foram reportados 24 candidatos a não conformidades para os desenvolvedores da máquina virtual Eclipse OpenJ9 e 7 para a Oracle. Desenvolvedores da Eclipse OpenJ9 aceitaram e corrigiram 21 candidatos (87,5%). Desenvolvedores da Oracle aceitaram cinco e corrigiram quatro candidatos a não conformidades. Doze casos de teste gerados pela técnica proposta neste trabalho fazem parte da suíte de testes da Eclipse OpenJ9. A técnica proposta também foi avaliada usando a API de Collections de Java. A técnica identificou 29 candidatos a especificações indeterminadas e a não conformidades. Foram reportados 5 candidatos a especificação indeterminada para os especificadores da API de Collections de Java. Também foram reportados 9 candidatos a não conformidades na máquina virtual Eclipse OpenJ9 e 4 na Oracle. Desenvolvedores da Oracle aceitaram e corrigiram três candidatos a não conformidades. Desenvolvedores da Eclipse OpenJ9 aceitaram e corrigiram 1 candidato a não conformidade.pt_BR
dc.publisher.countryBrasilpt_BR
dc.publisher.departmentCentro de Engenharia Elétrica e Informática - CEEIpt_BR
dc.publisher.programPÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOpt_BR
dc.publisher.initialsUFCGpt_BR
dc.subject.cnpqCiência da Computaçãopt_BR
dc.titleA technique to test apis specified in natural language.pt_BR
dc.date.issued2020-03-05-
dc.description.abstractDevelopers of widely used Application Programming Interfaces (APIs) implement and test APIs based on a document, which is commonly specified using natural language. How- ever, there is limited knowledge on whether API developers are able to systematically reveal i) underdetermined specifications; and ii) non-conformances between their implementation and the specification. To better understand the problem, we analyze test suites of Java Reflection API, and we conduct two surveys. A survey with 130 developers who use the Java Reflection API, and a survey with 128 C# developers who use and implement the .NET Reflection API to see whether the specification impacts on their understanding. We also propose a technique to detect underdetermined specifications and non-conformances between the specification and the implementations of the APIs. It automatically creates test cases, and executes them using different implementations. It saves objects yielded by methods to be used to create more test cases. If results differ, it detects an underdetermined specification or a non-conformance candidate between the specification and at least one implementation of the API. We evaluate our technique using the Java Reflection API in 446 input programs. Our technique identifies underdetermined specification and non-conformance candidates in 32 Java Reflection API public methods of 7 classes. We report underdetermined specification candidates in 12 Java Reflection API methods. Java Reflection API specifiers accept 3 underdetermined specification candidates (25%). We also report 24 non-conformance candidates to Eclipse OpenJ9 JVM, and 7 to Oracle JVM. Eclipse OpenJ9 JVM developers accept and fix 21 candidates (87.5%), and Oracle JVM developers accept 5 and fix 4 non-conformance candidates. Twelve test cases are now part of the Eclipse OpenJ9 JVM test suite. We also evaluate our technique using the Java Collections API. Even being a very popular Java API, our technique identifies 29 underdetermined specification and non-conformance candidates. Our technique identifies 17 candidates that cannot be detected by popular automatic test suite generators. We report 5 underdetermined specification candidates to the Java Collections API specifiers. We also report 9 non-conformance candidates to Eclipse OpenJ9 JVM, and 4 to Oracle JVM. Oracle JVM developers accept and fix 3 non-conformance candidates. Eclipse OpenJ9 JVM developers accept and fix 1 non-conformance candidate.pt_BR
dc.identifier.urihttp://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/15895-
dc.date.accessioned2020-10-06T09:46:20Z-
dc.date.available2020-10-06-
dc.date.available2020-10-06T09:46:20Z-
dc.typeTesept_BR
dc.subjectEspecificação de requisitospt_BR
dc.subjectRequirements specificationpt_BR
dc.subjectEspecificación de requisitospt_BR
dc.subjectLinguagem naturalpt_BR
dc.subjectLenguaje naturalpt_BR
dc.subjectNatural languagept_BR
dc.subjectNão conformidadept_BR
dc.subjectNon-compliancept_BR
dc.subjectIncumplimientopt_BR
dc.subjectEspecificação incompletapt_BR
dc.subjectEspecificación incompletapt_BR
dc.subjectIncomplete specificationpt_BR
dc.subjectEspecificação ambíguapt_BR
dc.subjectAmbiguous specificationpt_BR
dc.subjectEspecificación ambiguapt_BR
dc.rightsAcesso Abertopt_BR
dc.creatorPONTES, Felipe Barros.-
dc.publisherUniversidade Federal de Campina Grandept_BR
dc.languageporpt_BR
dc.title.alternativeUma técnica para testar apis especificada em linguagem natural.pt_BR
dc.description.sponsorshipCapespt_BR
dc.identifier.citationPONTES, F. B. A technique to test apis specified in natural language. 2020. 95 f. Tese (Doutorado em Ciência da Computação) Programa de 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, 2020. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/15895pt_BR
Appears in Collections:Doutorado em Ciência da Computação.

Files in This Item:
File Description SizeFormat 
FELIPE BARROS PONTES – TESE (PPGCC) 2020.pdfFelipe Barros Pontes - Tese (PPGCC) 2020.1.61 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.