On Mon, May 14, 2018 at 2:41 PM, Vincent Massol <[email protected]> wrote:

>
>
> > On 14 May 2018, at 13:30, Marius Dumitru Florea <
> [email protected]> wrote:
> >
> > On Mon, May 14, 2018 at 2:17 PM, Vincent Massol <[email protected]>
> wrote:
> >
> >>
> >>
> >>> On 14 May 2018, at 12:28, Marius Dumitru Florea <
> >> [email protected]> wrote:
> >>>
> >>> On Thu, May 10, 2018 at 10:03 PM, Vincent Massol <[email protected]>
> >> wrote:
> >>>
> >>>> Hi devs,
> >>>>
> >>>> Our current Test coverage strategy is to fail the build when new code
> >>>> added results in a coverage lower than the threshold for the module,
> >> using
> >>>> jacoco.
> >>>>
> >>>> This has 2 limitations causing our global TPC to go down from time to
> >> time
> >>>> (see https://markmail.org/message/hqumkdiz7jm76ya6 ).
> >>>>
> >>>> Thus I’d like to propose the following addition to our strategy:
> >>>>
> >>>> * We already have a jenkins pipeline to automatically compute the full
> >> TPC
> >>>> using Clover. See http://dev.xwiki.org/xwiki/
> >> bin/view/Community/Testing#
> >>>> HUsingClover2BJenkins
> >>>> * Make it run more often (it’s currently executed once per month, see
> >>>> http://ci.xwiki.org/view/Tools/job/Clover/). Takes about 5-6 hours to
> >>>> execute. Thus we could run it once per week or even once per day
> during
> >> the
> >>>> night.
> >>>> * Add some groovy logic in the pipeline to perform an analysis after
> the
> >>>> Clover report has been generated. Perform 2 checks by comparing the
> >>>> previous report with the one that just executed:
> >>>>
> >>>
> >>>
> >>>> ** Find new packages introduced that have a TPC < the average computed
> >> TPC
> >>>>
> >>>
> >>> What is the average computed TPC currently?
> >>
> >> It’s about 70%, see for example:
> >> http://maven.xwiki.org/site/clover/20180511/clover-
> >> commons+rendering+platform-20180511-0147/dashboard.html
> >>
> >>
> > Requiring 70% TPC for new packages is a nice goal but I find it hard to
> > achieve in practice.
>
> Two points on this:
>


> * We should have above 80-90%+ in practice for new modules, not 70%. If we
> have 70% or less we can be sure you did a bad job on quality and that
> you’re impacting the overall quality of XWiki.
>

*should* but I don't think it happens in practice, for various reasons,
mainly due to limited time. Did you check the TPC of the last 10 new
packages? Is it above 70%?


> * For some modules, it makes less sense or it’s harder to have unit tests
> and integration tests are better. We’re not talking about 70% of unit test
> coverage but 70%+ coverage of overall testing (unit, integration,
> functional).
>
> Now we’ll need to put in place to see it in action and verify if there are
> cases where this can be hard to achieve. But I’d prefer that we consider
> those cases as exceptional and handle them in an ad-hoc manner.
>
> >
> >>>
> >>>> ** Find packages and/or files having a TPC lower than the previous TPC
> >>>> ** Find removed packages that had a TPC higher than the average
> computed
> >>>> TPC
> >>>>
> >>>
> >>> I would add:
> >>>
> >>> ** find the packages that have the TPC higher than what is declared in
> >> the
> >>> pom (because we don't always update the TPC value declared in the pom
> >> when
> >>> we refactor the code or when we add new tests)
> >>
> >> Yes I agree. We should do that but not in the pipeline for the global
> >> coverage. We should have another pipeline for this and update the
> pom.xml
> >> files in it.
> >>
> >>>
> >>>> * Save a report in the directory for the Clover report at
> >>>> http://ci.xwiki.org/view/Tools/job/Clover/
> >>>> * For all failures, send an email to [email protected] with
> >> details
> >>>> and a link to the saved report
> >>>> * Ideally, and if we can do it, call the github API to find the
> authors
> >> of
> >>>> commits for those packages and add them in the report. Examples of
> APIs
> >> we
> >>>> could use:
> >>>> ** https://api.github.com/repos/xwiki/xwiki-platform/commits?
> >>>> since=2018-05-07T00:00:00Z&until=2018-05-10T00:00:00Z (there’s a path
> >>>> parameter that could be used to filter but I don’t think it’ll work
> >>>> ** https://github.com/xwiki/xwiki-platform/compare/master@
> >>>> %7B2018-05-07%7D...master@%7B2018-05-10%7D (the committers/authors
> need
> >>>> to be extracted from the HTML which is a bit fragile)
> >>>> * Add a step in the Release process to ensure that the global TPC has
> >> not
> >>>> been lowered. This would be a way to ensure we pay attention to that
> and
> >>>> fix it when we lower it. We would need to tune this to find something
> >> that
> >>>> helps keep the TPC increasing while not putting too much pressure at
> the
> >>>> same time on the release date. It doesn’t have to be in the release
> >> process
> >>>> but we need some checkpoint to make sure we look at it and that all
> devs
> >>>> fix the tests when they lower the global TPC, or at the very least
> that
> >> an
> >>>> analysis is done in case where it’s hard to keep the TPC (for example,
> >>>> removing existing code that had a lot of tests will lower the TPC ;)).
> >>>>
> >>>> WDYT?
> >>>>
> >>>> As a dev, would you be willing to pay attention to not lower the
> global
> >>>> TPC and work to fix it when it happens?
> >>
> >> @Marius: what about this question? Would you be ok with it? :)
> >>
> >
> > Sure.
>
> ok cool
>
> Thanks
> -Vincent
>
> >
> >
> >>
> >> Thanks
> >> -Vincent
> >>
> >>>>
> >>>> Thanks
> >>>> -Vincent
>
>

Reply via email to