Utilize este identificador para referenciar este registo: https://hdl.handle.net/10316/102213
Título: Evolutionary Robustness Testing of REST services
Outros títulos: Evolutionary Robustness Testing of REST services
Autor: Santos, Carlos Francisco Fernandes
Orientador: Laranjeiro, Carlos Nuno Bizarro e Silva
Lourenço, Nuno António Marques
Palavras-chave: Teste de Software; avaliação de robustez; RESTful APIs; Teste Evolutivo; Algortimos genéticos; Software testing; robustness evaluation; RESTful APIs; Evolutionary Testing; Genetic algorithms
Data: 14-Set-2022
Projeto: info:eu-repo/grantAgreement/EC/H2020/876852/EU
Título da revista, periódico, livro ou evento: Evolutionary Robustness Testing of REST services
Local de edição ou do evento: DEI - FCTUC
Resumo: As 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.
Today'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.
Descrição: Dissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia
URI: https://hdl.handle.net/10316/102213
Direitos: openAccess
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 completo

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