Coder Social home page Coder Social logo

tarhses / descartes-reneri Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stamp-project/descartes-reneri

0.0 0.0 0.0 293 KB

A tool to determine how extreme transformations propagate to observable points. Reneri consolidates Decartes with suggestions to improve the test suite

License: GNU Lesser General Public License v3.0

Java 100.00%

descartes-reneri's Introduction

What is Reneri?

Reneri is a Maven plugin that generates hints to improve a test suite, by observing the execution of undetected extreme transformations discovered by Descartes in a Java project.

Quick start

Reneri offers three Maven goals:

mvn eu.stamp-project:reneri:observeMethods

This goal instruments each method signaled by Descartes and observes the execution of the original method and each transformed variant of the method. The differences between the executions are reported.

mvn eu.stamp-project:reneri:observeTests

This goal finds and instrument each test case that executes a method signaled by Descartes. The execution of each test case is observed for the original methods and the transformed variants. Differences between the executions are reported.

mvn eu.stamp-project:reneri:hints

Generates improvement hints according to the results obtained with the execution of the two previous goals. These hints can be leveraged by other tools.

There is no need to modify the pom.xml file. It is mandatory, however, to have executed Descartes before using the tool. Reneri requires as input both the METHODS and JSON reports produced by Descartes.

A typical usage scenario would involve the execution of the three goals to obtain the improvement hints.

How does Reneri work?

Reneri executes the test cases that execute methods for which at least one extreme transformation was not detected by the test suite. Such methods are discovered using Descartes.

The plugin first instruments all methods to observe the program state after each invocation. Both, the original and transformed variants of all methods are executed. The difference between the executions are recorded and reported.

In a second stage, the tool instruments the test classes to observe the value of all expressions inside test methods. Then the original methods and their transformed variants are executed. The differences between the executions are recorded and reported.

The observed differences at different levels allow Reneri to point at the places in code where developers can modify the code to improve the existing test case by adding assertions or new test inputs.

To avoid flaky tests, the tool executes each test class several times, so the analysis can be time-consuming.

Funding

Reneri is partially funded by the research project STAMP (European Commission - H2020)

STAMP - European Commission - H2020

descartes-reneri's People

Contributors

dependabot[bot] avatar oscarlvp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.