Vocabulário de testes instáveis em JavaScript

Bibliographic Details
Main Author: Soratto, Rafael Rampim
Publication Date: 2022
Format: Bachelor thesis
Language: por
Source: Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
Download full: http://repositorio.utfpr.edu.br/jspui/handle/1/32232
Summary: Context: Regression testing is a software verification and validation activity in modern software engineering. In this activity, tests can fail without any implementation change, characterizing a flaky test. Flaky tests may delay the release of the software and reduce testing confidence. One way to identify flaky tests is by re-running the tests, but this has a high computational cost. An alternative to re-execution is the static analysis of the code of the test cases, identifying patterns related to flaky tests. Considering this approach, however, to the best of your knowledge, only works that address Java applications are observed, although other languages, such as Javascript, are also widely used in software development. Objective: The objective of this work was to identify flaky tests in Javascript applications without executing them, saving computing resources. Method: A dataset was built with flaky test cases extracted from open projects hosted on Github that are implemented in Javascript. Next, a classification model was created, considering the source code of flaky tests in the Javascript language, built from the classification model established in this work. Results: We observed that the learning algorithms considered in this study achieved a good performance in the classification of tests regarding flakiness. In particular, logistic regression had the best accuracy (0.984) and was the best in terms of recall (0.98). The vocabulary for flaky tests contains words related to asynchronous wait (e.g., ‘then’, ‘await’, ‘return’) and visualization and user interaction (e.g., ‘layout’ and ‘click’). We also found two words associated with flaky test cases related to the usage of the Cypress framework: ‘cy’ and ‘getByTestID’. The term with the most significant relevance to the information gain is ‘then’, which is mainly associated with asynchronous waits. Conclusions: This work presents relevant results for identifying flaky tests in projects that use Javascript. Further studies are required to consolidate the reliable classification of tests regarding flakiness methodology.
id UTFPR-12_5873892c5f22c81b896c074d7dcec03f
oai_identifier_str oai:repositorio.utfpr.edu.br:1/32232
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 Vocabulário de testes instáveis em JavaScriptVocabulary of flaky tests in JavaScriptSoftware - TestesJavaScript (Linguagem de programação de computador)VocabulárioComputer software - TestingJavaScript (Computer program language)VocabularyCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAOContext: Regression testing is a software verification and validation activity in modern software engineering. In this activity, tests can fail without any implementation change, characterizing a flaky test. Flaky tests may delay the release of the software and reduce testing confidence. One way to identify flaky tests is by re-running the tests, but this has a high computational cost. An alternative to re-execution is the static analysis of the code of the test cases, identifying patterns related to flaky tests. Considering this approach, however, to the best of your knowledge, only works that address Java applications are observed, although other languages, such as Javascript, are also widely used in software development. Objective: The objective of this work was to identify flaky tests in Javascript applications without executing them, saving computing resources. Method: A dataset was built with flaky test cases extracted from open projects hosted on Github that are implemented in Javascript. Next, a classification model was created, considering the source code of flaky tests in the Javascript language, built from the classification model established in this work. Results: We observed that the learning algorithms considered in this study achieved a good performance in the classification of tests regarding flakiness. In particular, logistic regression had the best accuracy (0.984) and was the best in terms of recall (0.98). The vocabulary for flaky tests contains words related to asynchronous wait (e.g., ‘then’, ‘await’, ‘return’) and visualization and user interaction (e.g., ‘layout’ and ‘click’). We also found two words associated with flaky test cases related to the usage of the Cypress framework: ‘cy’ and ‘getByTestID’. The term with the most significant relevance to the information gain is ‘then’, which is mainly associated with asynchronous waits. Conclusions: This work presents relevant results for identifying flaky tests in projects that use Javascript. Further studies are required to consolidate the reliable classification of tests regarding flakiness methodology.Contexto: O teste de regressão é uma atividade de verificação e validação de sistemas presente na engenharia de software moderna. Nesta atividade, testes podem falhar sem nenhuma alteração de implementação, caracterizando-se como teste instáveis (flaky test). Este tipo de instabilidade pode atrasar o lançamento do software e reduz a confiança dos testes. Uma forma de identificar tais testes instáveis é pela reexecução dos testes, mas isso possui um custo computacional elevado. Uma alterativa à reexecução é a análise estática do código dos casos de teste, identificando padrões relacionados à instabilidade. Nesse contexto, por enquanto observam-se apenas trabalhos que abordam aplicações em Java, embora outras linguagens, como Javascript, também sejam amplamente utilizadas no desenvolvimento de software. Objetivo: O objetivo deste trabalho foi a identificação de testes instáveis em aplicações Javascript sem realizar a execução do mesmo, visando poupar recursos relacionados. Método: Para atingir tal objetivo foi construído um conjunto de dados com casos de teste instáveis presentes em projetos de código aberto no Github que utilizam Javascript. A seguir foi criado um modelo de classificação, considerando o vocabulário de instabilidade na linguagem Javascript, construído a partir do conjunto de dados estabelecido neste trabalho. Resultados: Observamos que os oito algoritmos de aprendizado de máquina utilizados tiveram bom desempenho na distinção de testes quanto à instabilidade. Em particular, a regressão logística teve a melhor precisão (0,984) e foi melhor em termos de revocação (0,98). O vocabulário instável obtido contém palavras relacionadas com espera assíncrona (por exemplo, ‘then’, ‘await’, ‘return’) e à visualização e interação com usuário (por exemplo, ‘layout’ e ‘click’). Também Encontramos duas palavras associadas a casos de teste instáveis que estão relacionadas com a utilização do framework Cypress, são elas : ‘cy’ e ‘getByTestID’. O termo que possui maior relevância em termos de ganho de informação é o ‘then’, que está fortemente associado a instabilidades ocasionadas pela espera assíncrona. Conclusões: Neste trabalho são apresentados resultados relevantes para identificação de flaky tests em projetos que utilizam Javascript. São necessários mais estudos empíricos para consolidar a abordagem de vocabulário instável como uma técnica confiável para identificação de instabilidades em testes.Universidade Tecnológica Federal do ParanáCampo MouraoBrasilDepartamento Acadêmico de ComputaçãoCiência da ComputaçãoUTFPRSilva, Marco Aurélio GraciottoSilva, Marco Aurélio GraciottoFoleiss, Juliano HenriqueRé, ReginaldoSoratto, Rafael Rampim2023-08-28T11:42:44Z2023-08-28T11:42:44Z2022-06-15info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisapplication/pdfSORATTO, Rafael Rampim. Vocabulário de testes instáveis em Javascript. 2022. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2022.http://repositorio.utfpr.edu.br/jspui/handle/1/32232porhttp://creativecommons.org/licenses/by/4.0/info: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:UTFPR2023-08-29T06:07:22Zoai:repositorio.utfpr.edu.br:1/32232Repositório InstitucionalPUBhttp://repositorio.utfpr.edu.br:8080/oai/requestriut@utfpr.edu.bropendoar:2023-08-29T06:07:22Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT)) - Universidade Tecnológica Federal do Paraná (UTFPR)false
dc.title.none.fl_str_mv Vocabulário de testes instáveis em JavaScript
Vocabulary of flaky tests in JavaScript
title Vocabulário de testes instáveis em JavaScript
spellingShingle Vocabulário de testes instáveis em JavaScript
Soratto, Rafael Rampim
Software - Testes
JavaScript (Linguagem de programação de computador)
Vocabulário
Computer software - Testing
JavaScript (Computer program language)
Vocabulary
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
title_short Vocabulário de testes instáveis em JavaScript
title_full Vocabulário de testes instáveis em JavaScript
title_fullStr Vocabulário de testes instáveis em JavaScript
title_full_unstemmed Vocabulário de testes instáveis em JavaScript
title_sort Vocabulário de testes instáveis em JavaScript
author Soratto, Rafael Rampim
author_facet Soratto, Rafael Rampim
author_role author
dc.contributor.none.fl_str_mv Silva, Marco Aurélio Graciotto
Silva, Marco Aurélio Graciotto
Foleiss, Juliano Henrique
Ré, Reginaldo
dc.contributor.author.fl_str_mv Soratto, Rafael Rampim
dc.subject.por.fl_str_mv Software - Testes
JavaScript (Linguagem de programação de computador)
Vocabulário
Computer software - Testing
JavaScript (Computer program language)
Vocabulary
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
topic Software - Testes
JavaScript (Linguagem de programação de computador)
Vocabulário
Computer software - Testing
JavaScript (Computer program language)
Vocabulary
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
description Context: Regression testing is a software verification and validation activity in modern software engineering. In this activity, tests can fail without any implementation change, characterizing a flaky test. Flaky tests may delay the release of the software and reduce testing confidence. One way to identify flaky tests is by re-running the tests, but this has a high computational cost. An alternative to re-execution is the static analysis of the code of the test cases, identifying patterns related to flaky tests. Considering this approach, however, to the best of your knowledge, only works that address Java applications are observed, although other languages, such as Javascript, are also widely used in software development. Objective: The objective of this work was to identify flaky tests in Javascript applications without executing them, saving computing resources. Method: A dataset was built with flaky test cases extracted from open projects hosted on Github that are implemented in Javascript. Next, a classification model was created, considering the source code of flaky tests in the Javascript language, built from the classification model established in this work. Results: We observed that the learning algorithms considered in this study achieved a good performance in the classification of tests regarding flakiness. In particular, logistic regression had the best accuracy (0.984) and was the best in terms of recall (0.98). The vocabulary for flaky tests contains words related to asynchronous wait (e.g., ‘then’, ‘await’, ‘return’) and visualization and user interaction (e.g., ‘layout’ and ‘click’). We also found two words associated with flaky test cases related to the usage of the Cypress framework: ‘cy’ and ‘getByTestID’. The term with the most significant relevance to the information gain is ‘then’, which is mainly associated with asynchronous waits. Conclusions: This work presents relevant results for identifying flaky tests in projects that use Javascript. Further studies are required to consolidate the reliable classification of tests regarding flakiness methodology.
publishDate 2022
dc.date.none.fl_str_mv 2022-06-15
2023-08-28T11:42:44Z
2023-08-28T11:42:44Z
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.uri.fl_str_mv SORATTO, Rafael Rampim. Vocabulário de testes instáveis em Javascript. 2022. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2022.
http://repositorio.utfpr.edu.br/jspui/handle/1/32232
identifier_str_mv SORATTO, Rafael Rampim. Vocabulário de testes instáveis em Javascript. 2022. Trabalho de Conclusão de Curso (Bacharelado em Ciência da Computação) - Universidade Tecnológica Federal do Paraná, Campo Mourão, 2022.
url http://repositorio.utfpr.edu.br/jspui/handle/1/32232
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv http://creativecommons.org/licenses/by/4.0/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv http://creativecommons.org/licenses/by/4.0/
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidade Tecnológica Federal do Paraná
Campo Mourao
Brasil
Departamento Acadêmico de Computação
Ciência da Computação
UTFPR
publisher.none.fl_str_mv Universidade Tecnológica Federal do Paraná
Campo Mourao
Brasil
Departamento Acadêmico de Computação
Ciência da Computação
UTFPR
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))
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 riut@utfpr.edu.br
_version_ 1834836388657233920