A robustness testing approach for RESTful Web Services
Autor(a) principal: | |
---|---|
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 |