A technique to test apis specified in natural language.
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Tipo de documento: | Tese |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da UFCG |
Texto Completo: | http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/15895 |
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. |
id |
UFCG_062f1d09663d18b44fb6e06450029952 |
---|---|
oai_identifier_str |
oai:localhost:riufcg/15895 |
network_acronym_str |
UFCG |
network_name_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
repository_id_str |
4851 |
spelling |
A technique to test apis specified in natural language.Uma técnica para testar apis especificada em linguagem natural.Especificação de requisitosRequirements specificationEspecificación de requisitosLinguagem naturalLenguaje naturalNatural languageNão conformidadeNon-complianceIncumplimientoEspecificação incompletaEspecificación incompletaIncomplete specificationEspecificação ambíguaAmbiguous specificationEspecificación ambiguaCiência da ComputaçãoDesenvolvedores 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.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.CapesUniversidade Federal de Campina GrandeBrasilCentro de Engenharia Elétrica e Informática - CEEIPÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGGHEYI, Rohit.GHEYI, R.http://lattes.cnpq.br/2931270888717344RIBEIRO, Márcio de Medeiros.RIBEIRO, Márciohttp://lattes.cnpq.br/9300936571715992MASSONI, Tiago Lima.ALVES, Everton Leandro Galdino.GARCIA, Alessandro Fabricio.TEIXEIRA, Leopoldo Motta.PONTES, Felipe Barros.2020-03-052020-10-06T09:46:20Z2020-10-062020-10-06T09:46:20Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesishttp://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/15895PONTES, 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/15895porinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCG2022-03-16T19:50:49Zoai:localhost:riufcg/15895Biblioteca 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:48512022-03-16T19:50:49Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false |
dc.title.none.fl_str_mv |
A technique to test apis specified in natural language. Uma técnica para testar apis especificada em linguagem natural. |
title |
A technique to test apis specified in natural language. |
spellingShingle |
A technique to test apis specified in natural language. PONTES, Felipe Barros. Especificação de requisitos Requirements specification Especificación de requisitos Linguagem natural Lenguaje natural Natural language Não conformidade Non-compliance Incumplimiento Especificação incompleta Especificación incompleta Incomplete specification Especificação ambígua Ambiguous specification Especificación ambigua Ciência da Computação |
title_short |
A technique to test apis specified in natural language. |
title_full |
A technique to test apis specified in natural language. |
title_fullStr |
A technique to test apis specified in natural language. |
title_full_unstemmed |
A technique to test apis specified in natural language. |
title_sort |
A technique to test apis specified in natural language. |
author |
PONTES, Felipe Barros. |
author_facet |
PONTES, Felipe Barros. |
author_role |
author |
dc.contributor.none.fl_str_mv |
GHEYI, Rohit. GHEYI, R. http://lattes.cnpq.br/2931270888717344 RIBEIRO, Márcio de Medeiros. RIBEIRO, Márcio http://lattes.cnpq.br/9300936571715992 MASSONI, Tiago Lima. ALVES, Everton Leandro Galdino. GARCIA, Alessandro Fabricio. TEIXEIRA, Leopoldo Motta. |
dc.contributor.author.fl_str_mv |
PONTES, Felipe Barros. |
dc.subject.por.fl_str_mv |
Especificação de requisitos Requirements specification Especificación de requisitos Linguagem natural Lenguaje natural Natural language Não conformidade Non-compliance Incumplimiento Especificação incompleta Especificación incompleta Incomplete specification Especificação ambígua Ambiguous specification Especificación ambigua Ciência da Computação |
topic |
Especificação de requisitos Requirements specification Especificación de requisitos Linguagem natural Lenguaje natural Natural language Não conformidade Non-compliance Incumplimiento Especificação incompleta Especificación incompleta Incomplete specification Especificação ambígua Ambiguous specification Especificación ambigua Ciência da Computação |
description |
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. |
publishDate |
2020 |
dc.date.none.fl_str_mv |
2020-03-05 2020-10-06T09:46:20Z 2020-10-06 2020-10-06T09:46:20Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/15895 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 |
url |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/15895 |
identifier_str_mv |
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 |
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 Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
publisher.none.fl_str_mv |
Universidade Federal de Campina Grande Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
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 |
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_ |
1809744468112310272 |