Please use this identifier to cite or link to this item: https://hdl.handle.net/10316/92292
Title: A robustness testing approach for RESTful Web Services
Other Titles: Uma abordagem para testes de robustez em Serviços Web RESTful
Authors: Agnelo, João André Nunes
Orientador: Laranjeiro, Carlos Nuno Bizarro e Silva
Teixeira, César Alexandre Domingues
Keywords: Avaliação de robustez; Testes de software; Robustez de software; Serviços web RESTful; API REST; Software testing; Software robustness; Robustness evaluation; RESTful web services; REST API
Issue Date: 18-Sep-2020
Serial title, monograph or event: A robustness testing approach for RESTful Web Services
Place of publication or event: CISUC, DEI
Abstract: Robustez é o grau com que um certo sistema ou componente pode operar corretamente na presença de entradas inválidas ou condições de stress. Com o aumento da complexidade e o uso alargado de sistemas de software, obter garantias quanto à sua robustez tornou-se uma tarefa essencial. Isto é especialmente verdade nos sistemas críticos (quanto à sua missão ou ao seu objetivo de negócio) onde uma falha pode ter consequências graves no negócio ou em vidas humanas. Os serviços web, em particular, são frequentemente expostos a entradas inesperadas ou maliciosas que podem levar a problemas graves, tais como perda de dados e divulgação de informação. A maioria das empresas web modernas, incluindo a Google, o Instagram, o Spotify e o Slack, são suportadas por serviços REST (também conhecidos como APIs REST), um tipo de sistema de software que segue o estilo arquitetural REST. Neste tipo de cenários, a heterogeneidade é dominante e o software é, por vezes, exposto a condições inesperadas que poderão ativar bugs residuais, levando à falha do serviço, o que poderá resultar em perdas financeiras ou de reputação (e.g., divulgação de informação). A robustez é, como tal, uma propriedade essencial em serviços REST. Nesta tese, apresentamos uma revisão sistemática da literatura sobre testes de robustez em software, e uma abordagem e uma ferramenta (bBOXRT) para a execução de testes de robustez em serviços REST. Começamos por realizar uma análise exaustiva, sob a forma de uma revisão sistemática da literatura, do estado da arte sobre testes de robustez em software, que complementamos com uma visão geral do trabalho relacionado sobre testes em APIs REST. Isto permite-nos mostrar que, embora várias técnicas e ferramentas para avaliação de robustez já tenham sido estudadas em detalhe e aplicadas a uma grande variedade de domínios, os serviços REST ainda necessitam de abordagens práticas especializadas na avaliação de robustez. Propomos preencher esta lacuna com a bBOXRT, uma ferramenta para testar a robustez de serviços REST que necessita apenas de uma pequena fração da informação presente nas suas descrições de interface. A bBOXRT foi usada para avaliar um conjunto heterogéneo de 52 serviços REST que englobam 1351 operações e se inserem em diferentes categorias (e.g., públicos, privados, \textit{in-house}). Com esta avaliação, conseguimos revelar vários tipos de problemas de robustez, incluindo problemas em serviços com elevada necessidade de confiabilidade e também algumas vulnerabilidades de segurança. Os resultados mostram que os serviços REST estão a ser postos em operação online contendo ainda defeitos de software que prejudicam a sua integração, e também apresentam vulnerabilidades de segurança que podem ser exploradas por utilizadores maliciosos.
Robustness is the degree to which a certain system or component can operate correctly in the presence of invalid inputs or stressful environmental conditions. With the increasing complexity and wide-spread use of software systems, obtaining assurances regarding their robustness has become of vital importance. This is especially true in mission- or business-critical systems where a failure may have severe consequences on the business or in human lives. Web services, in particular, are often exposed to abnormal and malicious input that could lead to serious issues, such as loss of data and information disclosure. Most modern web companies, including Google, Instagram, Spotify and Slack, are supported by REST services (also known as REST APIs), a type of software system that follows the relatively loose REST architectural style. In this type of scenarios, heterogeneity is prevalent and software is sometimes exposed to unexpected conditions that may activate residual bugs, leading service operations to fail, which may result in financial or reputation losses (e.g., information disclosure). Robustness is, therefore, a key property in REST services. In this dissertation, we present a systematic literature review on software robustness testing, and an approach and tool (named bBOXRT) for performing robustness tests over REST services. We begin by performing a comprehensive analysis, in the form of a systematic literature review, of the state of the art on software robustness testing, which we complement with an overview of the related work on REST API testing. This allows us to show that multiple techniques and tools for robustness assessment have been thoroughly studied and applied to a large diversity of domains, but REST services still lack practical approaches that specialize in robustness evaluation. We fill-in this gap by proposing bBOXRT, a tool for testing the robustness of REST services solely based on minimal information present in their interface descriptions. We used bBOXRT to evaluate an heterogeneous set of 52 REST services that comprise 1351 operations and fit in distinct categories (e.g., public, private, in-house). We were able to disclose several different types of robustness problems, including issues in services with strong reliability requirements and also a few security vulnerabilities. The results show that REST services are being deployed online holding software defects that harm service integration, and also carrying security vulnerabilities that can be exploited by malicious users.
Description: Dissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia
URI: https://hdl.handle.net/10316/92292
Rights: openAccess
Appears in Collections:UC - Dissertações de Mestrado

Files in This Item:
File Description SizeFormat
MSc Thesis - João Agnelo.pdf6.26 MBAdobe PDFView/Open
Show full item record

Page view(s)

301
checked on Apr 17, 2024

Download(s)

552
checked on Apr 17, 2024

Google ScholarTM

Check


This item is licensed under a Creative Commons License Creative Commons