FLiRTS 2

Fuzzy Logic Regression Test Selection


Questions and issues to Walter Cazzola.

A Brief Introduction to FLiRTS 2

Modern software development processes often use UML models to plan and manage the evolution of software systems. Regression testing of evolving software systems is important but can be expensive. Regression test selection (RTS) approaches are used to reduce the cost. Existing RTS approaches based on UML models use behavioral diagrams or a combination of structural and behavioral diagrams. Behavioral diagrams are necessary to perform impact analysis and obtain traceability links between model elements and test cases. However, in practice, behavioral diagrams are rarely used to design and maintain an application, and are incomplete even when used, which limits the applicability of the existing UML-based RTS approaches.

In previous work, we proposed a fuzzy logic approach called FLiRTS that supports RTS based on UML sequence and activity diagrams. In this work, we introduce FLiRTS 2, which enhances FLiRTS by dropping the need for behavioral diagrams and relying only on the presence of UML class diagrams describing the application. The class diagram is the most widely used type of UML diagram in practice. Relying only on class diagrams frees FLiRTS 2 from the applicability limitation that other model-based RTS approaches have.

Getting FLiRTS 2

Download and save the FLiRTS 2 zip file. It contains:

.
├── config
│   ├── configs.txt
│   └── fuzzylogic.fcl
├── flirts2.sh
├── lib
│   └── flirts2.jar
└── README.md

2 directories, 5 files

where

Demonstrating FLiRTS 2 with Sample Subjects

To demonstrate how FLiRTS 2 works we prepared two sample subjects: Commons-compress and LectureReservationSystem. The former is a Java project freely available on GitHub and we extracted the class diagram through the RSA software. We developed the latter drawing the model with RSA and then coding it in Java.

Download the demos zip file. It contains:

.
├── Commons-compress
│   ├── AdaptedClasses.txt
│   ├── commons-compress_687129547ae314a6b286553ad59af88a7a88d492.emx
│   ├── demo.sh
│   ├── DirectInvocationsFromTestClasses.txt
│   └── output
├── LectureReservationSystem
│   ├── AdaptedClasses.txt
│   ├── demo.sh
│   ├── LectureReservationSystem.emx
│   └── output
└── README.md

4 directories, 8 files

where

Evaluation of FLiRTS 2

We evaluated FLiRTS 2 over several metrics using 21 open-source Java projects with more than 8000 revisions considered.

Getting the Scripts and Revisions used in the Experiment

Download and save the experiment zip file. It contains:

.
├── calculateSPR
│   ├── calculateSPR.sh
│   └── lib
│       └── utils.jar
├── downloadRevisions
│   ├── download.sh
│   ├── lib
│   │   ├── bcel-6.2.jar
│   │   ├── formatStartsDiff.py
│   │   └── utils.jar
│   └── repositories.txt
├── finalizeData
│   └── finalizeData.py
├── pit
│   └── pit.sh
├── README.md
├── revisionsSHAs
│   ├── asterisk-java.txt
│   ├── commons-cli.txt
│   ├── commons-codec.txt
│   ├── commons-collections.txt
│   ├── commons-compress.txt
│   ├── commons-configuration.txt
│   ├── commons-dbcp.txt
│   ├── commons-dbutils.txt
│   ├── commons-email.txt
│   ├── commons-fileupload.txt
│   ├── commons-imaging.txt
│   ├── commons-io.txt
│   ├── commons-jxpath.txt
│   ├── commons-lang.txt
│   ├── commons-net.txt
│   ├── commons-pool.txt
│   ├── commons-text.txt
│   ├── commons-validator.txt
│   ├── HikariCP.txt
│   ├── invokebinder.txt
│   └── stream-lib.txt
├── runFLiRTS2
│   └── runFLiRTS2.sh
└── timeTests
    └── timeTests.py

9 directories, 33 files

where

Note that, downloading the revisions and running the whole experiment can take days and a lot of storage. It is advisable to run the experiment only on one (or few) subject(s). To adapt the experiment:

Reproducibility of the SoSyM Experiments.

In the experiment reported in our SoSyM submission to avoid any bias we restricted the experiment to separate the subjects used for FLiRTS 2 tuning from those used to evaluate it. It still uses 13 subjects with more than 3000 revisions. If you are interested in reproducing such an experiment download experiment sosym zip file. The zip file content is still the same as described in the general experiment only the used set of subjects (and the corresponding SHAs) is reduced. The same recommendations still hold.

UML Class Diagrams Generated from each Subject Revision

We generated the class diagrams from the code-level revisions of each subject using the Rational Software Architect Java to UML transformation. The following links can be used to download the zip files containing the class diagrams for the revisions of each subject. The SHA of the corresponding code-level revision is appended to the name of each class diagram.

References
  1. Walter Cazzola, Sudipto Ghosh, Mohammed Al-Refai, and Gabriele Maurina, Bridging the Model-to-Code Abstraction Gap with Fuzzy Logic in Model-Based Regression Test Selection, Software and Systems Modeling, July 2021. [DOI, PDF (CC)]

Walter Cazzola

Didactics

Publications

Funded Projects

Research Projects

Related Events