Utilize este identificador para referenciar este registo: https://hdl.handle.net/10316/102213
Campo DCValorIdioma
dc.contributor.advisorLaranjeiro, Carlos Nuno Bizarro e Silva-
dc.contributor.advisorLourenço, Nuno António Marques-
dc.contributor.authorSantos, Carlos Francisco Fernandes-
dc.date.accessioned2022-09-27T22:00:21Z-
dc.date.available2022-09-27T22:00:21Z-
dc.date.issued2022-09-14-
dc.date.submitted2022-09-27-
dc.identifier.urihttps://hdl.handle.net/10316/102213-
dc.descriptionDissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia-
dc.description.abstractAs empresas de atualmente, incluindo Google, Facebook (Meta), Instagram e Twitter, dependem fortemente de serviços baseados em REST. Consequentemente, os serviços web, em particular, estão constantemente expostos a cenários inesperados, que podem ou não levar a falhas no serviço. Fazendo com que a Robustez seja, portanto, uma propriedade essencial dos serviços REST. Robustez é o grau em que um determinado sistema ou componente pode operar corretamente na presença de entradas inválidas ou em condições de stress. Devido ao crescente uso, interconexão e complexidade desses serviços, adquirir garantias sobre a sua robustez tornou-se uma parte importante do seu processo de desenvolvimento. Sendo particularmente essencial, quando esses serviços suportam sistemas críticos, onde uma falha pode ter consequências significativas para o negócio ou mesmo para a vida das pessoas. Enquanto os serviços SOAP, que foram amplamente testados quanto à sua robustez, os serviços REST não passaram pelo mesmo escrutínio. Apesar de seu alargado uso, poucas pesquisas foram feitas sobre o tema. Como resultado, apenas algumas abordagens para testes de caixa-preta de serviços REST surgiram e todas enfrentam o problema de gerar cargas de trabalho de alta qualidade (por exemplo, entradas que permitem uma boa cobertura de código), o que é um desafio aberto e difícil, especialmente do ponto de vista da caixa-preta.Nesta dissertação, apresentamos um mecanismo evolutivo chamado EvoReFuzz para testes de robustez de serviços REST. Embora diversas abordagens tenham sido estudadas e aplicadas a uma ampla gama de problemas, os serviços REST necessitam de novas práticas na geração inteligente de entradas de qualidade e no aprimoramento do processo exaustivo de verificação e validação. No entanto, o potencial do uso da computação evolutiva para este propósito tem sido em grande parte desconsiderado. Portanto, preenchemos esta lacuna ao propor o EvoReFuzz, uma ferramenta que utiliza um algoritmo evolucionário para gerar automaticamente entradas válidas e inválidas apenas com base na descrição da interface OpenAPI e no comportamento externo observado do serviço.Usamos o EvoReFuzz para avaliar 12 serviços diferentes, 11 APIs públicas do mundo real e uma privada. Os resultados experimentais nas APIs públicas demonstram a eficácia e eficiência do EvoReFuzz, onde foram descobertos 28 problemas únicos de robustez nos serviços GitLab e Microsoft Bing Maps.Estes resultados exibem que os serviços REST estão a ser publicados online, com bugs presentes no software. Além disso, os serviços privados também estão incluídos, onde encontramos 4 bugs únicos. Assim, a falta de validação dos parâmetros de entrada é um dos erros de implementação mais comuns, como as más práticas ao descrever as interfaces dos serviços. Em adição, fizemos uma comparação de cobertura de código entre o EvoReFuzz e a ferramenta de teste EvoMaster, na qual ambas as abordagens tiveram um desempenho relativamente próximo.por
dc.description.abstractToday's companies, including Google, Facebook (Meta), Instagram, and Twitter, depend heavily on REST-based services. In this type of environment, these services are highly exposed to unexpected scenarios, which may lead to service failures. Robustness, therefore, is a crucial feature of REST services.Robustness is the degree to which a particular system or component can operate correctly in the presence of invalid input or stressful conditions. Due to these services' increasing use, interconnection, and complexity, acquiring assurances concerning their robustness has become an essential part of their development process. Even more so, when these services support critical systems, where a failure can have significant consequences for the business or even for people's lives. Unlike SOAP services, which have been widely tested for robustness, REST services have not undergone the same scrutiny. Despite its extensive use, little research has been done on the topic. As a result, only a few approaches for black-box testing of REST services have emerged, and all face the problem of generating high-quality workloads (e.g., inputs that allow good code coverage), which is an open and difficult challenge, especially from a black-box perspective. In this dissertation, we present an evolutionary mechanism called EvoReFuzz for robustness testing of REST services. Although several approaches and software testing tools have been studied and applied to a wide range of problems, REST services need new practices in the intelligent generation of quality inputs and the improvement of the exhaustive process of verification and validation. Also, the potential of using evolutionary computation for this purpose has been mostly disregarded. Therefore, we fill in this gap by proposing EvoReFuzz, a tool that uses an evolutionary algorithm to automatically generate valid and invalid inputs solely based on the OpenAPI interface description and the observed external behavior of the service.We used EvoReFuzz to evaluate 12 different services, 11 public real-world APIs, and one private. The experimental results on the 11 real-world RESTful APIs demonstrate the effectiveness and efficiency of EvoReFuzz, where we were able to disclose 28 unique robustness problems in the GitLab and Microsoft Bing Maps services, such as Run Time errors. These results depict that REST services are being deployed online, holding software bugs. In addition, the lack of parameter validation is one of the most common implementation errors, and flawed practices while specifying the OpenAPI files are widespread.Private services are also included in this group, where we could find four different bugs and bad implementation practices in an implemented API for a framework. Moreover, we made a code coverage comparison between EvoReFuzz and the state-of-the-art testing tool EvoMaster, in which both approaches had a relatively close performance.eng
dc.description.sponsorshipH2020-
dc.language.isoeng-
dc.relationinfo:eu-repo/grantAgreement/EC/H2020/876852/EU-
dc.rightsopenAccess-
dc.rights.urihttp://creativecommons.org/licenses/by-nc-sa/4.0/-
dc.subjectTeste de Softwarepor
dc.subjectavaliação de robustezpor
dc.subjectRESTful APIspor
dc.subjectTeste Evolutivopor
dc.subjectAlgortimos genéticospor
dc.subjectSoftware testingeng
dc.subjectrobustness evaluationeng
dc.subjectRESTful APIseng
dc.subjectEvolutionary Testingeng
dc.subjectGenetic algorithmseng
dc.titleEvolutionary Robustness Testing of REST serviceseng
dc.title.alternativeEvolutionary Robustness Testing of REST servicespor
dc.typemasterThesis-
degois.publication.locationDEI - FCTUC-
degois.publication.titleEvolutionary Robustness Testing of REST serviceseng
dc.peerreviewedyes-
dc.identifier.tid203062086-
thesis.degree.disciplineInformática-
thesis.degree.grantorUniversidade de Coimbra-
thesis.degree.level1-
thesis.degree.nameMestrado em Engenharia Informática-
uc.degree.grantorUnitFaculdade de Ciências e Tecnologia - Departamento de Engenharia Informática-
uc.degree.grantorID0500-
uc.contributor.authorSantos, Carlos Francisco Fernandes::0000-0001-6278-7791-
uc.degree.classification17-
uc.degree.presidentejuriCunha, Paulo José Osório Rupino da-
uc.degree.elementojuriLaranjeiro, Carlos Nuno Bizarro e Silva-
uc.degree.elementojuriCorreia, João Nuno Gonçalves Costa Cavaleiro-
uc.contributor.advisorLaranjeiro, Carlos Nuno Bizarro e Silva::0000-0003-0011-9901-
uc.contributor.advisorLourenço, Nuno António Marques::0000-0002-2154-0642-
item.openairetypemasterThesis-
item.fulltextCom Texto completo-
item.languageiso639-1en-
item.grantfulltextopen-
item.cerifentitytypePublications-
item.openairecristypehttp://purl.org/coar/resource_type/c_18cf-
Aparece nas coleções:UC - Dissertações de Mestrado
Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato
MSc_Carlos_Santos_final_V6.pdf1.91 MBAdobe PDFVer/Abrir
Mostrar registo em formato simples

Visualizações de página

241
Visto em 16/jul/2024

Downloads

310
Visto em 16/jul/2024

Google ScholarTM

Verificar


Este registo está protegido por Licença Creative Commons Creative Commons