Use este identificador para citar ou linkar para este item: http://repositorio.utfpr.edu.br/jspui/handle/1/32232
Título: Vocabulário de testes instáveis em JavaScript
Título(s) alternativo(s): Vocabulary of flaky tests in JavaScript
Autor(es): Soratto, Rafael Rampim
Orientador(es): Silva, Marco Aurélio Graciotto
Palavras-chave: Software - Testes
JavaScript (Linguagem de programação de computador)
Vocabulário
Computer software - Testing
JavaScript (Computer program language)
Vocabulary
Data do documento: 15-Jun-2022
Editor: Universidade Tecnológica Federal do Paraná
Câmpus: Campo Mourao
Citação: 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.
Resumo: 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.
Abstract: 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.
URI: http://repositorio.utfpr.edu.br/jspui/handle/1/32232
Aparece nas coleções:CM - Ciência da Computação

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
vocabulariotestesinstaveisjavascript.pdf1,05 MBAdobe PDFThumbnail
Visualizar/Abrir


Este item está licenciada sob uma Licença Creative Commons Creative Commons