Uma investigação sobre Test Smells em códigos de testes JavaScript.

Detalhes bibliográficos
Ano de defesa: 2023
Autor(a) principal: JORGE, Dalton Nicodemos.
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Campina Grande
Brasil
Centro de Engenharia Elétrica e Informática - CEEI
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
UFCG
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
Palavras-chave em Português:
Link de acesso: https://dspace.sti.ufcg.edu.br/handle/riufcg/37717
Resumo: Teste de software é uma atividade imprescindível no desenvolvimento de sistemas, pois minimiza a possibilidade de manifestar problemas e maximiza as chances do código de produção estar conforme suas especificações. No entanto, assim como uma má escolha de design (bad smell) afeta o código de produção, os testes também estão suscetíveis ao mesmo tipo de problema. Sendo assim, um teste com indicação de possíveis defeitos no design (test smell) pode ocasionar adversidades que vão desde a legibilidade do código, dificultando a manutenção, até mesmo a estar suscetível a fornecer falsos positivos ou simplesmente parar de funcionar. De fato, test smells são anti-padrões adotados na implementação do código de teste. Esses smells podem ter variações ou desencadear o surgimento de novos tipos, dependendo da linguagem ou tecnologia utilizada para a escrita dos testes. Em paralelo, a linguagem JavaScript tem se desenvolvido ao longo de décadas desde sua criação e uma notável evolução desde 2015 com a especificação ECMAScript 6 (ES6). JavaScript é uma linguagem de alto nível, que inclui as seguintes particula ridades: ser multi-paradigma, interpretada, utilizar tipagem dinâmica, possuir uma orientação a objeto baseada em protótipos e até mesmo funções de primeira classe. Diante disso, focamos nosso estudo de smells em JavaScript, pelo fato dela ser uma linguagem em constante evolução e largamente utilizada para desenvolver software em diversas plataformas, tais como: servidores, desktop, linha de comando, sistemas móveis e internet das coisas. Em síntese, o objetivo deste trabalho é investigar a ocorrência e a severidade de test smells clássicos e específicos na linguagem JavaScript, e verificar se estes anti-padrões podem estar correlacionados e com as métricas de qualidade do código de teste. Para alcançar este objetivo, inicialmente selecionamos 15 smells clássicos da literatura e um inerente à linguagem, para avaliar a ocorrência no código de teste. Com o intuito de facilitar a detecção de smells e validar o nosso estudo, desenvolvemos uma ferramenta de detecção automática desses 16 smells através da técnica de análise estática de código e executamos um estudo exploratório com 65 projetos, sendo 61 de código-livre e 4 de 2 código-fechado. Como resultados, concluímos que as incidências de alguns destes test smells estão moderadamente correlacionadas entre si e com as métricas de qualidade em sentido positivo. Adicionalmente, realizamos um estudo complementar envolvendo desenvolvedores e testadores com o intuito de investigar o impacto da experiência no reconhecimento desses smells em JavaScript. Este estudo visou entender não apenas a prevalência de test smells específicos na percepção desses profissionais, mas também as estratégias e ferramentas utilizadas por eles para mitigar tais anti-padrões. Este aspecto do estudo nos permitiu avaliar a conscientização e as práticas adotadas no contexto real de desen volvimento e teste de software, enriquecendo a compreensão dos desafios enfrentados e das possíveis soluções aplicáveis. Com este trabalho esperamos ter contribuído para a formalização inicial dos estudos de test smells na linguagem JavaScript, tendo em vista que embora venha sendo cada vez mais utilizada nos mais diversos contextos de desenvolvimento, ainda é muito pouco investigada quanto as suas especificidades e desdobramentos no âmbito de test smells.
id UFCG_d058875aa869634caae2835e27e16dab
oai_identifier_str oai:dspace.sti.ufcg.edu.br:riufcg/37717
network_acronym_str UFCG
network_name_str Biblioteca Digital de Teses e Dissertações da UFCG
repository_id_str
spelling Uma investigação sobre Test Smells em códigos de testes JavaScript.An investigation into Test Smells in JavaScript testing codes.Engenharia de softwareTeste de software – desenvolvimento de sistemasLinguagem javascriptEstudos de test smells – linguagem javascriptSoftware engineeringSoftware testing – systems developmentJavaScript languageTest smells studies – javascript languageCiência da Computação.Teste de software é uma atividade imprescindível no desenvolvimento de sistemas, pois minimiza a possibilidade de manifestar problemas e maximiza as chances do código de produção estar conforme suas especificações. No entanto, assim como uma má escolha de design (bad smell) afeta o código de produção, os testes também estão suscetíveis ao mesmo tipo de problema. Sendo assim, um teste com indicação de possíveis defeitos no design (test smell) pode ocasionar adversidades que vão desde a legibilidade do código, dificultando a manutenção, até mesmo a estar suscetível a fornecer falsos positivos ou simplesmente parar de funcionar. De fato, test smells são anti-padrões adotados na implementação do código de teste. Esses smells podem ter variações ou desencadear o surgimento de novos tipos, dependendo da linguagem ou tecnologia utilizada para a escrita dos testes. Em paralelo, a linguagem JavaScript tem se desenvolvido ao longo de décadas desde sua criação e uma notável evolução desde 2015 com a especificação ECMAScript 6 (ES6). JavaScript é uma linguagem de alto nível, que inclui as seguintes particula ridades: ser multi-paradigma, interpretada, utilizar tipagem dinâmica, possuir uma orientação a objeto baseada em protótipos e até mesmo funções de primeira classe. Diante disso, focamos nosso estudo de smells em JavaScript, pelo fato dela ser uma linguagem em constante evolução e largamente utilizada para desenvolver software em diversas plataformas, tais como: servidores, desktop, linha de comando, sistemas móveis e internet das coisas. Em síntese, o objetivo deste trabalho é investigar a ocorrência e a severidade de test smells clássicos e específicos na linguagem JavaScript, e verificar se estes anti-padrões podem estar correlacionados e com as métricas de qualidade do código de teste. Para alcançar este objetivo, inicialmente selecionamos 15 smells clássicos da literatura e um inerente à linguagem, para avaliar a ocorrência no código de teste. Com o intuito de facilitar a detecção de smells e validar o nosso estudo, desenvolvemos uma ferramenta de detecção automática desses 16 smells através da técnica de análise estática de código e executamos um estudo exploratório com 65 projetos, sendo 61 de código-livre e 4 de 2 código-fechado. Como resultados, concluímos que as incidências de alguns destes test smells estão moderadamente correlacionadas entre si e com as métricas de qualidade em sentido positivo. Adicionalmente, realizamos um estudo complementar envolvendo desenvolvedores e testadores com o intuito de investigar o impacto da experiência no reconhecimento desses smells em JavaScript. Este estudo visou entender não apenas a prevalência de test smells específicos na percepção desses profissionais, mas também as estratégias e ferramentas utilizadas por eles para mitigar tais anti-padrões. Este aspecto do estudo nos permitiu avaliar a conscientização e as práticas adotadas no contexto real de desen volvimento e teste de software, enriquecendo a compreensão dos desafios enfrentados e das possíveis soluções aplicáveis. Com este trabalho esperamos ter contribuído para a formalização inicial dos estudos de test smells na linguagem JavaScript, tendo em vista que embora venha sendo cada vez mais utilizada nos mais diversos contextos de desenvolvimento, ainda é muito pouco investigada quanto as suas especificidades e desdobramentos no âmbito de test smells.Software testing is an essential activity in system development, as it minimizes the possibility of manifesting problems and maximizes the chances that the production code meets its specifications. However, just as a poor design choice (bad smell) affects the production code, tests are also susceptible to the same type of problem. Thus, a test indicating possible design defects (test smell) can lead to challenges ranging from code readability, making maintenance difficult, to being prone to giving false positives or simply ceasing to function. Indeed, test smells are anti-patterns adopted in the test code implementation. These smells can vary or trigger the emergence of new types, depending on the language or technology used for test writing. In parallel, the JavaScript language has developed over decades since its incep tion and a notable evolution since 2015 with the ECMAScript 6 (ES6) specification. JavaScript is a high-level language, which includes the following peculiarities: being multi-paradigm, interpreted, using dynamic typing, having prototype-based object ori entation, and even first-class functions. Given this, we focused our study on smells in JavaScript, because it is a constantly evolving language and widely used to develop software on various platforms, such as: servers, desktop, command line, mobile systems, and the internet of things. In summary, the aim of this study is to investigate the occurrence and severity of classic and specific test smells in the JavaScript language, and to check if these anti patterns might be correlated with each other and with the quality metrics of the test code. To achieve this goal, we initially selected 15 classic smells from the literature and one inherent to the language, to assess their occurrence in the test code. To facilitate the detection of smells and validate our study, we developed an automated detection tool for these 16 smells using the static code analysis technique and conducted an exploratory study with 65 projects, 61 open-source and 4 proprietary. As results, we concluded that the incidence of some of these test smells is moderately correlated with each other and with quality metrics in a positive sense. Additionally, we conducted a complementary study involving developers and testers with the aim of investigating the impact of experience on the recognition of these smells 1 2 in JavaScript. This study aimed to understand not only the prevalence of specific test smells in the perception of these professionals, but also the strategies and tools they used to mitigate such anti-patterns. This aspect of the study allowed us to assess the awareness and practices adopted in the real context of software development and testing, enriching the understanding of the challenges faced and the possible applicable solutions. With this study, we hope to have contributed to the initial formalization of test smell studies in the JavaScript language, considering that although it has been increas ingly used in various development contexts, it had not yet been academically explored regarding its specifics and ramifications in the realm of test smells.Universidade Federal de Campina GrandeBrasilCentro de Engenharia Elétrica e Informática - CEEIPÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGMACHADO, Patricia Duarte de Lima.MACHADO, P. D. L.http://lattes.cnpq.br/2495918356675019ANDRADE, Wilkerson de Lucena.ANDRADE, W. L.http://lattes.cnpq.br/3697205933296303LIRA , Melina Mongiovi Brito.SOUTO, Sabrina de Figueirêdo.MACHADO, Ivan do Carmo.TEIXEIRA, Leopoldo Motta.JORGE, Dalton Nicodemos.2023-09-152024-09-09T19:30:50Z2024-09-092024-09-09T19:30:50Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesishttps://dspace.sti.ufcg.edu.br/handle/riufcg/37717JORGE, Dalton Nicodemos. Uma investigação sobre Test Smells em códigos de testes JavaScript. 2023. 143 f. Tese (Doutorado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2024.porinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCG2025-11-18T07:03:40Zoai:dspace.sti.ufcg.edu.br:riufcg/37717Biblioteca Digital de Teses e Dissertaçõeshttp://bdtd.ufcg.edu.br/PUBhttp://dspace.sti.ufcg.edu.br:8080/oai/requestbdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.bropendoar:48512025-11-18T07:03:40Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false
dc.title.none.fl_str_mv Uma investigação sobre Test Smells em códigos de testes JavaScript.
An investigation into Test Smells in JavaScript testing codes.
title Uma investigação sobre Test Smells em códigos de testes JavaScript.
spellingShingle Uma investigação sobre Test Smells em códigos de testes JavaScript.
JORGE, Dalton Nicodemos.
Engenharia de software
Teste de software – desenvolvimento de sistemas
Linguagem javascript
Estudos de test smells – linguagem javascript
Software engineering
Software testing – systems development
JavaScript language
Test smells studies – javascript language
Ciência da Computação.
title_short Uma investigação sobre Test Smells em códigos de testes JavaScript.
title_full Uma investigação sobre Test Smells em códigos de testes JavaScript.
title_fullStr Uma investigação sobre Test Smells em códigos de testes JavaScript.
title_full_unstemmed Uma investigação sobre Test Smells em códigos de testes JavaScript.
title_sort Uma investigação sobre Test Smells em códigos de testes JavaScript.
author JORGE, Dalton Nicodemos.
author_facet JORGE, Dalton Nicodemos.
author_role author
dc.contributor.none.fl_str_mv MACHADO, Patricia Duarte de Lima.
MACHADO, P. D. L.
http://lattes.cnpq.br/2495918356675019
ANDRADE, Wilkerson de Lucena.
ANDRADE, W. L.
http://lattes.cnpq.br/3697205933296303
LIRA , Melina Mongiovi Brito.
SOUTO, Sabrina de Figueirêdo.
MACHADO, Ivan do Carmo.
TEIXEIRA, Leopoldo Motta.
dc.contributor.author.fl_str_mv JORGE, Dalton Nicodemos.
dc.subject.por.fl_str_mv Engenharia de software
Teste de software – desenvolvimento de sistemas
Linguagem javascript
Estudos de test smells – linguagem javascript
Software engineering
Software testing – systems development
JavaScript language
Test smells studies – javascript language
Ciência da Computação.
topic Engenharia de software
Teste de software – desenvolvimento de sistemas
Linguagem javascript
Estudos de test smells – linguagem javascript
Software engineering
Software testing – systems development
JavaScript language
Test smells studies – javascript language
Ciência da Computação.
description Teste de software é uma atividade imprescindível no desenvolvimento de sistemas, pois minimiza a possibilidade de manifestar problemas e maximiza as chances do código de produção estar conforme suas especificações. No entanto, assim como uma má escolha de design (bad smell) afeta o código de produção, os testes também estão suscetíveis ao mesmo tipo de problema. Sendo assim, um teste com indicação de possíveis defeitos no design (test smell) pode ocasionar adversidades que vão desde a legibilidade do código, dificultando a manutenção, até mesmo a estar suscetível a fornecer falsos positivos ou simplesmente parar de funcionar. De fato, test smells são anti-padrões adotados na implementação do código de teste. Esses smells podem ter variações ou desencadear o surgimento de novos tipos, dependendo da linguagem ou tecnologia utilizada para a escrita dos testes. Em paralelo, a linguagem JavaScript tem se desenvolvido ao longo de décadas desde sua criação e uma notável evolução desde 2015 com a especificação ECMAScript 6 (ES6). JavaScript é uma linguagem de alto nível, que inclui as seguintes particula ridades: ser multi-paradigma, interpretada, utilizar tipagem dinâmica, possuir uma orientação a objeto baseada em protótipos e até mesmo funções de primeira classe. Diante disso, focamos nosso estudo de smells em JavaScript, pelo fato dela ser uma linguagem em constante evolução e largamente utilizada para desenvolver software em diversas plataformas, tais como: servidores, desktop, linha de comando, sistemas móveis e internet das coisas. Em síntese, o objetivo deste trabalho é investigar a ocorrência e a severidade de test smells clássicos e específicos na linguagem JavaScript, e verificar se estes anti-padrões podem estar correlacionados e com as métricas de qualidade do código de teste. Para alcançar este objetivo, inicialmente selecionamos 15 smells clássicos da literatura e um inerente à linguagem, para avaliar a ocorrência no código de teste. Com o intuito de facilitar a detecção de smells e validar o nosso estudo, desenvolvemos uma ferramenta de detecção automática desses 16 smells através da técnica de análise estática de código e executamos um estudo exploratório com 65 projetos, sendo 61 de código-livre e 4 de 2 código-fechado. Como resultados, concluímos que as incidências de alguns destes test smells estão moderadamente correlacionadas entre si e com as métricas de qualidade em sentido positivo. Adicionalmente, realizamos um estudo complementar envolvendo desenvolvedores e testadores com o intuito de investigar o impacto da experiência no reconhecimento desses smells em JavaScript. Este estudo visou entender não apenas a prevalência de test smells específicos na percepção desses profissionais, mas também as estratégias e ferramentas utilizadas por eles para mitigar tais anti-padrões. Este aspecto do estudo nos permitiu avaliar a conscientização e as práticas adotadas no contexto real de desen volvimento e teste de software, enriquecendo a compreensão dos desafios enfrentados e das possíveis soluções aplicáveis. Com este trabalho esperamos ter contribuído para a formalização inicial dos estudos de test smells na linguagem JavaScript, tendo em vista que embora venha sendo cada vez mais utilizada nos mais diversos contextos de desenvolvimento, ainda é muito pouco investigada quanto as suas especificidades e desdobramentos no âmbito de test smells.
publishDate 2023
dc.date.none.fl_str_mv 2023-09-15
2024-09-09T19:30:50Z
2024-09-09
2024-09-09T19:30:50Z
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.uri.fl_str_mv https://dspace.sti.ufcg.edu.br/handle/riufcg/37717
JORGE, Dalton Nicodemos. Uma investigação sobre Test Smells em códigos de testes JavaScript. 2023. 143 f. Tese (Doutorado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2024.
url https://dspace.sti.ufcg.edu.br/handle/riufcg/37717
identifier_str_mv JORGE, Dalton Nicodemos. Uma investigação sobre Test Smells em códigos de testes JavaScript. 2023. 143 f. Tese (Doutorado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2024.
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 de Campina Grande
Brasil
Centro de Engenharia Elétrica e Informática - CEEI
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
UFCG
publisher.none.fl_str_mv Universidade Federal de Campina Grande
Brasil
Centro de Engenharia Elétrica e Informática - CEEI
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
UFCG
dc.source.none.fl_str_mv reponame:Biblioteca Digital de Teses e Dissertações da UFCG
instname:Universidade Federal de Campina Grande (UFCG)
instacron:UFCG
instname_str Universidade Federal de Campina Grande (UFCG)
instacron_str UFCG
institution UFCG
reponame_str Biblioteca Digital de Teses e Dissertações da UFCG
collection Biblioteca Digital de Teses e Dissertações da UFCG
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)
repository.mail.fl_str_mv bdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.br
_version_ 1851784692066418688