Note: Now that this is done for xwiki-commons, I’d like to also do that for 
xwiki-rendering when I get the time.

Thanks
-Vincent

> On 4 Apr 2018, at 16:14, Vincent Massol <[email protected]> wrote:
> 
> FYI I’ve now committed this on issue 
> https://jira.xwiki.org/browse/XCOMMONS-1385 for xwiki-commons.
> 
> And I’ve created an adhoc job at 
> http://ci.xwiki.org/job/xwiki-commons_pitest/ which executes PIT/Descartes 
> (to be moved to our Jenkins pipeline later on).
> 
> Let’s now make sure we fix the build when this job breaks and verify if the 
> strategy works or not!
> 
> Thanks
> -Vincent
> 
> 
> 
>> On 15 Mar 2018, at 09:30, Vincent Massol <[email protected]> wrote:
>> 
>> Hi devs,
>> 
>> As part of the STAMP research project, we’ve developed a new tool 
>> (Descartes, based on Pitest) to measure the quality of tests. It generates a 
>> mutation score for your tests, defining how good the tests are. Technical 
>> Descartes performs some extreme mutations on the code under test (e.g. 
>> remove content of void methods, return true for methods returning a boolean, 
>> etc - See https://github.com/STAMP-project/pitest-descartes). If the test 
>> continues to pass then it means it’s not killing the mutant and thus its 
>> mutation score decreases.
>> 
>> So in short:
>> * Jacoco/Clover: measure how much of the code is tested
>> * Pitest/Descartes: measure how good the tests are
>> 
>> Both provide a percentage value.
>> 
>> I’m proposing to compute the current mutation scores for xwiki-commons and 
>> xwiki-rendering and fail the build when new code is added that reduce the 
>> mutation score threshold (exactly the same as our jacoco threshold and 
>> strategy).
>> 
>> I consider this is an experiment to push the limit of software engineering a 
>> bit further. I don’t know how well it’ll work or not. I propose to do the 
>> work and test this for over 2-3 months and see how well it works or not. At 
>> that time we can then decide whether it works or not (i.e whether the gains 
>> it brings are more important than the problems it causes).
>> 
>> Here’s my +1 to try this out.
>> 
>> Some links:
>> * pitest: http://pitest.org/
>> * descartes: https://github.com/STAMP-project/pitest-descartes
>> * http://massol.myxwiki.org/xwiki/bin/view/Blog/ControllingTestQuality
>> * http://massol.myxwiki.org/xwiki/bin/view/Blog/MutationTestingDescartes
>> 
>> If you’re curious, you can see a screenshot of a mutation score report at 
>> http://massol.myxwiki.org/xwiki/bin/download/Blog/MutationTestingDescartes/report.png
>> 
>> Please cast your votes.
>> 
>> Thanks
>> -Vincent
> 

Reply via email to