Just to be clear, when I proposed "having a whole day dedicated on
using these tools", I didn't meant having to have it every week but
only once, so we can properly start improving the tests. It would be
some kind of training.
On my side I don't think I'll be able to have on a week one day
dedicated to tests and one for bug fixing, I won't have time left for
the roadmap as I will only work on the product 50% of the time.


On Thu, Aug 30, 2018 at 12:18 PM, Vincent Massol <[email protected]> wrote:
> Hi,
>
> I don’t remember discussing this with you Thomas. Actually I’m not convinced 
> to have a fixed day:
> * we already have a fixed BFD and having a second one doesn’t leave much 
> flexibility for working on roadmap items when it’s the best
> * test sessions can be short (0.5-1 hours) and it’s easy to do them between 
> other tasks
> * it can be boring to spend a full day on them
>
> Now, I agree that not having a fixed day will make it hard to make sure that 
> we work 20% on that topic.
>
> So if you prefer we can define a day, knowing that some won’t be able to 
> always attend during that day and in this case they should do it on another 
> day. What’s important is to have 20% done each week (i.e. enough work done on 
> it).
>
> In term of day, if we have to choose one, I’d say Tuesday. That’s the most 
> logical to me.
>
> WDYT? What do you prefer?
>
> Thanks
> -Vincent
>
>> On 30 Aug 2018, at 10:38, Thomas Mortagne <[email protected]> wrote:
>>
>> Indeed we discussed this but I don't see it in your mail Vincent.
>>
>> On Thu, Aug 30, 2018 at 10:33 AM, Adel Atallah <[email protected]> 
>> wrote:
>>> Hello,
>>>
>>> Maybe we should agree on having a whole day dedicated on using these
>>> tools with a maximum number of developers.
>>> That way we will be able to help each other and maybe it will make the
>>> process easier to carry out in the future.
>>>
>>> WDYT?
>>>
>>> Thanks,
>>> Adel
>>>
>>>
>>> On Wed, Aug 29, 2018 at 11:20 AM, Vincent Massol <[email protected]> wrote:
>>>> Hi devs (and anyone else interested to improve the tests of XWiki),
>>>>
>>>> History
>>>> ======
>>>>
>>>> It all started when I analyzed our global TPC and found that it was going 
>>>> down globally even though we have the fail-build-on-jacoco-threshold 
>>>> strategy.
>>>>
>>>> I sent several email threads:
>>>>
>>>> - Loss of TPC: http://markmail.org/message/hqumkdiz7jm76ya6
>>>> - TPC evolution: http://markmail.org/message/up2gc2zzbbe4uqgn
>>>> - Improve our TPC strategy: http://markmail.org/message/grphwta63pp5p4l7
>>>>
>>>> Note: As a consequence of this last thread, I implemented a Jenkins 
>>>> Pipeline to send us a mail when the global TPC of an XWiki module goes 
>>>> down so that we fix it ASAP. This is still a development in progress. A 
>>>> first version is done and running at 
>>>> https://ci.xwiki.org/view/Tools/job/Clover/ but I need to debug it and fix 
>>>> it (it’s not working ATM).
>>>>
>>>> As a result of the global TPC going down/stagnating, I have proposed to 
>>>> have 10.7 focused on Tests + BFD.
>>>> - Initially I proposed to focus on increasing the global TPC by looking at 
>>>> the reports from 1) above (http://markmail.org/message/qjemnip7hjva2rjd). 
>>>> See the last report at https://up1.xwikisas.com/#mJ0loeB6nBrAgYeKA7MGGw 
>>>> (we need to fix the red parts).
>>>> - Then with the STAMP mid-term review, a bigger urgency surfaced and I 
>>>> asked if we could instead focus on fixing tests as reported by Descartes 
>>>> to increase both coverage and mutation score (ie test quality), since 
>>>> those are 2 metrics/KPIs measured by STAMP and since XWiki participates to 
>>>> STAMP we need to work on them and increase them substantially. See 
>>>> http://markmail.org/message/ejmdkf3hx7drkj52
>>>>
>>>> The results of XWiki 10.7 has been quite poor on test improvements  (more 
>>>> focus on BFD than tests, lots of devs on holidays, etc). This forces us to 
>>>> have a different strategy.
>>>>
>>>> Full Strategy proposal
>>>> =================
>>>>
>>>> 1) As many XWiki SAS devs as possible (and anyone else from the community 
>>>> who’s interested ofc! :)) should spend 1 day per week working on improving 
>>>> STAMP metrics
>>>> * Currently the agreement is that Thomas and myself will do this for the 
>>>> foreseeable future till we get some good-enough metric progress
>>>> * Some other devs from XWiki SAS will help out for XWiki 10.8 only FTM 
>>>> (Marius, Adel if he can, Simon in the future). The idea is to see where 
>>>> that could get us by using substantial manpower.
>>>>
>>>> 2) All committers: More generally the global TPC failure is also already 
>>>> active and dev need to modify modules that see their global TPC go down.
>>>>
>>>> 3) All committers: Of course, the jacoco strategy is also active at each 
>>>> module level.
>>>>
>>>> STAMP tools
>>>> ==========
>>>>
>>>> There are 4 tools developed by STAMP:
>>>> * Descartes: Improves quality of tests by increasing their mutation 
>>>> scores. See http://markmail.org/message/bonb5f7f37omnnog and also 
>>>> https://massol.myxwiki.org/xwiki/bin/view/Blog/MutationTestingDescartes
>>>> * DSpot: Automatically generate new tests, based on existing tests. See 
>>>> https://massol.myxwiki.org/xwiki/bin/view/Blog/TestGenerationDspot
>>>> * CAMP: Takes a Dockerfile and generates mutations of it, then deploys and 
>>>> execute tests on the software to see if the mutation works or not. Note 
>>>> this is currently not fitting the need of XWiki and thus I’ve been 
>>>> developing another tool as an experiment (which may go back in CAMP one 
>>>> day), based on TestContainers, see 
>>>> https://massol.myxwiki.org/xwiki/bin/view/Blog/EnvironmentTestingExperimentations
>>>> * EvoCrash: Takes a stack trace from production logs and generates a test 
>>>> that, when executed, reproduces the crash. See 
>>>> https://markmail.org/message/v74g3tsmflquqwra. See also 
>>>> https://github.com/SERG-Delft/EvoCrash
>>>>
>>>> Since XWiki is part of the STAMP research project, we need to use those 4 
>>>> tools to increase the KPIs associated with the tools. See below.
>>>>
>>>> Objectives/KPIs/Metrics for STAMP
>>>> ===========================
>>>>
>>>> The STAMP project has defined 9 KPIs that all partners (and thus XWiki) 
>>>> need to work on:
>>>>
>>>> 1) K01: Increase test coverage
>>>> * Global increase by reducing by 40% the non-covered code. For XWiki since 
>>>> we’re at about 70%, this means reaching about 80% before the end of STAMP 
>>>> (ie. before end of 2019)
>>>> * Increase the coverage contributions of each tool developed by STAMP.
>>>>
>>>> Strategy:
>>>> * Primary goal:
>>>> ** Increase coverage by executing Descartes and improving our tests. This 
>>>> is http://markmail.org/message/ejmdkf3hx7drkj52
>>>> ** Don’t do anything with DSpot. I’ll do that part. Note that the goal is 
>>>> to write a Jenkins pipeline to automatically execute DSpot from time to 
>>>> time and commit the generated tests in a separate test source and have our 
>>>> build execute both src/test/java and this new test source.
>>>> ** Don’t do anything with TestContainers FTM since I need to finish a 
>>>> first working version. I may need help in the future to implement docker 
>>>> images for more configurations (on Oracle, in a cluster, with LibreOffice, 
>>>> with an external SOLR server, etc).
>>>> ** For EvoCrash: We’ll count contributions of EvoCrash to coverage in K08.
>>>> * Secondary goal:
>>>> ** Increase our global TPC as mentioned above by fixing the modules in red.
>>>>
>>>> 2) K02: Reduce flaky tests.
>>>> * Objective: reduce the number of flaky tests by 20%
>>>>
>>>> Strategy:
>>>> * Record flaky tests in jira
>>>> * Fix the max number of them
>>>>
>>>> 3) K03: Better test quality
>>>> * Objective: increase mutation score by 20%
>>>>
>>>> Strategy:
>>>> * Same strategy as K01.
>>>>
>>>> 4) K04: More configuration-related paths tested
>>>> * Objective: increase the code coverage of configuration-related paths in 
>>>> our code by 20% (e.g. DB schema creation, cluster)related code, 
>>>> SOLR-related code, LibreOffice-related code, etc).
>>>>
>>>> Strategy:
>>>> * Leave it to FTM. The idea is to measure Clover TPC with the base 
>>>> configuration, then execute all other configurations (with TestContainers) 
>>>> and regenerate the Clover report to see how much the TPC has increased.
>>>>
>>>> 5) K05: Reduce system-specific bugs
>>>> * Objective: 30% improvement
>>>>
>>>> Strategy:
>>>> * Run TestContainers, execute existing tests and find new bugs related to 
>>>> configurations. Record them
>>>>
>>>> 6) K06: More configurations/Faster tests
>>>> * Objective: increase the number of automatically tested configurations by 
>>>> 50%
>>>>
>>>> Strategy:
>>>> * Increase the # of configurations we test with TestContainers. I’ll do 
>>>> that part initially.
>>>> * Reduce time it takes to deploy the software under a given configuration 
>>>> vs time it used to take when done manually before STAMP. I’ll do this one. 
>>>> I’ve already worked on it in the past year with the dockerization of XWiki.
>>>>
>>>> 7) K07: Pending, nothing to do FTM
>>>>
>>>> 8) K08: More crash replicating test cases
>>>> * Objective: increase the number of crash replicating test cases by at 
>>>> least 70%
>>>>
>>>> Strategy:
>>>> * For all issues that are still open and that have stack traces and for 
>>>> all issues closed but without tests, run EvoCrash on them to try to 
>>>> generate a test.
>>>> * Record and count the number of successful EvoCrash-generated test cases.
>>>> * Derive a regression test (which can be very different from the negative 
>>>> of the test generated by evocrash!).
>>>> * Measure the new coverage increase
>>>> * Note that I haven’t experimented much with this yet myself.
>>>>
>>>> 9) K09: Pending, nothing to do FTM.
>>>>
>>>> Conclusion
>>>> =========
>>>>
>>>> Right now, I need your help for the following KPIs: K01, K02, K03, K08.
>>>>
>>>> Since there’s a lot to understand in this email, I’m open to:
>>>> * Organizing a meeting on youtube live to discuss all this
>>>> * Answering any questions on this thread ofc
>>>> * Also feel free to ask on IRC/Matrix.
>>>>
>>>> Here’s an extract from STAMP which has more details about the KPIs/metrics:
>>>> https://up1.xwikisas.com/#QJyxqspKXSzuWNOHUuAaEA
>>>>
>>>> Thanks
>>>> -Vincent
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>
>>
>>
>> --
>> Thomas Mortagne
>

Reply via email to