Hi, > On 17 Oct 2018, at 11:20, Vincent Massol <vinc...@massol.net> wrote: > > Hi, > > [snip] > >> Process to run DSpot: >> 1) Pick a module. Measure coverage and mutation score (or take the value >> there already if they’re in the pom.xml). Same as for Descartes testing. >> 2) Run DSpot on the module, see >> https://massol.myxwiki.org/xwiki/bin/view/Blog/TestGenerationDspot for >> explanations > > One important detail that I had missed. We need to run Dspot with > “—descartes” on the command line so that it uses Descartes for computing the > mutation score for mutations and only keep tests that increase the mutation > score as reported by Descartes.
So actually, after speaking with Benjamin, I’ve realized a few things: * By default DSpot runs with the PIT selector (PitMutantScoreSelector) which is configured to use the default PIT mutations. This is why we need to run with the PIT selector but configured to use the Descartes mutation, and this is done by specifying --descartes. * Now this will optimize the generation of new tests for their increased mutation score. Right now we got 0% all the time on our tests (see https://docs.google.com/spreadsheets/d/1LULpGpsJirmFyvHNstLGv-Gv5DVBdpLTM2hm0jgCKUw/edit#gid=2061481816) and it’s because we didn’t use --descartes. We need to try again or run on new modules with --descartes and see what it gives us. It’s possible it’ll generate even less tests… * For the coverage part, there are 2 other selectors that can be used with DSpot to generate tests that all increase the coverage: ** "--test-criterion JacocoCoverageSelector": uses jacoco and keep tests that increase the instruction coverage ** "--test-criterion CloverCoverageSelector”: uses openclover and keep tests that increase the branch coverage So we need to test with the various selectors and see what we get. If we want to get the best values, we should use --descartes for K03 and either jacoco or clover selector for K01. Now we need to see what tests we get. Thanks -Vincent > >> 3) If DSpot has generated tests, add them to XWiki’s source code in >> src/test/dspot and add the following to the pom of that module: >> >> <build> >> <plugins> >> <!-- Add test source root for executing DSpot-generated tests --> >> <plugin> >> <groupId>org.codehaus.mojo</groupId> >> <artifactId>build-helper-maven-plugin</artifactId> >> </plugin> >> </plugins> >> </build> >> >> Example: >> https://github.com/xwiki/xwiki-commons/tree/244ee07976c691c335b7f54c48e6308004ba3d82/xwiki-commons-core/xwiki-commons-crypto/xwiki-commons-crypto-cipher >> >> Note: The generated tests sometimes need to be modified a bit to pass. >> Personally I’ve only committed tests that were passing and I reported issues >> for those that were not passing. >> >> 4) File the various reports: >> a) https://github.com/STAMP-project/dspot-usecases-output/tree/master/xwiki >> both for success and failures >> b) >> https://docs.google.com/spreadsheets/d/1LULpGpsJirmFyvHNstLGv-Gv5DVBdpLTM2hm0jgCKUw/edit#gid=2061481816 >> c) for failures, file a github issue at >> https://github.com/STAMP-project/dspot/issues and link to the place on >> https://github.com/STAMP-project/dspot-usecases-output/tree/master/xwiki >> where we put the failing result. >> >> Note: The reason we need to report failures too is because DSpot fails a lot >> so we need to show what we have tested >> >> Thanks >> -Vincent >> > > [snip] > > Thanks > -Vincent > >