DSpace/Manakin Repository

A technique to test apis specified in natural language.

Mostrar registro simples

dc.creator.ID PONTES, F. B. pt_BR
dc.creator.Lattes http://lattes.cnpq.br/2757376642187399 pt_BR
dc.contributor.advisor1 GHEYI, Rohit.
dc.contributor.advisor1ID GHEYI, R. pt_BR
dc.contributor.advisor1Lattes http://lattes.cnpq.br/2931270888717344 pt_BR
dc.contributor.advisor2 RIBEIRO, Márcio de Medeiros.
dc.contributor.advisor2ID RIBEIRO, Márcio pt_BR
dc.contributor.advisor2Lattes http://lattes.cnpq.br/9300936571715992 pt_BR
dc.contributor.referee1 MASSONI, Tiago Lima.
dc.contributor.referee2 ALVES, Everton Leandro Galdino.
dc.contributor.referee3 GARCIA, Alessandro Fabricio.
dc.contributor.referee4 TEIXEIRA, Leopoldo Motta.
dc.description.resumo Desenvolvedores 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.country Brasil pt_BR
dc.publisher.department Centro de Engenharia Elétrica e Informática - CEEI pt_BR
dc.publisher.program PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO pt_BR
dc.publisher.initials UFCG pt_BR
dc.subject.cnpq Ciência da Computação pt_BR
dc.title A technique to test apis specified in natural language. pt_BR
dc.date.issued 2020-03-05
dc.description.abstract Developers 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.uri http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/15895
dc.date.accessioned 2020-10-06T09:46:20Z
dc.date.available 2020-10-06
dc.date.available 2020-10-06T09:46:20Z
dc.type Tese pt_BR
dc.subject Especificação de requisitos pt_BR
dc.subject Requirements specification pt_BR
dc.subject Especificación de requisitos pt_BR
dc.subject Linguagem natural pt_BR
dc.subject Lenguaje natural pt_BR
dc.subject Natural language pt_BR
dc.subject Não conformidade pt_BR
dc.subject Non-compliance pt_BR
dc.subject Incumplimiento pt_BR
dc.subject Especificação incompleta pt_BR
dc.subject Especificación incompleta pt_BR
dc.subject Incomplete specification pt_BR
dc.subject Especificação ambígua pt_BR
dc.subject Ambiguous specification pt_BR
dc.subject Especificación ambigua pt_BR
dc.rights Acesso Aberto pt_BR
dc.creator PONTES, Felipe Barros.
dc.publisher Universidade Federal de Campina Grande pt_BR
dc.language por pt_BR
dc.title.alternative Uma técnica para testar apis especificada em linguagem natural. pt_BR
dc.description.sponsorship Capes pt_BR
dc.identifier.citation PONTES, 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/15895 pt_BR


Arquivos deste item

Este item aparece na(s) seguinte(s) coleção(s)

Mostrar registro simples

Buscar DSpace


Busca avançada

Navegar

Minha conta