Teste de mutação para programas concorrentes em elixir

Detalhes bibliográficos
Autor(a) principal: Bordignon, Matheus Deon
Data de Publicação: 2019
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
Texto Completo: http://repositorio.utfpr.edu.br/jspui/handle/1/10771
Resumo: A capacidade de processamento dos computadores mostra-se cada vez mais insuficiente e incentiva o uso de programação concorrente para o desenvolvimento de aplicações que reduzam o tempo computacional. O Elixir é uma linguagem que suporta o desenvolvimento de aplicações concorrentes e distribuídas de forma dinâmica e moderna. A utilização da programação concorrente difere-se da programação convencional, adicionando características como a comunicação, sincronização e o não determinismo aos programas. As atividades de teste, que buscam garantir a qualidade e corretude dos programas, tornam-se mais complexas devido a estas características. O teste de mutação é um critério de teste que se baseia nos enganos cometidos por programadores durante o desenvolvimento do software e apresenta uma alta eficácia para revelar defeitos. Este trabalho tem por objetivo a definição de operadores de mutação para funções concorrentes em Elixir. Para isso, um benchmark de programas concorrentes em Elixir foi construído e validado para auxiliar na atividade de teste de software. Utilizando o benchmark, foi definida a taxonomia de falhas em Elixir, explorando as falhas produzidas pela funções concorrentes do Kernel e do módulo Task. Considerando as falhas da taxonomia e explorando enganos típicos de programadores durante o desenvolvimento, foi definido um conjunto de operadores de mutação para explorar aspectos de concorrência. Também, foi proposto um experimento para avaliar algumas características de qualidade dos operadores de mutação definidos e os resultados mostraram que o operador de mutação ReplSpawn gerou o maior número de mutantes, enquanto o operador DelReceive demonstrou mais completude na abrangência da taxonomia de falhas. No experimento também foi calculada a taxa de inclusão dos operadores de mutação de deleção em relação aos operadores DelSpawn e DelTaskStart.
id UTFPR-12_520b6db2a823daaa6529d9cf660c66e2
oai_identifier_str oai:repositorio.utfpr.edu.br:1/10771
network_acronym_str UTFPR-12
network_name_str Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
repository_id_str
spelling 2020-11-13T11:57:07Z2020-11-13T11:57:07Z2019-11-26BORDIGNON, Matheus Deon. Teste de mutação para programas concorrentes em elixir. 2019. Trabalho de Conclusão de Curso (Bacharelado em Engenharia de Software) - Universidade Tecnológica Federal do Paraná, Dois Vizinhos, 2019.http://repositorio.utfpr.edu.br/jspui/handle/1/10771A capacidade de processamento dos computadores mostra-se cada vez mais insuficiente e incentiva o uso de programação concorrente para o desenvolvimento de aplicações que reduzam o tempo computacional. O Elixir é uma linguagem que suporta o desenvolvimento de aplicações concorrentes e distribuídas de forma dinâmica e moderna. A utilização da programação concorrente difere-se da programação convencional, adicionando características como a comunicação, sincronização e o não determinismo aos programas. As atividades de teste, que buscam garantir a qualidade e corretude dos programas, tornam-se mais complexas devido a estas características. O teste de mutação é um critério de teste que se baseia nos enganos cometidos por programadores durante o desenvolvimento do software e apresenta uma alta eficácia para revelar defeitos. Este trabalho tem por objetivo a definição de operadores de mutação para funções concorrentes em Elixir. Para isso, um benchmark de programas concorrentes em Elixir foi construído e validado para auxiliar na atividade de teste de software. Utilizando o benchmark, foi definida a taxonomia de falhas em Elixir, explorando as falhas produzidas pela funções concorrentes do Kernel e do módulo Task. Considerando as falhas da taxonomia e explorando enganos típicos de programadores durante o desenvolvimento, foi definido um conjunto de operadores de mutação para explorar aspectos de concorrência. Também, foi proposto um experimento para avaliar algumas características de qualidade dos operadores de mutação definidos e os resultados mostraram que o operador de mutação ReplSpawn gerou o maior número de mutantes, enquanto o operador DelReceive demonstrou mais completude na abrangência da taxonomia de falhas. No experimento também foi calculada a taxa de inclusão dos operadores de mutação de deleção em relação aos operadores DelSpawn e DelTaskStart.The processing capacity of computers has been insufficient and encourages the use of concurrent programming for the development of applications that reduce computational time. Elixir is a language that supports the development of concurrent and distributed applications in a dynamic and modern way. The use of concurrent programming differs from sequential programming, adding features such as communication, synchronization, and non-determinism to programs. Testing activities seek to guarantee the quality and correctness of the programs and they become more complex due to these characteristics presents in concurrent programs. Mutation testing is a test criterion based on mistakes made by programmers during software development and is highly effective in revealing defects. The aim of this work is the definition of mutation operators for concurrent functions in Elixir. For this, a benchmark of concurrent programs in Elixir was built and validated to aid in software testing activity. Using the benchmark, the fault taxonomy in Elixir was defined, exploiting the faults produced by the concurrent functions of the Kernel and the Task module. Considering the faults of the taxonomy and exploiting typical programmer mistakes during development, a set of mutation operators was defined to exploit concurrents aspects. Also, an experiment was proposed to evaluate some quality characteristics of the defined mutation operators and the results showed that the ReplSpawn mutation operator generated the largest number of mutants, while the DelReceive operator demonstred more completeness in the scope of fault taxonomy. The inclusion rate of the deletion mutation operators in relation to the DelSpawn and DelTaskStart operators was also calculated.porUniversidade Tecnológica Federal do ParanáDois VizinhosEngenharia de SoftwareUTFPRBrasilCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARELinguagens de programação funcionalSoftware - DesenvolvimentoEngenharia de softwareFunctional programming languagesComputer software - DevelopmentSoftware engineeringTeste de mutação para programas concorrentes em elixirMutation testing for concurrent programs in elixirinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisDois VizinhosSilva, Rodolfo AdamshukSilva, Rodolfo AdamshukSouza, Francisco Carlos MonteiroOliveira, Rafael Alves Paes deBordignon, Matheus Deoninfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))instname:Universidade Tecnológica Federal do Paraná (UTFPR)instacron:UTFPRORIGINALDV_COENS_2019_2_10.pdfapplication/pdf1640269http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/10771/1/DV_COENS_2019_2_10.pdfb5f50d2076ed619b6751d910feb9ee3eMD51LICENSElicense.txttext/plain1290http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/10771/2/license.txtb9d82215ab23456fa2d8b49c5df1b95bMD52TEXTDV_COENS_2019_2_10.pdf.txtExtracted texttext/plain190179http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/10771/3/DV_COENS_2019_2_10.pdf.txtac2b03d7149920f3d1ea81ef39407d49MD53THUMBNAILDV_COENS_2019_2_10.pdf.jpgGenerated Thumbnailimage/jpeg1225http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/10771/4/DV_COENS_2019_2_10.pdf.jpgc65dfcf7db3b4e77641a991ae4991951MD541/107712020-11-13 09:57:07.33oai:repositorio.utfpr.edu.br:1/10771TmEgcXVhbGlkYWRlIGRlIHRpdHVsYXIgZG9zIGRpcmVpdG9zIGRlIGF1dG9yIGRhIHB1YmxpY2HDp8OjbywgYXV0b3Jpem8gYSBVVEZQUiBhIHZlaWN1bGFyLCAKYXRyYXbDqXMgZG8gUG9ydGFsIGRlIEluZm9ybWHDp8OjbyBlbSBBY2Vzc28gQWJlcnRvIChQSUFBKSBlIGRvcyBDYXTDoWxvZ29zIGRhcyBCaWJsaW90ZWNhcyAKZGVzdGEgSW5zdGl0dWnDp8Ojbywgc2VtIHJlc3NhcmNpbWVudG8gZG9zIGRpcmVpdG9zIGF1dG9yYWlzLCBkZSBhY29yZG8gY29tIGEgTGVpIG5vIDkuNjEwLzk4LCAKbyB0ZXh0byBkZXN0YSBvYnJhLCBvYnNlcnZhbmRvIGFzIGNvbmRpw6fDtWVzIGRlIGRpc3BvbmliaWxpemHDp8OjbyByZWdpc3RyYWRhcyBubyBpdGVtIDQgZG8gCuKAnFRlcm1vIGRlIEF1dG9yaXphw6fDo28gcGFyYSBQdWJsaWNhw6fDo28gZGUgVHJhYmFsaG9zIGRlIENvbmNsdXPDo28gZGUgQ3Vyc28gZGUgR3JhZHVhw6fDo28gZSAKRXNwZWNpYWxpemHDp8OjbywgRGlzc2VydGHDp8O1ZXMgZSBUZXNlcyBubyBQb3J0YWwgZGUgSW5mb3JtYcOnw6NvIGUgbm9zIENhdMOhbG9nb3MgRWxldHLDtG5pY29zIGRvIApTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIGRhIFVURlBS4oCdLCBwYXJhIGZpbnMgZGUgbGVpdHVyYSwgaW1wcmVzc8OjbyBlL291IGRvd25sb2FkLCB2aXNhbmRvIGEgCmRpdnVsZ2HDp8OjbyBkYSBwcm9kdcOnw6NvIGNpZW50w61maWNhIGJyYXNpbGVpcmEuCgogIEFzIHZpYXMgb3JpZ2luYWlzIGUgYXNzaW5hZGFzIHBlbG8ocykgYXV0b3IoZXMpIGRvIOKAnFRlcm1vIGRlIEF1dG9yaXphw6fDo28gcGFyYSBQdWJsaWNhw6fDo28gZGUgClRyYWJhbGhvcyBkZSBDb25jbHVzw6NvIGRlIEN1cnNvIGRlIEdyYWR1YcOnw6NvIGUgRXNwZWNpYWxpemHDp8OjbywgRGlzc2VydGHDp8O1ZXMgZSBUZXNlcyBubyBQb3J0YWwgCmRlIEluZm9ybWHDp8OjbyBlIG5vcyBDYXTDoWxvZ29zIEVsZXRyw7RuaWNvcyBkbyBTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIGRhIFVURlBS4oCdIGUgZGEg4oCcRGVjbGFyYcOnw6NvIApkZSBBdXRvcmlh4oCdIGVuY29udHJhbS1zZSBhcnF1aXZhZGFzIG5hIEJpYmxpb3RlY2EgZG8gQ8OibXB1cyBubyBxdWFsIG8gdHJhYmFsaG8gZm9pIGRlZmVuZGlkby4gCk5vIGNhc28gZGUgcHVibGljYcOnw7VlcyBkZSBhdXRvcmlhIGNvbGV0aXZhIGUgbXVsdGljw6JtcHVzLCBvcyBkb2N1bWVudG9zIGZpY2Fyw6NvIHNvYiBndWFyZGEgZGEgCkJpYmxpb3RlY2EgY29tIGEgcXVhbCBvIOKAnHByaW1laXJvIGF1dG9y4oCdIHBvc3N1YSB2w61uY3Vsby4KRepositório de PublicaçõesPUBhttp://repositorio.utfpr.edu.br:8080/oai/requestopendoar:2020-11-13T11:57:07Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT)) - Universidade Tecnológica Federal do Paraná (UTFPR)false
dc.title.pt_BR.fl_str_mv Teste de mutação para programas concorrentes em elixir
dc.title.alternative.pt_BR.fl_str_mv Mutation testing for concurrent programs in elixir
title Teste de mutação para programas concorrentes em elixir
spellingShingle Teste de mutação para programas concorrentes em elixir
Bordignon, Matheus Deon
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Linguagens de programação funcional
Software - Desenvolvimento
Engenharia de software
Functional programming languages
Computer software - Development
Software engineering
title_short Teste de mutação para programas concorrentes em elixir
title_full Teste de mutação para programas concorrentes em elixir
title_fullStr Teste de mutação para programas concorrentes em elixir
title_full_unstemmed Teste de mutação para programas concorrentes em elixir
title_sort Teste de mutação para programas concorrentes em elixir
author Bordignon, Matheus Deon
author_facet Bordignon, Matheus Deon
author_role author
dc.contributor.advisor1.fl_str_mv Silva, Rodolfo Adamshuk
dc.contributor.referee1.fl_str_mv Silva, Rodolfo Adamshuk
dc.contributor.referee2.fl_str_mv Souza, Francisco Carlos Monteiro
dc.contributor.referee3.fl_str_mv Oliveira, Rafael Alves Paes de
dc.contributor.author.fl_str_mv Bordignon, Matheus Deon
contributor_str_mv Silva, Rodolfo Adamshuk
Silva, Rodolfo Adamshuk
Souza, Francisco Carlos Monteiro
Oliveira, Rafael Alves Paes de
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Linguagens de programação funcional
Software - Desenvolvimento
Engenharia de software
Functional programming languages
Computer software - Development
Software engineering
dc.subject.por.fl_str_mv Linguagens de programação funcional
Software - Desenvolvimento
Engenharia de software
Functional programming languages
Computer software - Development
Software engineering
description A capacidade de processamento dos computadores mostra-se cada vez mais insuficiente e incentiva o uso de programação concorrente para o desenvolvimento de aplicações que reduzam o tempo computacional. O Elixir é uma linguagem que suporta o desenvolvimento de aplicações concorrentes e distribuídas de forma dinâmica e moderna. A utilização da programação concorrente difere-se da programação convencional, adicionando características como a comunicação, sincronização e o não determinismo aos programas. As atividades de teste, que buscam garantir a qualidade e corretude dos programas, tornam-se mais complexas devido a estas características. O teste de mutação é um critério de teste que se baseia nos enganos cometidos por programadores durante o desenvolvimento do software e apresenta uma alta eficácia para revelar defeitos. Este trabalho tem por objetivo a definição de operadores de mutação para funções concorrentes em Elixir. Para isso, um benchmark de programas concorrentes em Elixir foi construído e validado para auxiliar na atividade de teste de software. Utilizando o benchmark, foi definida a taxonomia de falhas em Elixir, explorando as falhas produzidas pela funções concorrentes do Kernel e do módulo Task. Considerando as falhas da taxonomia e explorando enganos típicos de programadores durante o desenvolvimento, foi definido um conjunto de operadores de mutação para explorar aspectos de concorrência. Também, foi proposto um experimento para avaliar algumas características de qualidade dos operadores de mutação definidos e os resultados mostraram que o operador de mutação ReplSpawn gerou o maior número de mutantes, enquanto o operador DelReceive demonstrou mais completude na abrangência da taxonomia de falhas. No experimento também foi calculada a taxa de inclusão dos operadores de mutação de deleção em relação aos operadores DelSpawn e DelTaskStart.
publishDate 2019
dc.date.issued.fl_str_mv 2019-11-26
dc.date.accessioned.fl_str_mv 2020-11-13T11:57:07Z
dc.date.available.fl_str_mv 2020-11-13T11:57:07Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv BORDIGNON, Matheus Deon. Teste de mutação para programas concorrentes em elixir. 2019. Trabalho de Conclusão de Curso (Bacharelado em Engenharia de Software) - Universidade Tecnológica Federal do Paraná, Dois Vizinhos, 2019.
dc.identifier.uri.fl_str_mv http://repositorio.utfpr.edu.br/jspui/handle/1/10771
identifier_str_mv BORDIGNON, Matheus Deon. Teste de mutação para programas concorrentes em elixir. 2019. Trabalho de Conclusão de Curso (Bacharelado em Engenharia de Software) - Universidade Tecnológica Federal do Paraná, Dois Vizinhos, 2019.
url http://repositorio.utfpr.edu.br/jspui/handle/1/10771
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 Tecnológica Federal do Paraná
Dois Vizinhos
dc.publisher.program.fl_str_mv Engenharia de Software
dc.publisher.initials.fl_str_mv UTFPR
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Tecnológica Federal do Paraná
Dois Vizinhos
dc.source.none.fl_str_mv reponame:Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
instname:Universidade Tecnológica Federal do Paraná (UTFPR)
instacron:UTFPR
instname_str Universidade Tecnológica Federal do Paraná (UTFPR)
instacron_str UTFPR
institution UTFPR
reponame_str Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
collection Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
bitstream.url.fl_str_mv http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/10771/1/DV_COENS_2019_2_10.pdf
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/10771/2/license.txt
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/10771/3/DV_COENS_2019_2_10.pdf.txt
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/10771/4/DV_COENS_2019_2_10.pdf.jpg
bitstream.checksum.fl_str_mv b5f50d2076ed619b6751d910feb9ee3e
b9d82215ab23456fa2d8b49c5df1b95b
ac2b03d7149920f3d1ea81ef39407d49
c65dfcf7db3b4e77641a991ae4991951
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT)) - Universidade Tecnológica Federal do Paraná (UTFPR)
repository.mail.fl_str_mv
_version_ 1797044004724932608