A robustness testing approach for RESTful Web Services

Detalhes bibliográficos
Autor(a) principal: Agnelo, João André Nunes
Data de Publicação: 2020
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: http://hdl.handle.net/10316/92292
Resumo: Dissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia
id RCAP_bb3b1a6f20730825b3a4fb07ffcbbad3
oai_identifier_str oai:estudogeral.uc.pt:10316/92292
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling A robustness testing approach for RESTful Web ServicesUma abordagem para testes de robustez em Serviços Web RESTfulAvaliação de robustezTestes de softwareRobustez de softwareServiços web RESTfulAPI RESTSoftware testingSoftware robustnessRobustness evaluationRESTful web servicesREST APIDissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e TecnologiaRobustez é 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.Outro - Parcialmente financiado por: Programa Horizon 2020, sob a bolsa Marie Sklodowska-Curie no. 823788 (projecto ADVANCE); Projecto METRICS, financiado pela Fundação para a Ciência e a Tecnologia (FCT) – bolsa no. POCI-01-0145-FEDER-032504; Projecto MobiWise: From mobile sensing to mobility advising (P2020 SAICTPAC/0011/2015), cofinanciado pelo COMPETE 2020, Portugal 2020 - Programa Operacional Competitividade e Internacionalização (POCI), pelo Fundo Europeu de Desenvolvimento Regional (FEDER), e pela Fundação para a Ciência e a Tecnologia (FCT); Projecto TalkConnect “Voice Architecture over Distributed Network” (referência: POCI-01-0247-FEDER-039676), cofinanciado pelo Fundo Europeu de Desenvolvimento Regional (FEDER), através do Portugal 2020 (PT2020), e pelo Programa Operacional Competitividade e Internacionalização (COMPETE 2020).2020-09-18info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttp://hdl.handle.net/10316/92292http://hdl.handle.net/10316/92292TID:202553825engAgnelo, João André Nunesinfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2022-05-25T05:13:03Zoai:estudogeral.uc.pt:10316/92292Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T21:11:25.496584Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv A robustness testing approach for RESTful Web Services
Uma abordagem para testes de robustez em Serviços Web RESTful
title A robustness testing approach for RESTful Web Services
spellingShingle A robustness testing approach for RESTful Web Services
Agnelo, João André Nunes
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
title_short A robustness testing approach for RESTful Web Services
title_full A robustness testing approach for RESTful Web Services
title_fullStr A robustness testing approach for RESTful Web Services
title_full_unstemmed A robustness testing approach for RESTful Web Services
title_sort A robustness testing approach for RESTful Web Services
author Agnelo, João André Nunes
author_facet Agnelo, João André Nunes
author_role author
dc.contributor.author.fl_str_mv Agnelo, João André Nunes
dc.subject.por.fl_str_mv 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
topic 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
description Dissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia
publishDate 2020
dc.date.none.fl_str_mv 2020-09-18
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10316/92292
http://hdl.handle.net/10316/92292
TID:202553825
url http://hdl.handle.net/10316/92292
identifier_str_mv TID:202553825
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799134011115700224