week 30 - Teams in the Quest for Continuous Delivery, Agile smells and test smells in the wild
A Catalogue of Agile Smells for Agility Assessment
Background: The Manifesto for Agile Development has already inspired many software development methods such as Scrum, XP, and Crystal Reports. However, being “agile” is not trivial and only a few companies are capable of mastering so-called agile practices. Failure to apply the agile approach properly can do more harm than good and may jeopardize the benefits of an agile method. Thus, evaluating an organization’s ability to apply agile practices using an agility assessment tool is critical. Aims: In this paper, we extend the metaphor of code smell and introduce the term agile smell to denote the issues and practices that may impair the adoption of the agile approach. The focus of the paper is defining and validating a catalogue of agile smells that can support agility assessment. Method: A literature review and a survey were conducted to identify and confirm the characterization of agile smells. Once identified, the agile smells were organized in a structured catalogue. Results: The literature review found 2376 references published between 2001 and 2018. We selected 55 papers for full consideration and identified 20 agile smells. The survey consulted 20 participants to determine the relevance of the selected agile smells. Conclusion: We have identified a set of 20 agile smells that were ranked according to their relevance. For each smell, we proposed at least one strategy to identify the smell’s presence in real projects. The catalogue can be used by companies to support the assessment of their agility ability.
Developer-Centric Test Amplification The Interplay Between Automatic Generation and Human Exploration
Automatically generating test cases for software has been an active research topic for many years. While current tools can generate powerful regression or crash-reproducing test cases, these are often kept separately from the maintained test suite. In this paper, we leverage the developer's familiarity with test cases amplified from existing, manually written developer tests. Starting from issues reported by developers in previous studies, we investigate what aspects are important to design a developer-centric test amplification approach, that provides test cases that are taken over by developers into their test suite. We conduct 16 semi-structured interviews with software developers supported by our prototypical designs of a developer-centric test amplification approach and a corresponding test exploration tool. We extend the test amplification tool DSpot, generating test cases that are easier to understand. Our IntelliJ plugin TestCube empowers developers to explore amplified test cases from their familiar environment. From our interviews, we gather 52 observations that we summarize into 23 result categories and give two key recommendations on how future tool designers can make their tools better suited for developer-centric test amplification.
领英推荐
How are test smells treated in the wild? A tale of two empirical studies
Developing test code may be a time-consuming process that requires much effort and cost, especially when done manually. In addition, during this process, developers and testers are likely to adopt bad design choices, which may lead to introducing the so-called test smells in the test code. As the test code with test smells size increases, these tests might become more complex, and as a consequence, much more challenging to understand and evolve them correctly. Therefore, test smells may harm the test code quality and maintenance and break the whole software testing activities. In this context, this study aims to understand whether software testing practitioners unintentionally insert test smells when they implement test code. We first carried out an expert survey to analyze the usage frequency of a set of test smells and then interviews to reach a deeper understanding of how practitioners deal with test smells. Sixty professionals participated in the survey, and fifty professionals participated in the interviews. The yielded results indicate that experienced professionals introduce test smells during their daily programming tasks, even when using their companies’ standardized practices. Additionally, tools support test development and quality improvement, but most interviewees are not aware of test smells’ concepts.
The Organization of Software Teams in the Quest for Continuous Delivery: A Grounded Theory Approach
In this study, we investigate how software-producing organizations structure their development and infrastructure teams, specifically how is the division of labor among these groups and how they interact. After brainstorming with 7 DevOps experts to better formulate our research and procedures, we collected and analyzed data from 37 semi-structured interviews with IT professionals, following Grounded Theory guidelines. After a careful analysis, we identified four common organizational structures: (1) siloed departments, (2) classical DevOps, (3) cross-functional teams, and (4) platform teams. We also observed that some companies are transitioning between these structures.