SolUnit: um framework de testes de unidade para smart contracts

Detalhes bibliográficos
Ano de defesa: 2020
Autor(a) principal: Medeiros, Hallan
Orientador(a): Vilain, Patrícia
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Não Informado pela instituição
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Link de acesso: https://repositorio.ufsc.br/handle/123456789/219252
Resumo: Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2020.
id UFSC_2114a5e2edbba5e339b0100ab9187e3d
oai_identifier_str oai:repositorio.ufsc.br:123456789/219252
network_acronym_str UFSC
network_name_str Repositório Institucional da UFSC
repository_id_str
spelling Universidade Federal de Santa CatarinaMedeiros, HallanVilain, Patrícia2021-01-14T18:06:23Z2021-01-14T18:06:23Z2020370570https://repositorio.ufsc.br/handle/123456789/219252Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2020.Smart contracts são softwares implementados em plataformas blockchain que monitoram e automatizam a execução de contratos para garantir a conformidade com os termos e condições deste contrato. Desta forma, smart contracts representam um novo tipo de software que possuem seus próprios desafios e requerem novas técnicas de engenharia de software. Em particular, os smart contracts exigem testes minuciosos antes de serem implantados, visto que tais contratos não podem ser alterados após a implantação. Este trabalho propõe uma nova abordagem para a execução testes de unidade para smart contracts, com o objetivo de reduzir o tempo de execução dos testes. Tal redução é alcançada através da reutilização da implantação do smart contract em cada teste e também a reutilização da execução da configuração de cada teste. Esta abordagem foi implementada em um framework chamado SolUnit que executa testes de unidade escritos em Java para smart contracts na plataforma Ethereum Solidity. O framework SolUnit foi avaliado em cinco projetos. Os resultados mostram que a abordagem proposta alcança uma redução significativa do tempo para executar testes, sem quebrar o princípio de testes independentes. Os experimentos foram realizados em dois ambientes: uma blockchain simulada em memória e uma blockchain Ethereum privada, executando localmente. No geral, a abordagem proposta foi capaz de reduzir o tempo de execução dos testes em até 70% no melhor dos casos e em 30% no pior dos casos.Abstract: Smart contracts are software programs implemented on a blockchain platform that monitors and automate the execution of contracts to ensure compliance with the terms and conditions of a contract. As such, smart contracts represent a new kind of software that poses its own engineering challenges and requires novel software engineering techniques. In particular, smart contracts require thorough testing before they are deployed because they can?t be changed after deployment. This paper proposes a novel approach for executing unit tests for smart contracts intended to reduce test execution time. This reduction is achieved through the reuse of the deployment execution of the smart contract in each test and also the reuse of the setup execution of each test. We implemented the framework SolUnit that uses this approach to execute tests written in Java for Ethereum Solidity smart contracts. We also evaluated the framework SolUnit in five projects. The results show that our approach achieves a meaningful reduction of the time to execute the tests, without breaking the principle of independent tests. The experiments were performed in two environments: an in-memory simulated blockchain and a private Ethereum based blockchain. Overall, our approach was able to reduce the test execution time by up to 70% in the best case and 30% in the worst case.95 p.| il.porComputaçãoSoftwareFramework (Arquivo de computador)Blockchains (Base de dados)SolUnit: um framework de testes de unidade para smart contractsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisreponame:Repositório Institucional da UFSCinstname:Universidade Federal de Santa Catarina (UFSC)instacron:UFSCinfo:eu-repo/semantics/openAccessORIGINALPGCC1182-D.pdfPGCC1182-D.pdfapplication/pdf5934840https://repositorio.ufsc.br/bitstream/123456789/219252/-1/PGCC1182-D.pdfc24170dc6ee92b7d8cf1628bb7cc04c8MD5-1123456789/2192522021-01-14 15:06:24.946oai:repositorio.ufsc.br:123456789/219252Repositório InstitucionalPUBhttp://150.162.242.35/oai/requestsandra.sobrera@ufsc.bropendoar:23732021-01-14T18:06:24Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC)false
dc.title.none.fl_str_mv SolUnit: um framework de testes de unidade para smart contracts
title SolUnit: um framework de testes de unidade para smart contracts
spellingShingle SolUnit: um framework de testes de unidade para smart contracts
Medeiros, Hallan
Computação
Software
Framework (Arquivo de computador)
Blockchains (Base de dados)
title_short SolUnit: um framework de testes de unidade para smart contracts
title_full SolUnit: um framework de testes de unidade para smart contracts
title_fullStr SolUnit: um framework de testes de unidade para smart contracts
title_full_unstemmed SolUnit: um framework de testes de unidade para smart contracts
title_sort SolUnit: um framework de testes de unidade para smart contracts
author Medeiros, Hallan
author_facet Medeiros, Hallan
author_role author
dc.contributor.none.fl_str_mv Universidade Federal de Santa Catarina
dc.contributor.author.fl_str_mv Medeiros, Hallan
dc.contributor.advisor1.fl_str_mv Vilain, Patrícia
contributor_str_mv Vilain, Patrícia
dc.subject.classification.none.fl_str_mv Computação
Software
Framework (Arquivo de computador)
Blockchains (Base de dados)
topic Computação
Software
Framework (Arquivo de computador)
Blockchains (Base de dados)
description Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2020.
publishDate 2020
dc.date.issued.fl_str_mv 2020
dc.date.accessioned.fl_str_mv 2021-01-14T18:06:23Z
dc.date.available.fl_str_mv 2021-01-14T18:06:23Z
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 https://repositorio.ufsc.br/handle/123456789/219252
dc.identifier.other.none.fl_str_mv 370570
identifier_str_mv 370570
url https://repositorio.ufsc.br/handle/123456789/219252
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.format.none.fl_str_mv 95 p.| il.
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFSC
instname:Universidade Federal de Santa Catarina (UFSC)
instacron:UFSC
instname_str Universidade Federal de Santa Catarina (UFSC)
instacron_str UFSC
institution UFSC
reponame_str Repositório Institucional da UFSC
collection Repositório Institucional da UFSC
bitstream.url.fl_str_mv https://repositorio.ufsc.br/bitstream/123456789/219252/-1/PGCC1182-D.pdf
bitstream.checksum.fl_str_mv c24170dc6ee92b7d8cf1628bb7cc04c8
bitstream.checksumAlgorithm.fl_str_mv MD5
repository.name.fl_str_mv Repositório Institucional da UFSC - Universidade Federal de Santa Catarina (UFSC)
repository.mail.fl_str_mv sandra.sobrera@ufsc.br
_version_ 1851759036618244096