Summary

“O sed fugit interea fugit irreparabile tempus audeamus nunc.” Rilès

PhD Candidate - STAMP

December 2016 - Present
Inria, Spirals team
STAMP - Software Testing AMPlification: is funded European Commission - H2020. STAMP works in DevOps and agile methods and aims at improving the value of testing at different step of the application's lifecycle. Behind STAMP, there are 3 main activities:
  1. Unit test amplification: exploiting existing unit test to generate better variants or new test method that improve the overall test suite's quality, e.g. increase the branch coverage.
  2. Configuration amplification: exploiting existing configuration test to create variants and execute the application in various configurations before production.
  3. Production amplification: exploiting production information to achieve specific tasks such as crash reproduction.

My research is mostly focuses on unit test amplification. I am exploiting existing test methods to create variants to increase the mutation score, detects automatically behavioral change, etc.

My work takes place within this project and is applied directly to the partners' code base. During my research, I develop strong prototypes and apply several software engendering methods: agility, unit testing, continuous integration, pull request development, bug tracker, etc.

DSpot - DSpot is a test suite amplifier. It takes as input a project and its test suite and will produce test cases according to a test criterion adequacy such as branch coverage or mutation score. I am currently the main contributor to DSpot. DSpot is the skeleton that support all my research to validate and experiment my proposed approach.

Diff-Test-Selection - Diff-Test-Selection is a maven plugin, based on OpenClover, that produces the list of test classes and their test methods that execute a provided diff.

DSpot-Prettifier - DSpot-prettifier aims a make better good looking amplified test methods obtained with DSpot. It relies on several operations such as minimization, renaming local variables and test methods (based on code2vec). slides

Test-runner - Test-runner is a library that allows developer to execute test in a new and clean JVM. After some months to develop research prototypes in Software engineering, I noticed that I always re-develop some classes to execute the test: automatic-repair based on test, test amplification, etc. I thought that this was sad to reinvent the wheel that is why I decide to create this open-source library, to join the effort in the development of reliables test execution in research prototypes in Java, and save times for researchers.

AssertFixer - AssertFixer aims to fix the assertion in a test suite, using the program as specifications.

Publications (reverse chronological order)

Benjamin Danglot, Oscar Luis Vera-Pérez, Benoit Baudry, and Martin Monperrus.Automatic test improvement with dspot: a study with ten mature open-source projects. Empirical Software Engineering, April 2019.
Benjamin Danglot, Martin Monperrus, Walter Rudametkin, and Benoit Baudry An Approach and Benchmark to Detect Behavioral Changes of Commits in Continuous Integration . arXiv, February 2019. (pre-print)
Oscar Luis Vera-Pérez, Benjamin Danglot, Martin Monperrus, and Benoit Baudry. A comprehensive study of pseudo-tested methods. Empirical Software Engineering, Sep 2018.
Benjamin Danglot, Philippe Preux, Benoit Baudry, and Martin Monperrus. Correctness attraction: a study of stability of software behavior under runtime perturbation .Empirical Software Engineering, Aug 2018.
Benjamin Danglot, Oscar Vera-Perez, Zhongxing Yu, Martin Monperrus, and Benoit Baudry. A Snowballing Literature Study on Test Amplification . arXiv, February 2019. (pre-print)
Zhongxing Yu, Matias Martinez, Benjamin Danglot, Thomas Durieux, and Martin Monperrus. Alleviating patch overfitting with automatic test generation: a study of feasibility and effectiveness for the nopol repair system. Empirical Software Engineering, May 2018.

Talks

STAMP open workshop

January 30, 2019
Sophia-Antipolis

Presentation of DSpot. slides

Animation of an hands-on session around the usage of DSpot. GitHub repository

STAMP open workshop

December 14, 2017
Madrid

Presentation of DSpot: a test suite amplification tool. slides

Kungliga Tekniska Högskolan (KTH)

Presentation of Correctness Attraction: A Study of Stability of Software Behavior Under Runtime Perturbation. slides

OW2Con'17

June 26-27, 2017
Orange Gardens Innovation Center, Paris - Châtillon

Presentation of Spoon, a library to analyze and transform java code in java. (link to Youtube)

During the event, Spoon received the Community Award of OW2Con'17.

Experiences

Research Engineer

September 2016 - November 2016
Inria Lille, Spirals team

Development of nopol is an automatic repair tool for java program. Nopol fixes conditional and pre-condition bug, using the test suite. A IDEA plugin allows to developer to use nopol directly in their IDE.

Internship

March 2016 - August 2016
Inria Lille, Spirals team

Exploring the Perturbability Envelope in Software:

Perturbation is change in the state of a system at runtime. Such changes has a surprisingly low impact on the correctness (final output) of system according to our study. Does the equilibrium of the correctness of software is naturally present?

Correctness Attraction report

A live demo available on this link.

Research Engineer

June 2016 - June 2016
CRIStAL, Emeraude team

Development of N2S3: a Neural Network Scalable Spiking Simulator. Written in scala and using akka actors, N2S3 scale up and allow users to the simulate of neuro-inspired hardware accelerators. N2S3 got a real time UI to monitor the current state of the neuronal network.