Tools (prototypes) from 2020

GAI4-TDD 

Test-Driven Development (TDD) is an agile software development practice. It promotes short cycles, composed of three phases each, to incrementally implement software functionality: Red, Green, and Refactor. In the red phase, the developer writes a unit test for a small chunk of functionality not yet implemented and watches the test fail, while in the green the developer writes code to make the test pass as quickly as possible (without worrying about the written code). In the refactor phase, the developer optimizes the design. In this demo paper, we present GAI4-TDD (Generative Artificial Intelligence for Test-Driven Development) a PyCharm plugin to support the green phase of TDD. Specifically, this plugin generates source code from the tests the developer writes so that this source code lets these tests pass. In the past has been observed that TDD can be beneficial not only in “traditional” software development contexts but also in other development contexts such as in the implementation of Embedded Systems (ESs). We preliminary assessed GAI4-TDD in such a development context by a laboratory empirical study on three ESs. GAI4-TDD generated production code that passed 52 tests out of 61. For further information please write me an email. 

GASSER 

Regression testing is an important activity that ensures a System Under Test (SUT) still works as expected after changes. Regression testing can be expensive in case of large test suites (TS). Test Suite Reduction (TSR) approaches speed up regression testing by removing redundant test cases. TSR approaches can be classified as adequate or inadequate. Adequate approaches reduce TSs so that they completely preserve the test requirements (e.g., statement coverage) of the original TS. Inadequate approaches produce reduced TSs that only partially preserve the test requirements. An inadequate TSR approach is appealing when it leads to a higher reduction in TS size at the expense of a small loss in fault-detection capability. In our research, we defined an approach that named GASSER  (Genetic Algorithm for teSt SuitE Reduction). This approach is based on a multi-objective evolutionary algorithm, namely NSGA-II (Non-dominated Sorting Genetic Algorithm II). This approach seeks to reduce TSs by maximizing both statement coverage, diversity of test cases, and minimizing the size of the reduced TSs. We implemented a prototype of a supporting tool of that approach in Java and named it as the GASSER tool. If you are interested in downloading our tool please follow this  link or access to the our Git repository (https://github.com/ccoviello/gasser).  A draft of a tool demo paper  is available here.

G-Repo 

GitHub has become one of the most popular platforms for Mining Software Repositories (MSR) purposes since it currently hosts more than 100 million public repositories. Researchers have been exploiting the information stored in GitHub (\eg commits, pull requests, or issues) to investigate both developer- and project-related aspects. GitHub provides a REST API to make queries without physically cloning the repositories, but the quality of returned results is not always good as expected. G-Repo is a tool built to fix some issues when conducting a mining study and to ease the creation of datasets for MSR studies. G-Repo can be downloaded by following this link. A draft of a tool demo paper of is available here.