Davide Spadini's research while affiliated with Delft University of Technology and other places

Publications (13)

Article
Code review is a software development practice aimed at assessing code quality, finding defects, and sharing knowledge among developers. Despite its wide adoption, code review is a challenging task for developers, who often struggle to understand the content of a review change-set. Visualization techniques represent a promising approach to support...
Conference Paper
Test smells are poor design decisions implemented in test code, which can have an impact on the effectiveness and maintainability of unit tests. Even though test smell detection tools exist, how to rank the severity of the detected smells is an open research topic. In this work, we aim at investigating the severity rating for four test smells and i...
Conference Paper
In contemporary code review, the comments put by reviewers on a specific code change are immediately visible to the other reviewers involved. Could this visibility prime new reviewers' attention (due to the human's proneness to availability bias), thus biasing the code review outcome? In this study, we investigate this topic by conducting a control...
Preprint
Code smells are symptoms of poor design quality. Since code review is a process that also aims at improving code quality, we investigate whether and how code review influences the severity of code smells. In this study, we analyze more than 21,000 code reviews belonging to seven Java open-source projects; we find that active and participated code r...
Article
Full-text available
When testing software artifacts that have several dependencies, one has the possibility of either instantiating these dependencies or using mock objects to simulate the dependencies’ expected behavior. Even though recent quantitative studies showed that mock objects are widely used both in open source and proprietary projects, scientific knowledge...
Conference Paper
Test-Driven Code Review (TDR) is a code review practice in which a reviewer inspects a patch by examining the changed test code before the changed production code. Although this practice has been mentioned positively by practitioners in informal literature and interviews, there is no systematic knowledge of its effects, prevalence, problems, and ad...
Article
Contemporary code review is a widespread practice used by software engineers to maintain high software quality and share project knowledge. However, conducting proper code review takes time and developers often have limited time for review. In this paper, we aim at investigating the information that reviewers need to conduct a proper code review, t...
Conference Paper
Automated testing (hereafter referred to as just `testing') has become an essential process for improving the quality of software systems. In fact, testing can help to point out defects and to ensure that production code is robust under many usage conditions. However, writing and maintaining high-quality test code is challenging and frequently cons...
Conference Paper
Software repositories contain historical and valuable information about the overall development of software systems. Mining software repositories (MSR) is nowadays considered one of the most interesting growing fields within software engineering. MSR focuses on extracting and analyzing data available in software repositories to uncover interesting,...
Conference Paper
Background: During the period of one year, ING developed an approach for software analytics within an environment of a large number of software engineering teams working in a Continuous Delivery as a Service setting. Goal: Our objective is to examine what factors helped and hindered the implementation of software analytics in such an environment, i...
Conference Paper
Test smells are sub-optimal design choices in the implementation of test code. As reported by recent studies, their presence might not only negatively affect the comprehension of test suites but can also lead to test cases being less effective in finding bugs in production code. Although significant steps toward understanding test smells, there is...
Conference Paper
Automated testing is considered an essential process for ensuring software quality. However, writing and maintaining high-quality test code is challenging and frequently considered of secondary importance. For production code, many open source and industrial software projects employ code review, a well-established software quality practice, but the...
Conference Paper
When writing automated unit tests, developers often deal with software artifacts that have several dependencies. In these cases, one has the possibility of either instantiating the dependencies or using mock objects to simulate the dependencies' expected behavior. Even though recent quantitative studies showed that mock objects are widely used in O...

Citations

... The results indicated the developers are unaware of test smells and hardly remove them from the test code. Spadini et al10 argued that developers could not recognize test smells as problematic due to the lack of thresholds. The authors analyzed 1500 open-source software projects to identify thresholds for nine test smells and evaluated the practitioners to investigate their perception of test smells and strategies to handle them. ...
... Modern code review is considered effective in reducing programming defects and improving the quality of software in early phase of development [2,37,52]. Therefore, it is widely adopted nowadays in both open source and industry workflows [3]. Reviewers need to thoroughly understand the source code during code review activities and leave review comments to interact with developers. ...
... Code review is a widely adopted practice in software development in which one or more developers inspect the code written by another developer (Fagan 1976;Baum et al. 2019;Spadini et al. 2019) and recommend any useful or necessary changes to such code. ...
... Therefore, we used the number of test code lines (LOC-Test) to group projects into 70th, 80th, and 90th percentiles. 4 The small cluster has LOC-Test ≤ 1468, the medium size cluster has 1468 < LOC-Test ≤ 6993, and the large cluster has LOC-Test > 6993. ...
... In addition, testers may need to simulate interactions with physical target hardware that may not be available. When testing a unit that has external dependencies, the execution of the test may slow [12], much effort and cost needed to set up for testing [13], and testers should have full control over the external dependencies which is not usually the case, this could be for several reasons including that it has not been developed yet [11]. Moreover, even if the external service was available, after a few tests it will probably blocks testers as they have a limited number of calls they can perform every hour, day, or month. ...
... Following the preliminary investigation by Abid et al. [15]-who observed a correlation between the amount of refactoring operations applied and security metrics-we aimed at assessing the security implications of refactoring operations on security indicators in an effort to provide insights into the potential compromise a developer should pay attention to while improving source code quality. 39 We start facing this research objective using two analyses: the first focused on security-related metrics that indicate portions of source code whose characteristics may lead the code to be more exposed to security risks [23]; the second targeting technical debt [31] that highlights the design and implementation issues that might represent exploitable security flaws. These two analyses are by nature complementary: security-related metrics focus on weak constructs implemented in the source code, while security technical debt measures on higher-level poor design or implementation solutions that might possibly impact the security profile of an application. ...
... On top of that, regarding developers experience per class we relied on the metric by Tsoukalas et al. [25], and for "Poor Design" we used TD Interest [21], as the most relevant for the TD phenomenon. The metrics are calculated relying on four different tools: CKJM [18], Metrics Calculator 3 [19], PyDriller [20], and SDK4ED Interest Calculator [21]. ...
... Although widely adopted by software companies, software analytics is often not explored to its full potential. Some studies have lead to the proposal of analytics methods and tools, but few of them provide detail on how to adopt software analytics practices in real-world projects [Zhang et al. 2013;Huijgens et al. 2018;Augustine et al. 2018;Snyder and Curtis 2018]. Furthermore, many software practitioners are still reluctant to adopt software analytics practices [Robbes et al. 2013]. ...
... Moreover, we collect other factors that can influence the number of comments a file receives (i.e., confounding factors). We consider: (1) The number of lines added and (2) deleted in a file because larger changes may require more comments; (3) whether the file is a test, because these tend to receive less comments [49] and to be ordered last alphabetically; and (4) the number of commenters, because more participants in the review of a PR might lead to more comments. ...
... Despite their advantages, using mocks within tests requires considerable engineering effort. While designing the tests for one component, developers must first decide which interactions may be replaced with mocks [3]. They must also determine how these mocks behave when triggered with a certain input, i.e., how they are stubbed [4]. ...