Mutação de transformações para teste de programas Spark
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Tipo de documento: | Tese |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFRN |
Texto Completo: | https://repositorio.ufrn.br/handle/123456789/30646 |
Resumo: | O crescimento do volume de dados gerado, sua produção contínua e em larga escala e sua heterogeneidade levaram ao desenvolvimento do conceito de Big Data. A coleta, armazenamento e, sobretudo, processamento deste grande volume de dados exigem importantes recursos computacionais e ambientes de execução adaptados. Diferentes sistemas de pro- cessamento paralelo e distribuído são utilizados para o processamento de Big Data. Alguns sistemas adotam um modelo de fluxo de controle, como o sistema Hadoop que aplica o modelo MapReduce, e outros adotam um modelo de fluxo de dados, como o Apache Spark. A confiabilidade de programas de processamento de grandes volumes de dados se torna importante devido à grande quantidade de recursos computacionais necessários para sua execução. Por isso, é importantes testar esses programas antes que eles sejam executados em produção em uma infraestrutura custosa de computação distribuída. O teste de pro- gramas de processamento de Big Data tem ganhado interesse nos últimos anos, mas a área ainda possui poucos trabalhos que abordam o teste funcional desse tipo de programa e em sua maioria abordam apenas o teste de programas MapReduce. Esta tese de doutorado visa reduzir a lacuna existente na área ao propor uma abordagem de teste de mutação para programas que seguem um modelo de fluxo de dados. O teste de mutação é uma técnica de teste que se baseia na simulação de defeitos através de modificações no programa para criar versões defeituosas chamadas mutantes. A geração dos mutantes é realizada por operadores de mutação que são capazes de simular defeitos específicos no programa. Mutantes são utilizados no processo de projeto e avaliação de testes de modo a ter um conjunto de testes capaz de identificar os defeitos simulados pelos mutantes. Para aplicar o processo de teste de mutação em programas de processamento de Big Data, é importante ter conhecimento dos tipos de defeitos que podem ser encontrados nesse contexto para, então, projetar operadores de mutação que possam simulá-los. Com base nisso, realizamos um estudo para caracterizar defeitos e problemas que podem surgir em programas Spark. Esse estudo resultou em duas taxonomias. A primeira taxonomia agrupa e caracteriza problemas não-funcionais que afetam o desempenho de execução de programas Spark. A segunda taxonomia é focada em defeitos funcionais que afetam o comportamento de pro- gramas Spark. Com base na taxonomia de defeitos funcionais, projetamos um conjunto de operadores de mutação para programas que seguem um modelo de fluxo de dados. Esses operadores simulam defeitos no programa através de mudanças no seu fluxo de dados e nas suas operações. Os operadores de mutação foram formalizados com um modelo que propomos para representar programas de processamento de dados baseados em fluxo de dados. Para dar suporte a aplicação dos nossos operadores de mutação, desenvolvemos a ferramenta TRANSMUT-Spark que automatiza as principais etapas do processo de teste de mutação em programas Spark. Realizamos experimentos para avaliar os opera- dores de mutação e ferramenta em termos de custos e efetividade. Os resultados desses experimentos mostraram a viabilidade da aplicação do processo de teste de mutação em programas Spark e sua contribuição no processo de teste com o intuito de desenvolver programas mais confiáveis. |
id |
UFRN_ca6b324573daeea542a3405a6678e051 |
---|---|
oai_identifier_str |
oai:https://repositorio.ufrn.br:123456789/30646 |
network_acronym_str |
UFRN |
network_name_str |
Repositório Institucional da UFRN |
repository_id_str |
|
spelling |
Souza Neto, João Batista deMoreira, Anamaria MartinsVargas-solar, GenovevaAquino Junior, Gibeon Soares deSouza Neto, Placido Antonio deVergílio, Silvia ReginaCosta, Umberto Souza daMusicante, Martin Alejandro2020-11-24T13:01:35Z2020-11-24T13:01:35Z2020-07-31SOUZA NETO, João Batista de. Mutação de transformações para teste de programas Spark. 2020. 231f. Tese (Doutorado em Ciência da Computação) - Centro de Ciências Exatas e da Terra, Universidade Federal do Rio Grande do Norte, Natal, 2020.https://repositorio.ufrn.br/handle/123456789/30646O crescimento do volume de dados gerado, sua produção contínua e em larga escala e sua heterogeneidade levaram ao desenvolvimento do conceito de Big Data. A coleta, armazenamento e, sobretudo, processamento deste grande volume de dados exigem importantes recursos computacionais e ambientes de execução adaptados. Diferentes sistemas de pro- cessamento paralelo e distribuído são utilizados para o processamento de Big Data. Alguns sistemas adotam um modelo de fluxo de controle, como o sistema Hadoop que aplica o modelo MapReduce, e outros adotam um modelo de fluxo de dados, como o Apache Spark. A confiabilidade de programas de processamento de grandes volumes de dados se torna importante devido à grande quantidade de recursos computacionais necessários para sua execução. Por isso, é importantes testar esses programas antes que eles sejam executados em produção em uma infraestrutura custosa de computação distribuída. O teste de pro- gramas de processamento de Big Data tem ganhado interesse nos últimos anos, mas a área ainda possui poucos trabalhos que abordam o teste funcional desse tipo de programa e em sua maioria abordam apenas o teste de programas MapReduce. Esta tese de doutorado visa reduzir a lacuna existente na área ao propor uma abordagem de teste de mutação para programas que seguem um modelo de fluxo de dados. O teste de mutação é uma técnica de teste que se baseia na simulação de defeitos através de modificações no programa para criar versões defeituosas chamadas mutantes. A geração dos mutantes é realizada por operadores de mutação que são capazes de simular defeitos específicos no programa. Mutantes são utilizados no processo de projeto e avaliação de testes de modo a ter um conjunto de testes capaz de identificar os defeitos simulados pelos mutantes. Para aplicar o processo de teste de mutação em programas de processamento de Big Data, é importante ter conhecimento dos tipos de defeitos que podem ser encontrados nesse contexto para, então, projetar operadores de mutação que possam simulá-los. Com base nisso, realizamos um estudo para caracterizar defeitos e problemas que podem surgir em programas Spark. Esse estudo resultou em duas taxonomias. A primeira taxonomia agrupa e caracteriza problemas não-funcionais que afetam o desempenho de execução de programas Spark. A segunda taxonomia é focada em defeitos funcionais que afetam o comportamento de pro- gramas Spark. Com base na taxonomia de defeitos funcionais, projetamos um conjunto de operadores de mutação para programas que seguem um modelo de fluxo de dados. Esses operadores simulam defeitos no programa através de mudanças no seu fluxo de dados e nas suas operações. Os operadores de mutação foram formalizados com um modelo que propomos para representar programas de processamento de dados baseados em fluxo de dados. Para dar suporte a aplicação dos nossos operadores de mutação, desenvolvemos a ferramenta TRANSMUT-Spark que automatiza as principais etapas do processo de teste de mutação em programas Spark. Realizamos experimentos para avaliar os opera- dores de mutação e ferramenta em termos de custos e efetividade. Os resultados desses experimentos mostraram a viabilidade da aplicação do processo de teste de mutação em programas Spark e sua contribuição no processo de teste com o intuito de desenvolver programas mais confiáveis.The growth in the volume of data generated in the last years, a phenomenon known as Big Data, presented a series of challenges for its collection, storage and, especially, processing because they require important computational resources and adapted execution environments. Different parallel and distributed processing systems are used for Big Data processing. Some systems adopt a control flow model, such as Hadoop, that applies the MapReduce programming style, while others adopt a data flow model, such as Apache Spark. The reliability of large-scale data processing programs becomes important due to the large amount of computational resources required for their execution, making it important to test them before they run in production in an expensive distributed computing infrastructure. This thesis proposes a mutation testing approach for programs that follow a data flow model like Apache Spark. Mutation testing is a testing technique that relies on simulating faults by modifying a program to create faulty versions called mutants. The generation of mutants is carried by mutation operators that are able to simulate specific faults in the program. Mutants are used in the test design and evaluation process in order to have a test set capable of identifying the faults simulated by the mutants. In order to apply the mutation testing process to Big Data processing programs, it is important to be aware of the types of faults that can be found in this context to design mutation operators that can simulate them. Thus, we conducted a study to characterize faults and problems that can appear in Spark programs. Based on this study, we designed a set of mutation operators for programs that follow a data flow model. These operators simulate faults in the program through changes in its data flow and operations. The mutation operators were formalized with a model we propose to represent data processing programs based on data flow. To support the application of our mutation operators, we developed the tool TRANSMUT-Spark that automates the main steps of the mutation testing process in Spark programs. We conducted experiments to evaluate the mutation operators and tool in terms of costs and effectiveness. The results of these experiments showed the feasibility of applying the mutation testing process in Spark programs and their contribution to the testing process in order to develop more reliable programsUniversidade Federal do Rio Grande do NortePROGRAMA DE PÓS-GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃOUFRNBrasilBig Data; Teste de Mutação; Apache Spark; Taxonomia; Operadores de Mutação.Mutation OperatorsMutation TestingTransmut SparkMutação de transformações para teste de programas Sparkinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFRNinstname:Universidade Federal do Rio Grande do Norte (UFRN)instacron:UFRNORIGINALJoaoBatistaDeSouzaNeto_TESE.pdfapplication/pdf4747108https://repositorio.ufrn.br/bitstream/123456789/30646/1/JoaoBatistaDeSouzaNeto_TESE.pdf0b6154df091d5ddca9d6770e60028de1MD51TEXTJoaoBatistaDeSouzaNeto_TESE.pdf.txtJoaoBatistaDeSouzaNeto_TESE.pdf.txtExtracted texttext/plain637140https://repositorio.ufrn.br/bitstream/123456789/30646/2/JoaoBatistaDeSouzaNeto_TESE.pdf.txtdd718cf61d3ab998c4e48a0b3074fe05MD52THUMBNAILJoaoBatistaDeSouzaNeto_TESE.pdf.jpgJoaoBatistaDeSouzaNeto_TESE.pdf.jpgGenerated Thumbnailimage/jpeg1177https://repositorio.ufrn.br/bitstream/123456789/30646/3/JoaoBatistaDeSouzaNeto_TESE.pdf.jpge2ffa7eebe8f77a1bf69ad2c3b1f3919MD53123456789/306462020-11-29 04:44:45.897oai:https://repositorio.ufrn.br:123456789/30646Repositório de PublicaçõesPUBhttp://repositorio.ufrn.br/oai/opendoar:2020-11-29T07:44:45Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN)false |
dc.title.pt_BR.fl_str_mv |
Mutação de transformações para teste de programas Spark |
title |
Mutação de transformações para teste de programas Spark |
spellingShingle |
Mutação de transformações para teste de programas Spark Souza Neto, João Batista de Big Data; Teste de Mutação; Apache Spark; Taxonomia; Operadores de Mutação. Mutation Operators Mutation Testing Transmut Spark |
title_short |
Mutação de transformações para teste de programas Spark |
title_full |
Mutação de transformações para teste de programas Spark |
title_fullStr |
Mutação de transformações para teste de programas Spark |
title_full_unstemmed |
Mutação de transformações para teste de programas Spark |
title_sort |
Mutação de transformações para teste de programas Spark |
author |
Souza Neto, João Batista de |
author_facet |
Souza Neto, João Batista de |
author_role |
author |
dc.contributor.authorID.pt_BR.fl_str_mv |
|
dc.contributor.advisorID.pt_BR.fl_str_mv |
|
dc.contributor.advisor-co1ID.pt_BR.fl_str_mv |
|
dc.contributor.referees1.none.fl_str_mv |
Vargas-solar, Genoveva |
dc.contributor.referees1ID.pt_BR.fl_str_mv |
|
dc.contributor.referees2.none.fl_str_mv |
Aquino Junior, Gibeon Soares de |
dc.contributor.referees2ID.pt_BR.fl_str_mv |
|
dc.contributor.referees3.none.fl_str_mv |
Souza Neto, Placido Antonio de |
dc.contributor.referees3ID.pt_BR.fl_str_mv |
|
dc.contributor.referees4.none.fl_str_mv |
Vergílio, Silvia Regina |
dc.contributor.referees4ID.pt_BR.fl_str_mv |
|
dc.contributor.referees5.none.fl_str_mv |
Costa, Umberto Souza da |
dc.contributor.referees5ID.pt_BR.fl_str_mv |
|
dc.contributor.author.fl_str_mv |
Souza Neto, João Batista de |
dc.contributor.advisor-co1.fl_str_mv |
Moreira, Anamaria Martins |
dc.contributor.advisor1.fl_str_mv |
Musicante, Martin Alejandro |
contributor_str_mv |
Moreira, Anamaria Martins Musicante, Martin Alejandro |
dc.subject.por.fl_str_mv |
Big Data; Teste de Mutação; Apache Spark; Taxonomia; Operadores de Mutação. Mutation Operators Mutation Testing Transmut Spark |
topic |
Big Data; Teste de Mutação; Apache Spark; Taxonomia; Operadores de Mutação. Mutation Operators Mutation Testing Transmut Spark |
description |
O crescimento do volume de dados gerado, sua produção contínua e em larga escala e sua heterogeneidade levaram ao desenvolvimento do conceito de Big Data. A coleta, armazenamento e, sobretudo, processamento deste grande volume de dados exigem importantes recursos computacionais e ambientes de execução adaptados. Diferentes sistemas de pro- cessamento paralelo e distribuído são utilizados para o processamento de Big Data. Alguns sistemas adotam um modelo de fluxo de controle, como o sistema Hadoop que aplica o modelo MapReduce, e outros adotam um modelo de fluxo de dados, como o Apache Spark. A confiabilidade de programas de processamento de grandes volumes de dados se torna importante devido à grande quantidade de recursos computacionais necessários para sua execução. Por isso, é importantes testar esses programas antes que eles sejam executados em produção em uma infraestrutura custosa de computação distribuída. O teste de pro- gramas de processamento de Big Data tem ganhado interesse nos últimos anos, mas a área ainda possui poucos trabalhos que abordam o teste funcional desse tipo de programa e em sua maioria abordam apenas o teste de programas MapReduce. Esta tese de doutorado visa reduzir a lacuna existente na área ao propor uma abordagem de teste de mutação para programas que seguem um modelo de fluxo de dados. O teste de mutação é uma técnica de teste que se baseia na simulação de defeitos através de modificações no programa para criar versões defeituosas chamadas mutantes. A geração dos mutantes é realizada por operadores de mutação que são capazes de simular defeitos específicos no programa. Mutantes são utilizados no processo de projeto e avaliação de testes de modo a ter um conjunto de testes capaz de identificar os defeitos simulados pelos mutantes. Para aplicar o processo de teste de mutação em programas de processamento de Big Data, é importante ter conhecimento dos tipos de defeitos que podem ser encontrados nesse contexto para, então, projetar operadores de mutação que possam simulá-los. Com base nisso, realizamos um estudo para caracterizar defeitos e problemas que podem surgir em programas Spark. Esse estudo resultou em duas taxonomias. A primeira taxonomia agrupa e caracteriza problemas não-funcionais que afetam o desempenho de execução de programas Spark. A segunda taxonomia é focada em defeitos funcionais que afetam o comportamento de pro- gramas Spark. Com base na taxonomia de defeitos funcionais, projetamos um conjunto de operadores de mutação para programas que seguem um modelo de fluxo de dados. Esses operadores simulam defeitos no programa através de mudanças no seu fluxo de dados e nas suas operações. Os operadores de mutação foram formalizados com um modelo que propomos para representar programas de processamento de dados baseados em fluxo de dados. Para dar suporte a aplicação dos nossos operadores de mutação, desenvolvemos a ferramenta TRANSMUT-Spark que automatiza as principais etapas do processo de teste de mutação em programas Spark. Realizamos experimentos para avaliar os opera- dores de mutação e ferramenta em termos de custos e efetividade. Os resultados desses experimentos mostraram a viabilidade da aplicação do processo de teste de mutação em programas Spark e sua contribuição no processo de teste com o intuito de desenvolver programas mais confiáveis. |
publishDate |
2020 |
dc.date.accessioned.fl_str_mv |
2020-11-24T13:01:35Z |
dc.date.available.fl_str_mv |
2020-11-24T13:01:35Z |
dc.date.issued.fl_str_mv |
2020-07-31 |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.citation.fl_str_mv |
SOUZA NETO, João Batista de. Mutação de transformações para teste de programas Spark. 2020. 231f. Tese (Doutorado em Ciência da Computação) - Centro de Ciências Exatas e da Terra, Universidade Federal do Rio Grande do Norte, Natal, 2020. |
dc.identifier.uri.fl_str_mv |
https://repositorio.ufrn.br/handle/123456789/30646 |
identifier_str_mv |
SOUZA NETO, João Batista de. Mutação de transformações para teste de programas Spark. 2020. 231f. Tese (Doutorado em Ciência da Computação) - Centro de Ciências Exatas e da Terra, Universidade Federal do Rio Grande do Norte, Natal, 2020. |
url |
https://repositorio.ufrn.br/handle/123456789/30646 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
Universidade Federal do Rio Grande do Norte |
dc.publisher.program.fl_str_mv |
PROGRAMA DE PÓS-GRADUAÇÃO EM SISTEMAS E COMPUTAÇÃO |
dc.publisher.initials.fl_str_mv |
UFRN |
dc.publisher.country.fl_str_mv |
Brasil |
publisher.none.fl_str_mv |
Universidade Federal do Rio Grande do Norte |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFRN instname:Universidade Federal do Rio Grande do Norte (UFRN) instacron:UFRN |
instname_str |
Universidade Federal do Rio Grande do Norte (UFRN) |
instacron_str |
UFRN |
institution |
UFRN |
reponame_str |
Repositório Institucional da UFRN |
collection |
Repositório Institucional da UFRN |
bitstream.url.fl_str_mv |
https://repositorio.ufrn.br/bitstream/123456789/30646/1/JoaoBatistaDeSouzaNeto_TESE.pdf https://repositorio.ufrn.br/bitstream/123456789/30646/2/JoaoBatistaDeSouzaNeto_TESE.pdf.txt https://repositorio.ufrn.br/bitstream/123456789/30646/3/JoaoBatistaDeSouzaNeto_TESE.pdf.jpg |
bitstream.checksum.fl_str_mv |
0b6154df091d5ddca9d6770e60028de1 dd718cf61d3ab998c4e48a0b3074fe05 e2ffa7eebe8f77a1bf69ad2c3b1f3919 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFRN - Universidade Federal do Rio Grande do Norte (UFRN) |
repository.mail.fl_str_mv |
|
_version_ |
1802117518280622080 |