<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Understanding the Prevalence of Test Smells in Open-source and Industrial Software: An Empirical Study on Python Projects</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><roleName>Md</roleName><forename type="first">Arif</forename><surname>Hasan</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Institute of Information Technology</orgName>
								<orgName type="institution">University of Dhaka</orgName>
								<address>
									<settlement>Dhaka</settlement>
									<country key="BD">Bangladesh</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Toukir</forename><surname>Ahammed</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Institute of Information Technology</orgName>
								<orgName type="institution">University of Dhaka</orgName>
								<address>
									<settlement>Dhaka</settlement>
									<country key="BD">Bangladesh</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Understanding the Prevalence of Test Smells in Open-source and Industrial Software: An Empirical Study on Python Projects</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">50EB02D5F1EC5DDEBDF012E11301A437</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T17:14+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Test Smells</term>
					<term>Python Testing</term>
					<term>Industrial Projects</term>
					<term>Open Source Projects</term>
					<term>Test Code Quality</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Test smells, a type of anti-pattern, refer to poorly designed tests that can undermine the effectiveness, maintainability, and overall quality of test suites, as well as the reliability of production code. Test smells have been extensively investigated in the literature for open-source projects from different viewpoints such as detection, analysis, impact on maintainability and quality issues. However, whether the occurrence of test smells differs between open-source and industrial projects has not yet been investigated. This study aims to bridge that gap by investigating the types, occurrence and distribution of test smells in both open-source and industrial projects. Moreover, this study explores whether the volume of test code differs between open-source and industrial projects to gain insights into the test-writing practices in both environments. For this purpose, 64 open-source and 11 industrial Python projects were analyzed to detect and examine the prevalence of 18 distinct test smells. 14 types of test smells were identified in open-source projects, averaging 601.58 smells per project, while 10 types were identified in industrial projects, with an average of 48.72 smells per project. Assertion Roulette and Conditional Logic Test are the two most frequently occurring test smells observed in both environments. The results of the study indicate that test smells occur more frequently in open-source projects compared to industrial projects, as confirmed by one-tailed t-test, while a two-tailed t-test revealed no significant difference in the volume of test code between the two environments. These findings suggest that open-source projects and industrial projects have differences in maintaining clean and high-quality test code. Future work should explore how specific development practices contribute to this difference across both project types.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>Test smells are suboptimal patterns in test code that can negatively impact the effectiveness <ref type="bibr" target="#b0">[1]</ref> of software testing by reducing test maintainability, reliability, and eventually hampering software quality <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b2">3,</ref><ref type="bibr" target="#b3">4,</ref><ref type="bibr" target="#b4">5]</ref>. Developers usually introduce test smells due to less awareness in design and program comprehensibility <ref type="bibr" target="#b5">[6]</ref>. Test smells can occur in both categories of software development environments-industrial and open-source projects <ref type="bibr" target="#b6">[7,</ref><ref type="bibr" target="#b7">8]</ref>. Due to time, budget constraints, and software release pressure in the industry, systems are developed in a different setting compared to open-source projects. Additionally, open-source software grows more quickly than industrial projects which could have an impact on the occurrences of test smells and test writing practices between these two contexts <ref type="bibr" target="#b8">[9]</ref>.</p><p>Test smells were initially introduced to highlight issues in test code within software systems <ref type="bibr" target="#b9">[10]</ref>, but later they have been used as a measure of quality of software projects. Researchers found that test smells are associated with software quality <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b10">11]</ref>, fault-proneness <ref type="bibr" target="#b11">[12,</ref><ref type="bibr" target="#b12">13]</ref>, and maintainability issues in software systems <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b13">14,</ref><ref type="bibr" target="#b14">15]</ref>. Although there has been extensive research on test smells in open-source projects, to the best of our knowledge, no studies have focused on test smell detection across both open-source and industrial projects. Identifying and addressing frequent test smells in both contexts can significantly improve software maintainability and reliability. This leads to the following research questions: To address these research questions, an empirical analysis was conducted on 75 Python projects, including 64 popular open-source projects and 11 industrial projects. Opensource projects have been selected based on criteria such as consistent development activity, unique project purpose, and substantial contributions. On the other hand, industrial projects were selected using convenience sampling <ref type="bibr" target="#b3">[4,</ref><ref type="bibr" target="#b15">16]</ref> from software companies based on data accessibility and industry willingness to share information. The selected industrial projects have been developed following the standard Software Development Life Cycle (SDLC) model and are currently used by clients. A set of 18 test smells has been chosen for the investigation. To detect these test smells, PyNose <ref type="bibr" target="#b16">[17]</ref>  frequently in open-source projects compared to industrial projects, even though the volume of test code is not significantly higher in open-source projects. For the remaining 6 test smells, the analysis showed no significant difference in their frequency between open-source and industrial projects. Additionally, two-tailed hypothesis testing supports this finding, indicating minimal differences in test code volume across environments, with 6 out of 7 null hypotheses accepted.</p><p>The rest of the paper is organized as follows. Section 2 discusses existing work in the field of test smell analysis and detection. Section 3 describes the methodology used to design this empirical study. Section 4 presents the results and provides a detailed analysis based on the research questions. In Section 5, we address the threats to the validity of our study, and we conclude in Section 6.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Related Work</head><p>In recent years, test smells have become a crucial area of research in software engineering. Studies have focused on the automated detection, mitigation, and impact evaluation of test smells on software quality. Early work aimed to define various types of test smells <ref type="bibr" target="#b9">[10]</ref>, while more recent studies have explored detection techniques <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b17">18]</ref> and the development of specialized tools for detecting test smells across different programming languages, such as Java, C#, Python, and Scala <ref type="bibr" target="#b18">[19,</ref><ref type="bibr" target="#b19">20,</ref><ref type="bibr" target="#b16">17,</ref><ref type="bibr" target="#b20">21]</ref>. Furthermore, several studies have investigated the evolution of test smells and their influence on software maintenance and quality <ref type="bibr" target="#b2">[3,</ref><ref type="bibr" target="#b21">22,</ref><ref type="bibr" target="#b1">2,</ref><ref type="bibr" target="#b22">23,</ref><ref type="bibr" target="#b13">14]</ref>.</p><p>The concept of test smells was introduced by Van Deursen et al. <ref type="bibr" target="#b9">[10]</ref>, who defined them as signs of poor practices in test code. They identified 11 test smells, which laid the groundwork for understanding how suboptimal testing can impact software quality and maintenance. Expanding on this, Hauptmann et al. <ref type="bibr" target="#b23">[24]</ref> introduced Natural Language Test Smells (NLTS) to address issues related to the maintainability, readability, and efficiency of manual test cases. Soares et al. <ref type="bibr" target="#b24">[25]</ref> further refined this idea by cataloging eight NLTS, validated through empirical research and natural language processing (NLP) analysis. Additionally, the Open Catalog of Test Smells offers a comprehensive resource by consolidating information from 127 sources to support the identification and understanding of test smells in various contexts <ref type="bibr" target="#b25">[26]</ref>.</p><p>In recent years, specialized tools have emerged to aid in the identification and mitigation of test smells. Initially, research concentrated on statically typed languages like Java and Scala. Virginio et al. <ref type="bibr" target="#b19">[20]</ref> developed JNose, a tool for detecting 21 types of test smells in Java, followed by tsDetect <ref type="bibr" target="#b18">[19]</ref>, which detects 19 types. Later, tools for Python, including pytest-smell <ref type="bibr" target="#b20">[21]</ref> and PyNose <ref type="bibr" target="#b16">[17]</ref>, were introduced, with PyNose also introducing the "suboptimal assert" test smell. Pontillo et al. <ref type="bibr" target="#b17">[18]</ref> proposed machine learning-based detection methods, while Palomba et al. <ref type="bibr" target="#b14">[15]</ref> expanded test smell detection to automatic techniques using information retrieval methods. More recently, Lucas et al. <ref type="bibr" target="#b26">[27]</ref> explored the use of large language models (LLMs) like ChatGPT-4, Mistral Large, and Gemini Advanced for test smell detection, demonstrating the potential of LLMs in this domain.</p><p>Test smells are often linked to flaky tests, which produce inconsistent results and undermine test reliability. Garousi et al. <ref type="bibr" target="#b6">[7]</ref> and Martins et al. <ref type="bibr" target="#b10">[11]</ref> found that certain test smells, such as external dependencies and non-deterministic behavior, contribute to flaky tests, masking genuine defects. Palomba and Zaidman <ref type="bibr" target="#b27">[28]</ref> identified key smells that frequently co-occur with flaky tests, while Camara et al. <ref type="bibr" target="#b28">[29]</ref> showed that incorporating test smells into flaky test prediction models outperforms traditional vocabulary-based approaches. These findings underscore the importance of mitigating test smells to enhance software reliability.</p><p>Further research has explored the impact of test smells on software quality, maintainability, and reliability. Spadini et al. <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b5">6]</ref> investigated the relationship between test smells and software quality, while Kim et al. <ref type="bibr" target="#b22">[23]</ref> examined how test smells evolve and affect software maintenance. Qusef et al. <ref type="bibr" target="#b11">[12]</ref> established a connection between test smells and fault-proneness, indicating their potential negative impact on software reliability.</p><p>In the context of open-source versus industrial projects, Fushihara et al. <ref type="bibr" target="#b29">[30]</ref> showed that test smells persist and evolve over time, particularly in open-source projects. The differences between these two environments are often attributed to varying levels of emphasis on test quality. Recent studies have also examined how test smells and refactoring are discussed within online communities like Stack Exchange, revealing insights from both industry and academia <ref type="bibr" target="#b10">[11]</ref>.</p><p>While previous research has explored test smells in various software environments, there is a notable lack of comparative studies focusing on how these smells manifest in open-source versus industrial projects. Given the differences in development practices and priorities, understanding these variations is crucial for tailoring detection techniques and improving test quality. To address this gap, we conduct an empirical analysis. This study investigates the types of test smells prevalent in both open-source and industrial projects. It also examines how the prevalence of these smells differs between the two environments, as well as how the volume of test code compares across them.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Methodology</head><p>This study aims to understand the occurrences, types and the distribution of test smells in open-source and industrial projects. It also seeks to assess the extent to which the distribution of test smells differs between open-source and industrial projects. To achieve this, the study analyzes 64 open-source projects and 11 industrial projects, all written in Python. Test smells within these projects are identified using a tool named PyNose<ref type="foot" target="#foot_0">1</ref> . Then, the collected data are analyzed using the metrics Spreadity <ref type="bibr" target="#b30">[31]</ref> and Inverse Smell Frequency (ISFi) <ref type="bibr" target="#b31">[32]</ref>. Finally, statistical hypothesis tests are conducted to evaluate differences in test smell frequency and test code volume between open-source and industrial projects. The overall methodology is described in detail in the following subsections. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Dataset Collection</head><p>A dataset comprising 75 extensive Python projects-64 opensource projects and 11 industrial projects-serves as the foundation for our analysis. The open-source projects were chosen based on specific criteria: they must have more than 50 stars on GitHub, not be forked, have over 1,000 commits, include at least 10 contributors, possess a development history spanning more than two years, be actively maintained within the last two years, and primarily use Python as their programming language.</p><p>In selecting industrial project, convenience sampling [4] strategy was employed. This non-random technique was used because data collection on industrial projects largely depends on the accessibility, willingness, and readiness of software companies to share their data. In this study, 11 industrial projects were collected from different software companies of Bangladesh. Selection criteria included a minimum project size of 6,000 lines of code (LOC), a minimum of 500 commits to ensure development activity, and comprehensive test code (with at least 1,000 lines of test code).</p><p>The dataset was carefully curated to represent a diverse range of testing practices, providing a robust foundation for comparing test smells in both open-source and industrial projects. Key attributes, such as lines of code (KLOC), number of methods (NOM), and number of classes (NOC), are detailed in Table <ref type="table" target="#tab_1">1 and Table 2</ref>. These tables offer a clear overview of the projects' core characteristics, presented without any initial analysis. The complete dataset used in this study is available in the online appendix.<ref type="foot" target="#foot_1">2</ref> </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Test Smell Detection</head><p>Detecting test smells in Python typically involves a static code analysis process that inspects the structure of test code to identify patterns known to impact test maintainability, readability, and reliability. This approach systematically scans Python test classes-particularly those derived from the unittest framework-focusing on elements such as assertion statements, control structures, and setup and teardown methods. By examining these components, static analysis tools can identify common test smells like Assertion Roulette, Eager Test, and Test Duplication, which complicate debugging and future modifications. Consider the code snippet in Listing 1, which provides an example of a common test smell.</p><p>Listing 1: Test Smell Example import u n i t t e s t c l a s s E x a m p l e T e s t ( u n i t t e s t . T e s t C a s e ) :</p><p>def t e s t _ v a l u e s ( s e l f ) : r e s u l t = g e t _ v a l u e s ( ) s e l f . a s s e r t E q u a l ( r e s u l t [ 0 ] , 1 0 ) s e l f . a s s e r t T r u e ( r e s u l t [ 1 ] &gt; 5 ) s e l f . a s s e r t E q u a l ( r e s u l t <ref type="bibr" target="#b1">[ 2 ]</ref> , " e x p e c t e d _ v a l u e " ) i f __name__ == ' __main__ ' : u n i t t e s t . main ( )</p><p>In this example, the test contains multiple assertions without descriptive messages, which is a classic case of the "Assertion Roulette" test smell. This occurs when multiple assertions are made without context, making it difficult to diagnose failures. Such smells are detected using rule-based methods, as described by Aljedaani et al. <ref type="bibr" target="#b32">[33]</ref>, which identify tests with multiple assertions lacking clarity. Metrics like cosine similarity can also highlight a "Lack of Cohesion" in the test case.</p><p>The methodology uses predefined thresholds for various metrics, such as local variables and hard-coded values, based on best practices in software testing. This structured approach identifies issues like redundant setups, poorly named tests, and excessive complexity. For our study, we utilize PyNose <ref type="bibr" target="#b16">[17]</ref>, which is effective in detecting a broad range of test smells, as demonstrated in previous research <ref type="bibr" target="#b33">[34,</ref><ref type="bibr" target="#b34">35,</ref><ref type="bibr" target="#b35">36]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.">Test Smell Analysis</head><p>To systematically analyze the distribution of test smells within our dataset, we use two key metrics: Spreadity and Inverse Smell Frequency (ISFi) <ref type="bibr" target="#b31">[32]</ref>, along with statistical hypothesis testing techniques to examine the differences in test smell occurrences between open-source and industrial projects. These metrics are commonly used to evaluate the distribution and frequency of smells in software research <ref type="bibr" target="#b30">[31]</ref>.</p><p>Spreadity: To measure the presence of test smells across the analyzed projects, we utilize the metric called Spreadity as shown in Equation <ref type="formula" target="#formula_0">1</ref>. Spreadity calculates the proportion of projects that contain a specific test smell, providing insight into how common a particular smell is within the dataset.</p><formula xml:id="formula_0">Spreadity(𝑥) = 𝑛(𝑥) 𝑁<label>(1)</label></formula><p>where 𝑥 denotes the test smell, 𝑛(𝑥) is the number of projects containing the smell 𝑥, and 𝑁 represents the total number of projects analyzed. A higher Spreadity value indicates that a larger proportion of projects are affected by the test smell, with a maximum value of 1 if all projects contain the smell.</p><p>Inverse Smell Frequency (ISFi): To gain a deeper understanding of the occurrence of test smells, we calculate the Inverse Smell Frequency (ISFi) metric using the Equation <ref type="formula">2</ref>. This metric is used to analyze code smell frequency and occurrences <ref type="bibr" target="#b30">[31]</ref>. It normalizes the frequency of a test smell relative to specific software metrics, such as Test Lines of Code (TLOC), Test Number of Methods (TNOM), and Test Number of Classes (TNOC).</p><formula xml:id="formula_1">ISFi(metric) = Metric Value Smell Count𝑖 (2)</formula><p>where the metric values could be TLOC, TNOM, or TNOC, and Smell Count𝑖 represents the occurrence of a particular test smell 𝑖. Lower ISFi values indicate a higher frequency of the test smell, suggesting that it is more prevalent in the code.</p><p>Statistical Tests of Hypothesis: The differences in test smell occurrences between open-source and industrial projects are examined using t-tests, a widely accepted method for comparing the means of two independent groups.</p><p>A one-tailed t-test is performed to determine if there are significant differences in the prevalence of specific test smells between open-source and industrial projects. The one-tailed approach is used because we hypothesize that the occurrence of test smells will be higher in opensource projects compared to industrial projects, based on previous observations of faster development cycles and less formal testing practices in open-source environments. The alternative hypothesis suggests that the occurrence of test smells is higher in industrial projects, while the null hypothesis assumes no significant difference. The test is conducted at a 5% significance level.</p><p>Additionally, a two-tailed t-test was used to assess whether there were any significant differences in the volume of test code between open-source and industrial projects. In this analysis, the alternative hypothesis proposes a difference in test code volume, while the null hypothesis assumes no difference. The test was conducted at a 5% significance level, with specific metrics analyzed to determine any significant variations between the two environments.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Result Analysis</head><p>This section presents the findings from our study, addressing each research question by analyzing the occurrences of test smells in industrial and open-source projects. We highlight the types of test smells, their frequency, differences in occurrence between environments, and insights into testwriting practices in the software industry.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1.">RQ1: What types of test smells are prevalent in open-source and industrial Python projects?</head><p>To address RQ1, we analyze the presence of test smells in both open-source and industrial projects. Our study identifies 14 distinct test smells across these environments, with notable differences in their presence and frequency, as shown in Table <ref type="table" target="#tab_4">4</ref>.  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2.">RQ2: How does the prevalence of test smells differ between open-source and industrial Python projects?</head><p>The  The analysis reveals that test smells such as Assertion Roulette (AR) and Conditional Test Logic (CTL) are notably more prevalent in open-source projects compared to industrial projects. This conclusion is based on both the spread and average frequency metrics, as shown in Figure <ref type="figure" target="#fig_3">2</ref>. Additionally, Figures <ref type="figure" target="#fig_7">3, 4</ref>, and 5 illustrate the ISFi scores for TLOC, TNOM, and TNOC across all the test smells under study. The four common smells that did not appear in any system are excluded, as discussed in response to RQ1.      <ref type="table">2</ref>.</p><p>In order to corroborate these observations, a one-tailed t-test with a 5% significance level is used to conduct a statistical hypothesis test. The p-value is displayed in the final column of Table <ref type="table" target="#tab_4">4</ref>, and the value that rejects the null hypothesis is bolded. null hypothesis states that there no difference the occurrence of a particular test smell between open-source industrial projects, while the alternative hypothesis refers that the open-source system has higher occurrences. The p-values in Table <ref type="table" target="#tab_4">4</ref> indicate that the null hypothesis is rejected for 8 out of the 14 test smells, suggesting a statistically significant higher occurrence of these smells in open-source projects. These findings emphasize that open-source projects are more susceptible to frequent and diverse test smells compared to industrial projects, highlighting the need for targeted improvements in test-writing practices within the opensource community. The null hypothesis (𝐻0) posits that there is no significant difference in the volume of test code between open-source and industrial Python projects (𝜇 Industry = 𝜇Open Source). In contrast, the alternative hypothesis (𝐻1) suggests that the test code volume differs between the two environments (𝜇 Industry ̸ = 𝜇Open Source). Table <ref type="table" target="#tab_5">5</ref> provides the t-test results comparing these metrics across open-source and industrial projects. While most metrics, such as Total Test Files, Test LOC, Test NOC, and Test NOM, did not show statistically significant differences, the Test NOC per File metric, with a pvalue of 0.009, indicates a notable distinction in the number of test classes per file between the two environments. This finding suggests a potential structural difference in test code organization across open-source and industrial projects.</p><p>The t-test was conducted for all test code metrics extracted from both industrial and open-source projects. The null hypothesis was accepted for 6 metrics, indicating no statistically significant difference in test code volume or structure between the industrial and open-source projects for most metrics. However, the null hypothesis was rejected for 1 metric, Test NOC per File (marked in bold in Table <ref type="table" target="#tab_5">5</ref>), supporting the claim that the number of test classes per file in open-source projects is significantly different from that in industrial projects, suggesting a distinct approach to organizing test classes. These findings are summarized in Table <ref type="table" target="#tab_5">5</ref>, showing that for the majority of metrics (6 out of 7), there is no significant difference in test code volume between open-source and industrial projects. This suggests that, with respect to basic testing characteristics like the number of test files, lines of code, and methods, both environments follow relatively similar practices.</p><p>However, the significant difference in the Test NOC per File metric highlights that open-source projects may organize test classes differently, potentially due to variations in project structure, coding standards, or collaborative development practices typical in open-source environments.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Threats to Validity</head><p>This section addresses construct, external, and reliability threats that may affect the validity of our empirical investigation <ref type="bibr" target="#b36">[37]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.1.">Construct Validity</head><p>The accuracy of PyNose, our test smell detection tool, may affect construct validity. Any inaccuracies in detecting test smells could lead to incorrect conclusions regarding their presence and significance. To minimize this risk, we used PyNose, a widely recognized tool in test smell detection with reliability confirmed in prior studies.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.2.">External Validity</head><p>Our findings' generalizability is limited by several external validity threats. First, this study focuses on Python-based projects, so results may not fully apply to projects in other languages like Java or C#. Additionally, the dataset comprises 11 industrial projects from Bangladesh and 64 open-source projects, which may not represent the broader global industry practices. The industrial projects come from a specific sector that may have unique testing practices. To address these threats, we included well-known open-source projects with diverse testing practices.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.3.">Reliability Validity</head><p>Reliability concerns arise from the need to ensure replicability, particularly for industrial data. Due to confidentiality constraints, we cannot disclose details about the industrial projects, limiting direct replication. However, open-source project findings are fully replicable, as these projects and the PyNose tool are publicly accessible. For further validation, future studies could replicate the analysis with similar industrial datasets.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Conclusion</head><p>This research investigates the occurrence, distribution, and frequency of test smells in both industrial and opensource projects, highlighting the differences between these two environments. The inclusion of industrial projects alongside open-source ones adds depth to the study, as it reveals distinct patterns in the prevalence of test smells. Although Assertion Roulette (AR) is the most common test smell, appearing in 92% of open-source projects and 81% of industrial projects, a one-tailed t-test shows significant differences in the overall prevalence of test smells between these two types of projects.</p><p>Furthermore, 10 out of 18 test smells were observed in industrial projects, while 14 out of 18 test smells were detected in open-source projects. Notably, 8 out of the 14 test smells showed a significantly higher occurrence in opensource projects. Analyzing test writing practices, we found no significant differences in 6 out of 7 metrics between industrial and open-source projects, except for the number of test classes per file (TNOC). These findings will assist developers in reducing test smells during software development and provide insights for researchers to refine smell refactoring techniques, particularly in terms of frequency and distribution. Future work should explore how specific development practices contribute to these differences between project types, offering a deeper understanding of how coding conventions and workflows influence test smell occurrence. Further research could also investigate automated refactoring techniques that account for these structural and volumetric differences to better support quality improvements in both open-source and industrial projects.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>•:</head><label></label><figDesc>RQ1What types of test smells are prevalent in open-source and industrial Python projects? • RQ2: How does the prevalence of test smells differ between open-source and industrial Python projects? QuASoQ 2024: 12th International Workshop on Quantitative Approaches to Software Quality, December 03, 2024, Chongqing, China bsse1112@iit.du.ac.bd (M. A. Hasan); toukir@iit.du.ac.bd (T. Ahammed) • RQ3: How does the volume of test code differ between open-source and industrial Python projects?</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head></head><label></label><figDesc>aim of RQ2 is to identify the most frequent and widespread test smells that significantly affect both industrial and open-source projects. Our analysis reveals that test smells are generally more frequent in open-source projects, with an average frequency of 601.57 test smells per project compared to 48.72 in industrial projects. Assertion Roulette (AR) is observed as the most widespread test smell in both open-source and industrial projects, with spreadity values of 0.92 and 0.81, depicted in Figure 1. Similarly, Conditional Test Logic (CTL) has a spreadity of 0.92 in open-source projects but only 0.63 in industrial projects. While Magic Number Test (MNT) ranks as the second most frequent smell in industrial projects, its position drops to fifth in open-source projects, despite having a slightly higher spreadity in open-source (0.76) than in industrial environments (0.72). Certain test smells, such as Test Maverick (TM), Sleepy Test (ST), Lack of Cohesion of Test Cases (LCTC), and Constructor Initialization (CI), are found exclusively in open-source projects and are completely absent from industrial projects. This indicates a clear divergence in test practices, with these smells being specific to the open-source context.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Spreadity of each test smell</figDesc><graphic coords="5,72.00,500.02,213.68,127.41" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Average frequency of each test smell</figDesc><graphic coords="5,309.59,207.88,213.67,90.69" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: ISFi(TLOC) Score Comparison for each test smell</figDesc><graphic coords="5,309.59,333.66,213.68,105.99" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: ISFi(TNOM) Score Comparison for each test smell</figDesc><graphic coords="5,309.59,474.73,213.68,105.99" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: ISFi(TNOC) Score Comparison for each test smell</figDesc><graphic coords="6,72.00,187.16,213.68,105.99" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>4. 3 .</head><label>3</label><figDesc>RQ3: How does the volume of test code differ between open-source and industrial Python projects?To explore differences in test code volume between opensource and industrial Python projects, we analyzed key metrics including the number of test files, Test Lines of Code (TLOC), number of test classes (TNOC), and number of test methods (TNOM). These metrics, normalized for project size variations, were assessed to enable a fair comparison between the two environments. Analyzing test code volume provides a foundational understanding that complements the examination of test smells across these projects. Differences in test smell prevalence could be influenced by the ratio of test code to production code, making test code volume an essential aspect to assess. This approach sheds light not only on the presence of test smells but also on potential structural distinctions in test code organization and density across open-source and industrial projects.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>-a popular test smell detection tool for Python test code, is used. After detecting test smells, frequent test smells are identified and assessed whether the occurrence of test smells differs between open source and industrial projects. The results of the study show that 14 types of test smells were found in open-source projects and 10 types of test smells in industrial projects. Assertion Roulette (AR) is the most common test smell found in both open-source and industrial projects, indicating widespread issues in assertion practices across environments. In industrial projects, the top 3 occurring test smells are Assertion Roulette (AR), Magic Number Test (MNT), and Conditional Test Logic (CTL). Meanwhile, in open-source projects, the top three are Assertion Roulette (AR), Conditional Test Logic (CTL), and Duplicate Assertion (DA). This finding highlights the distinct patterns of test smell occurrence in open-source and industrial projects. Our analysis shows that test smells are more prevalent and concentrated in open-source projects, with an average of 601.58 test smells per project compared to 48.72 per project in industrial projects. Assertion Roulette (AR) is the most widespread test smell in both environments, though it appears in 92% of open-source projects and 81% of industrial projects. On average, Assertion Roulette occurs for every 262 lines of test code in industrial projects and every 212 lines in open-source projects. Statistical analysis conducted using a one-tailed t-test shows that 8 out of 14 test smells occur more</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 1</head><label>1</label><figDesc>Production Code Metrics</figDesc><table><row><cell>Projects Category</cell><cell>Number of Projects</cell><cell>Total</cell><cell cols="2">KLOC Average</cell><cell>Total</cell><cell cols="2">NOM Average</cell><cell>Total</cell><cell>NOC Average</cell></row><row><cell>Open-Source Project</cell><cell>64</cell><cell cols="2">18012</cell><cell>281</cell><cell cols="2">603118</cell><cell>9428</cell><cell>145659</cell><cell>2276</cell></row><row><cell>Industrial Project</cell><cell>11</cell><cell>2592</cell><cell></cell><cell>236</cell><cell>86045</cell><cell></cell><cell>7822</cell><cell>23355</cell><cell>2123</cell></row><row><cell>Table 2</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>Test Code Metrics</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>Projects Category</cell><cell>Number of Projects</cell><cell cols="3">Test KLOC Total Average</cell><cell cols="3">Test NOM Total Average</cell><cell>Total</cell><cell>NOC Average</cell></row><row><cell>Open Source Project</cell><cell>64</cell><cell cols="2">2882</cell><cell>45</cell><cell cols="2">317810</cell><cell>4966</cell><cell>23730</cell><cell>371</cell></row><row><cell>Industrial Project</cell><cell>11</cell><cell>62</cell><cell></cell><cell>6</cell><cell>7422</cell><cell></cell><cell>675</cell><cell>650</cell><cell>59</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 3</head><label>3</label><figDesc>Test Smell Occurrences in Industrial and Open-Source Projects</figDesc><table><row><cell></cell><cell cols="2">Number of affected projects</cell></row><row><cell>Test Smell</cell><cell>Industrial</cell><cell>Open source</cell></row><row><cell>Assertion Roulette</cell><cell>9</cell><cell>59</cell></row><row><cell>Conditional Test Logic</cell><cell>7</cell><cell>59</cell></row><row><cell>Duplicate Assertion</cell><cell>6</cell><cell>55</cell></row><row><cell>Exception Handling</cell><cell>4</cell><cell>51</cell></row><row><cell>Magic Number Test</cell><cell>8</cell><cell>49</cell></row><row><cell>Obscure In-Line Setup</cell><cell>4</cell><cell>40</cell></row><row><cell>Redundant Assertion</cell><cell>4</cell><cell>31</cell></row><row><cell>Redundant Print</cell><cell>2</cell><cell>29</cell></row><row><cell>Test Maverick</cell><cell>-</cell><cell>19</cell></row><row><cell>Sleepy Test</cell><cell>-</cell><cell>17</cell></row><row><cell>Empty Test</cell><cell>1</cell><cell>17</cell></row><row><cell>Lack of Cohesion</cell><cell>-</cell><cell>7</cell></row><row><cell>Suboptimal Assert</cell><cell>2</cell><cell>7</cell></row><row><cell>Constructor Initialization</cell><cell>-</cell><cell>2</cell></row><row><cell cols="3">Assertion Roulette (AR) emerges as the most frequently</cell></row><row><cell cols="3">occurring test smell in both open-source and industrial</cell></row><row><cell>projects based on the</cell><cell></cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head>Table 3 .</head><label>3</label><figDesc>It is occurred in 9 out of 11 industrial and 59 out of 64 open-source projects. This indicates a widespread issue with AR in both environments, suggesting a need for better assertion practices in test code. In open-source projects, the top 3 test smells based on project count are Assertion Roulette (AR), Conditional Test Logic (CTL), and Duplicate Assertion (DA), which are consistently present and indicative of complex assertion patterns in open-source projects.However, industrial projects display a slightly different ranking of test smells. When sorted by the number of projects in which they are found, the order is Assertion</figDesc><table><row><cell>Roulette (AR) &gt; Magic Number Test (MNT) &gt; Conditional</cell></row><row><cell>Test Logic (CTL). In contrast, when ranked by their total</cell></row><row><cell>occurrences (frequency) in the open-source projects, as</cell></row><row><cell>shown in Table 4, the order shifts to Assertion Roulette (AR)</cell></row><row><cell>&gt; Conditional Test Logic (CTL) &gt; Magic Number Test (MNT).</cell></row><row><cell>This variation highlights that while some test smells like AR</cell></row><row><cell>are universally problematic, other smells vary in significance</cell></row><row><cell>depending on the environment, indicating different testing</cell></row><row><cell>practices or priorities between industrial and open-source</cell></row><row><cell>projects.</cell></row><row><cell>The dominance of test smells like AR and CTL highlights</cell></row><row><cell>common weaknesses in both open-source and industrial</cell></row><row><cell>projects, pointing to the need for improved testing strategies</cell></row><row><cell>that prioritize clarity and simplicity in test code. Identifying</cell></row><row><cell>and addressing these frequent test smells can significantly</cell></row><row><cell>enhance the maintainability and reliability of software</cell></row><row><cell>projects in both environments.</cell></row><row><cell>Moreover, we identify a few test smells that are entirely</cell></row><row><cell>absent in both open-source and industrial projects. These</cell></row><row><cell>test smells include Default Test (DT), General Fixture (GF),</cell></row><row><cell>Ignored Test (IT), and Unknown Test (UT). Additionally, four</cell></row><row><cell>specific test smells-Constructor Initialization (CI), Lack of</cell></row><row><cell>Cohesion of Test Cases (LCTC), Sleepy Test (ST), and Test</cell></row><row><cell>Maverick (TM)-are present exclusively in open-source</cell></row><row><cell>projects and are completely absent from industrial projects.</cell></row><row><cell>This absence indicates a divergence in testing practices</cell></row><row><cell>between these environments, with certain test smells being</cell></row><row><cell>specific to open-source development contexts.</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head>Table 4</head><label>4</label><figDesc>Comparison of Test Smell Occurrences between Industrial and Open-source Projects</figDesc><table><row><cell></cell><cell></cell><cell></cell><cell cols="2">Industrial Projects</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell cols="2">Open-source Projects</cell><cell></cell><cell></cell><cell></cell></row><row><cell>Test Smell</cell><cell>Total Freq.</cell><cell>Avg Freq./ Proj.</cell><cell>Spreadity</cell><cell>ISFi(TLOC)</cell><cell>ISFi(TNOM)</cell><cell>ISFi(TNOC)</cell><cell>Total Freq.</cell><cell>Avg Freq./ Proj.</cell><cell>Spreadity</cell><cell>ISFi(TLOC)</cell><cell>ISFi(TNOM)</cell><cell>ISFi(TNOC)</cell><cell>p-value</cell></row><row><cell>Assertion Roulette(AR)</cell><cell>235</cell><cell>21.36</cell><cell>0.82</cell><cell>262</cell><cell>32</cell><cell>3</cell><cell>13607</cell><cell>212.61</cell><cell>0.92</cell><cell>212</cell><cell>23</cell><cell>2</cell><cell>0.068</cell></row><row><cell>Conditional Test Logic(CTL)</cell><cell>115</cell><cell>10.45</cell><cell>0.64</cell><cell>536</cell><cell>65</cell><cell>6</cell><cell>10136</cell><cell>158.38</cell><cell>0.92</cell><cell>284</cell><cell>31</cell><cell>2</cell><cell>0.002</cell></row><row><cell>Constructor Initialization(CI)</cell><cell>0</cell><cell>0</cell><cell>0.00</cell><cell>NA</cell><cell>NA</cell><cell>NA</cell><cell>130</cell><cell>2.03</cell><cell>0.03</cell><cell>22167</cell><cell>2445</cell><cell>183</cell><cell>0.119</cell></row><row><cell>Duplicate Assertion(DA)</cell><cell>51</cell><cell>4.64</cell><cell>0.55</cell><cell>1209</cell><cell>146</cell><cell>13</cell><cell>6185</cell><cell>96.64</cell><cell>0.86</cell><cell>466</cell><cell>51</cell><cell>4</cell><cell>0.0002</cell></row><row><cell>Empty Test(ET)</cell><cell>3</cell><cell>0.27</cell><cell>0.09</cell><cell>20561</cell><cell>2474</cell><cell>217</cell><cell>106</cell><cell>1.66</cell><cell>0.27</cell><cell>27186</cell><cell>2998</cell><cell>224</cell><cell>0.082</cell></row><row><cell>Exception Handling(EH)</cell><cell>10</cell><cell>0.91</cell><cell>0.36</cell><cell>6168</cell><cell>742</cell><cell>65</cell><cell>1494</cell><cell>23.34</cell><cell>0.80</cell><cell>1929</cell><cell>213</cell><cell>16</cell><cell>0.0001</cell></row><row><cell>Lack of Cohesion of Test Cases(LCTC)</cell><cell>0</cell><cell>0</cell><cell>0.00</cell><cell>NA</cell><cell>NA</cell><cell>NA</cell><cell>544</cell><cell>8.50</cell><cell>0.11</cell><cell>5297</cell><cell>584</cell><cell>44</cell><cell></cell></row><row><cell>Magic Number Test(MNT)</cell><cell>72</cell><cell>6.55</cell><cell>0.73</cell><cell>857</cell><cell>103</cell><cell>9</cell><cell>3058</cell><cell>47.78</cell><cell>0.77</cell><cell>942</cell><cell>104</cell><cell>8</cell><cell>0.156</cell></row><row><cell>Obscure In-Line Setup(OIS)</cell><cell>5</cell><cell>0.45</cell><cell>0.36</cell><cell>12337</cell><cell>1484</cell><cell>130</cell><cell>669</cell><cell>10.45</cell><cell>0.62</cell><cell>4308</cell><cell>475</cell><cell>35</cell><cell>0.049</cell></row><row><cell>Redundant Assertion(RA)</cell><cell>16</cell><cell>1.45</cell><cell>0.36</cell><cell>3855</cell><cell>464</cell><cell>41</cell><cell>114</cell><cell>1.78</cell><cell>0.48</cell><cell>25278</cell><cell>2788</cell><cell>208</cell><cell>0.178</cell></row><row><cell>Redundant Print(RP)</cell><cell>4</cell><cell>0.36</cell><cell>0.18</cell><cell>15421</cell><cell>1856</cell><cell>163</cell><cell>542</cell><cell>8.47</cell><cell>0.45</cell><cell>5317</cell><cell>586</cell><cell>44</cell><cell>0.036</cell></row><row><cell>Sleepy Test(ST)</cell><cell>0</cell><cell>0</cell><cell>0.00</cell><cell>NA</cell><cell>NA</cell><cell>NA</cell><cell>240</cell><cell>3.75</cell><cell>0.27</cell><cell>12007</cell><cell>1324</cell><cell>99</cell><cell>0.012</cell></row><row><cell>Suboptimal Assert(SA)</cell><cell>25</cell><cell>2.27</cell><cell>0.18</cell><cell>2467</cell><cell>297</cell><cell>26</cell><cell>744</cell><cell>11.63</cell><cell>0.11</cell><cell>3873</cell><cell>427</cell><cell>32</cell><cell>0.129</cell></row><row><cell>Test Maverick(TM)</cell><cell>0</cell><cell>0</cell><cell>0.00</cell><cell>NA</cell><cell>NA</cell><cell>NA</cell><cell>898</cell><cell>14.03</cell><cell>0.30</cell><cell>3209</cell><cell>354</cell><cell>26</cell><cell>0.001</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_5"><head>Table 5 t</head><label>5</label><figDesc>-test Results for Normalized Test Code Metrics (Mean) Between Industrial and Open-source Projects</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_6"><head>Metric Industrial Projects (Mean) Open-source Projects (Mean) t-test (2-tail) p-value</head><label></label><figDesc></figDesc><table><row><cell>Total Test Files</cell><cell>0.086297</cell><cell>0.166895</cell><cell>0.0848</cell></row><row><cell>Test LOC</cell><cell>0.119178</cell><cell>0.181811</cell><cell>0.2889</cell></row><row><cell>Test NOC</cell><cell>0.175402</cell><cell>0.161391</cell><cell>0.8047</cell></row><row><cell>Test NOM</cell><cell>0.524443</cell><cell>0.576357</cell><cell>0.8027</cell></row><row><cell>Test LOC per File</cell><cell>1.02626</cell><cell>1.020543</cell><cell>0.9772</cell></row><row><cell>Test NOC per File</cell><cell>2.070511</cell><cell>1.01271</cell><cell>0.009</cell></row><row><cell>Test NOM per File</cell><cell>5.157113</cell><cell>3.488941</cell><cell>0.0592</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">https://github.com/JetBrains-Research/PyNose.git</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">https://figshare.com/s/4789bd212185042cdad0</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">On the influence of test smells on test coverage</title>
		<author>
			<persName><forename type="first">T</forename><surname>Virgínio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Santana</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">A</forename><surname>Martins</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">R</forename><surname>Soares</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Costa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Machado</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the XXXIII Brazilian Symposium on Software Engineering</title>
				<meeting>the XXXIII Brazilian Symposium on Software Engineering</meeting>
		<imprint>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="467" to="471" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">On the relation of test smells to software code quality</title>
		<author>
			<persName><forename type="first">D</forename><surname>Spadini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Palomba</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Zaidman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Bruntink</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Bacchelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE international conference on software maintenance and evolution (ICSME), IEEE</title>
				<imprint>
			<date type="published" when="2018">2018. 2018</date>
			<biblScope unit="page" from="1" to="12" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">xUnit test patterns: Refactoring test code</title>
		<author>
			<persName><forename type="first">G</forename><surname>Meszaros</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
			<publisher>Pearson Education</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Sampling in software engineering research: A critical review and guidelines</title>
		<author>
			<persName><forename type="first">S</forename><surname>Baltes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Ralph</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">27</biblScope>
			<biblScope unit="page">94</biblScope>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">An empirical study of bugs in test code</title>
		<author>
			<persName><forename type="first">A</forename><surname>Vahabzadeh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Fard</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Mesbah</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">2015 IEEE international conference on software maintenance and evolution (ICSME), IEEE</title>
				<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="101" to="110" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">An empirical analysis of the distribution of unit test smells and their impact on software maintenance</title>
		<author>
			<persName><forename type="first">G</forename><surname>Bavota</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Qusef</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Oliveto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>De Lucia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Binkley</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">28th IEEE international conference on software maintenance (ICSM), IEEE</title>
				<imprint>
			<date type="published" when="2012">2012. 2012</date>
			<biblScope unit="page" from="56" to="65" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Smells in software test code: A survey of knowledge in industry and academia</title>
		<author>
			<persName><forename type="first">V</forename><surname>Garousi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Küçük</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of systems and software</title>
		<imprint>
			<biblScope unit="volume">138</biblScope>
			<biblScope unit="page" from="52" to="81" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><surname>Peruma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">S</forename><surname>Almalki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">D</forename><surname>Newman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">W</forename><surname>Mkaouer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Ouni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Palomba</surname></persName>
		</author>
		<title level="m">On the distribution of test smells in open source android applications: An exploratory study</title>
				<imprint>
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">An empirical study of open-source and closed-source software products</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">W</forename><surname>Paulson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Succi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Eberlein</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE transactions on software engineering</title>
		<imprint>
			<biblScope unit="volume">30</biblScope>
			<biblScope unit="page" from="246" to="256" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Refactoring test code</title>
		<author>
			<persName><forename type="first">A</forename><surname>Van Deursen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Moonen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Van Den</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Bergh</surname></persName>
		</author>
		<author>
			<persName><surname>Kok</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2nd international conference on extreme programming and flexible processes in software engineering (XP2001)</title>
				<meeting>the 2nd international conference on extreme programming and flexible processes in software engineering (XP2001)</meeting>
		<imprint>
			<publisher>Citeseer</publisher>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="92" to="95" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Hearing the voice of experts: Unveiling stack exchange communities&apos; knowledge of test smells</title>
		<author>
			<persName><forename type="first">L</forename><surname>Martins</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Campos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Santana</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Junior</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Costa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Machado</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE/ACM 16th International Conference on Cooperative and Human Aspects of Software Engineering (CHASE)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2023">2023. 2023</date>
			<biblScope unit="page" from="80" to="91" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">An exploratory study of the relationship between software test smells and fault-proneness</title>
		<author>
			<persName><forename type="first">A</forename><surname>Qusef</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">O</forename><surname>Elish</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Binkley</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Access</title>
		<imprint>
			<biblScope unit="volume">7</biblScope>
			<biblScope unit="page" from="139526" to="139536" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m" type="main">Fault-proneness of python programs tested by smelled test code</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Fushihara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Aman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Amasaki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Yokogawa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kawahara</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">The secret life of test smells-an empirical study on test smell evolution and maintenance</title>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">J</forename><surname>Kim</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T.-H</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Yang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">26</biblScope>
			<biblScope unit="page" from="1" to="47" />
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Automatic test smell detection using information retrieval techniques</title>
		<author>
			<persName><forename type="first">F</forename><surname>Palomba</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Zaidman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">De</forename><surname>Lucia</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE International Conference on Software Maintenance and Evolution (ICSME), IEEE</title>
				<imprint>
			<date type="published" when="2018">2018. 2018</date>
			<biblScope unit="page" from="311" to="322" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Empirical software engineering experts on the use of students and professionals in experiments</title>
		<author>
			<persName><forename type="first">D</forename><surname>Falessi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Juristo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Wohlin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Turhan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Münch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Jedlitschka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Oivo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="page" from="452" to="489" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Pynose: a test smell detector for python</title>
		<author>
			<persName><forename type="first">T</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Golubev</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Smirnov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Bryksin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Ahmed</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">36th IEEE/ACM international conference on automated software engineering (ASE), IEEE</title>
				<imprint>
			<date type="published" when="2021">2021. 2021</date>
			<biblScope unit="page" from="593" to="605" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Machine learningbased test smell detection</title>
		<author>
			<persName><forename type="first">V</forename><surname>Pontillo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Amoroso D'aragona</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Pecorelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Di Nucci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Ferrucci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Palomba</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">29</biblScope>
			<biblScope unit="page">55</biblScope>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Tsdetect: An open source test smells detection tool</title>
		<author>
			<persName><forename type="first">A</forename><surname>Peruma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Almalki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">D</forename><surname>Newman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">W</forename><surname>Mkaouer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Ouni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Palomba</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 28th ACM joint meeting on european software engineering conference and symposium on the foundations of software engineering</title>
				<meeting>the 28th ACM joint meeting on european software engineering conference and symposium on the foundations of software engineering</meeting>
		<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="1650" to="1654" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Jnose: Java test smell detector</title>
		<author>
			<persName><forename type="first">T</forename><surname>Virgínio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Martins</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Rocha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Santana</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Cruz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Costa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Machado</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the XXXIV Brazilian Symposium on Software Engineering</title>
				<meeting>the XXXIV Brazilian Symposium on Software Engineering</meeting>
		<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="564" to="569" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Pytest-smell: a smell detection tool for python unit tests</title>
		<author>
			<persName><forename type="first">A</forename><surname>Bodea</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis</title>
				<meeting>the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis</meeting>
		<imprint>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="793" to="796" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Are test smells really harmful? an empirical study</title>
		<author>
			<persName><forename type="first">G</forename><surname>Bavota</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Qusef</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Oliveto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>De Lucia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Binkley</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="page" from="1052" to="1094" />
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">An empirical study on the evolution of test smell</title>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">J</forename><surname>Kim</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Companion Proceedings</title>
				<meeting>the ACM/IEEE 42nd International Conference on Software Engineering: Companion Proceedings</meeting>
		<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="149" to="151" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Hunting for smells in natural language tests</title>
		<author>
			<persName><forename type="first">B</forename><surname>Hauptmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Junker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Eder</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Heinemann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Vaas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Braun</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">2013 35th International Conference on Software Engineering (ICSE), IEEE</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="1217" to="1220" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Manual tests do smell! cataloging and identifying natural language test smells</title>
		<author>
			<persName><forename type="first">E</forename><surname>Soares</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Aranda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Oliveira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Ribeiro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Gheyi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Souza</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Machado</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Santos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Fonseca</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Bonifácio</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2023">2023. 2023</date>
			<biblScope unit="page" from="1" to="11" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<monogr>
		<ptr target="https://test-smell-catalog.readthedocs.io/en/latest/" />
		<title level="m">The open catalog of test smells</title>
				<imprint>
			<date type="published" when="2024">2024. 2024-11-09</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<monogr>
		<author>
			<persName><forename type="first">K</forename><surname>Lucas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Gheyi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Soares</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Ribeiro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Machado</surname></persName>
		</author>
		<idno type="arXiv">arXiv:2407.19261</idno>
		<title level="m">Evaluating large language models in detecting test smells</title>
				<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
	<note type="report_type">arXiv preprint</note>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">The smell of fear: On the relation between test smells and flaky tests</title>
		<author>
			<persName><forename type="first">F</forename><surname>Palomba</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Zaidman</surname></persName>
		</author>
		<idno type="DOI">10.1007/s10664-018-9662-1</idno>
		<ptr target="https://link.springer.com/article/10.1007/s10664-018-9662-1" />
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">24</biblScope>
			<biblScope unit="page" from="2907" to="2946" />
			<date type="published" when="2019-03-26">2019. on 26 March 2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">On the use of test smells for prediction of flaky tests</title>
		<author>
			<persName><forename type="first">B</forename><surname>Camara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Silva</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Endo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Vergilio</surname></persName>
		</author>
		<idno type="DOI">10.1145/3482909.3482916</idno>
		<idno>doi:10.1145/3482909.3482916</idno>
		<ptr target="https://doi.org/10.1145/3482909.3482916" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 6th Brazilian Symposium on Systematic and Automated Software Testing</title>
				<meeting>the 6th Brazilian Symposium on Systematic and Automated Software Testing</meeting>
		<imprint>
			<date type="published" when="2021">2021</date>
			<biblScope unit="page" from="46" to="54" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">A trend analysis of test smells in python test code over commit history</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Fushihara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Aman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Amasaki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Yokogawa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kawahara</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">49th Euromicro Conference on Software Engineering and Advanced Applications (SEAA), IEEE</title>
				<imprint>
			<date type="published" when="2023">2023. 2023</date>
			<biblScope unit="page" from="310" to="314" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<analytic>
		<title level="a" type="main">An empirical study on the occurrences of code smells in open source and industrial projects</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">M</forename><surname>Rahman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Satter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">M A</forename><surname>Joarder</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Sakib</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 16th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement</title>
				<meeting>the 16th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement</meeting>
		<imprint>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="289" to="294" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b31">
	<monogr>
		<title level="m" type="main">Introduction to information retrieval</title>
		<author>
			<persName><forename type="first">H</forename><surname>Schütze</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">D</forename><surname>Manning</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Raghavan</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2008">2008</date>
			<publisher>Cambridge University Press Cambridge</publisher>
			<biblScope unit="volume">39</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b32">
	<analytic>
		<title level="a" type="main">Test smell detection tools: A systematic mapping study</title>
		<author>
			<persName><forename type="first">W</forename><surname>Aljedaani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Peruma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Aljohani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Alotaibi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">W</forename><surname>Mkaouer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Ouni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">D</forename><surname>Newman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Ghallab</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Ludi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 25th International Conference on Evaluation and Assessment in Software Engineering</title>
				<meeting>the 25th International Conference on Evaluation and Assessment in Software Engineering</meeting>
		<imprint>
			<date type="published" when="2021">2021</date>
			<biblScope unit="page" from="170" to="180" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b33">
	<analytic>
		<title level="a" type="main">Dynapyt: a dynamic analysis framework for python</title>
		<author>
			<persName><forename type="first">A</forename><surname>Eghbali</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pradel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering</title>
				<meeting>the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering</meeting>
		<imprint>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="760" to="771" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<analytic>
		<title level="a" type="main">Python code smells detection using conventional machine learning models</title>
		<author>
			<persName><forename type="first">R</forename><surname>Sandouka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Aljamaan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">PeerJ Computer Science</title>
		<imprint>
			<biblScope unit="volume">9</biblScope>
			<biblScope unit="page">e1370</biblScope>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b35">
	<analytic>
		<title level="a" type="main">Tempy: Test smell detector for python</title>
		<author>
			<persName><forename type="first">D</forename><surname>Fernandes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Machado</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Maciel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the XXXVI Brazilian Symposium on Software Engineering</title>
				<meeting>the XXXVI Brazilian Symposium on Software Engineering</meeting>
		<imprint>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="214" to="219" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b36">
	<monogr>
		<author>
			<persName><forename type="first">P</forename><surname>Runeson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Host</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rainer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Regnell</surname></persName>
		</author>
		<title level="m">Case study research in software engineering: Guidelines and examples</title>
				<imprint>
			<publisher>John Wiley &amp; Sons</publisher>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
