Interesting, it certainly looks pretty similar.

-- John

On 14 Jul 2014, at 23:15, Tilman Hausherr <thaush...@t-online.de> wrote:

> As yet another proof that IT people always solve things in similar ways, see 
> this interesting blog post by one of our "competitors":
> http://blog.idrsolutions.com/2013/06/save-time-test/
> 
> Tilman
> 
> Am 04.07.2014 23:05, schrieb Petr Slabý:
>> Hi,
>> following is a description of what we are doing in our company.
>> 
>> With our software, we run regression tests after each nightly build and 
>> sometimes it is a tough fight. If there is a regression, it is not so easy 
>> to find which commit caused it, because there are potentially many between 
>> the nightly builds. Then, the decision whether the change is wanted and 
>> expected is in some cases also difficult (this part might be easier with PDF 
>> where there is the "golden standard" rendering in Acrobat). If the change is 
>> expected and the new rendering "better" then one has to commit the new 
>> reference. This means that the files produced on the nightly build machine 
>> must be available somehow - it is almost impossible to produce them locally 
>> as the rendering results are slightly different with different versions of 
>> java and many other reasons. All this has to be done before the next 
>> regression test is run to avoid that new regressions are hidden by earlier 
>> ones. Our complete build with all tests runs several hours...
>> 
>> To improve this workflow, we now use the following schema in addition:
>> - there is a smaller set of regression tests which runs relatively fast
>> - these tests are triggered by each commit in formatting and rendering 
>> related projects
>> - before running the test itself, the modified project(s) are compiled 
>> locally, w/o publishing the result to maven
>> - the reference rendering files are stored in SVN
>> - if a test finds a regression, it immediately stores the new result as a 
>> new reference into SVN. This makes sure that a) the test renderings do not 
>> get lost and b) that each regression exactly points to the commit that has 
>> caused it - the one that triggered the test. The failed test creates a new 
>> issue in JIRA with a pointer to SVN to the before and after rendering and a 
>> bitmap of the differencies. The issue is then processed. If we find the 
>> change to be expected then the issue is simply closed, otherwise we take 
>> actions to fix the problem. The only annoying thing about this scheme is 
>> that, after commiting the correction, the test runs again and reports a 
>> regression because it now compares to the faulty version of the rendering.
>> 
>> Best regards,
>> Petr.
>> 
>> -----Původní zpráva----- From: John Hewson
>> Sent: Friday, July 04, 2014 7:39 PM
>> To: dev@pdfbox.apache.org
>> Subject: Re: Regression Testing
>> 
>> Hi Tilman
>> 
>> Thanks for your thoughts, I think that your concerns are already covered by 
>> my original proposal, I’ll try to explain why and how:
>> 
>>> Of course I agree with the need for regression tests, however it isn't 
>>> easy: besides the problems of the different JDKs (I use JDK7 Windows 64 
>>> bit), there is the problem that some enhancements create slight changes in 
>>> rendering that are not errors, i.e. both the "before" and the "after" files 
>>> look OK by itself. This has happened when we changed the text rendering 
>>> recently, and has happened again when the clipping was improved. The cause 
>>> are probably slight changes in color or in boundaries.
>> 
>> If a rendering has changed then the regression test should fail. When a 
>> failure occurs the developer needs to manually inspect the differences (we 
>> could generate a visual diff which highlights what changed to make this 
>> easier) and if ok then they can replace the known-good PNG with the ones 
>> just rendered. Indeed this will be the basic workflow for working with 
>> regression tests.
>> 
>>> Copyrights is a problem: I'm testing mostly with JIRA attachments that I've 
>>> downloaded over the years. While uploading such files to JIRA might count 
>>> as fair use, I doubt that this would still be true if they are included in 
>>> a distribution. Instead, they should be stored somewhere on Apache servers 
>>> where only committers and build software ("Travis", "Jenkins", ...) can 
>>> access then. The public PDFs that Maruan mentions don't possibly have all 
>>> the Problem cases that we solved before. However I have started working 
>>> with these files and there are at least 5 recent issues that deals with 
>>> them.
>> 
>> The PDFs won’t be in a distribution. They will just happen to be stored in 
>> an SVN repo but not our source code repo, in the same way that the website 
>> is stored in the “cmssite” branch of SVN or indeed, are on JIRA. The law 
>> doesn’t distinguish between JIRA and SVN, both are publicly available via 
>> HTTP, so using SVN will simply be a continuation of what we’re already doing 
>> with JIRA.
>> 
>> The crucial factor is that we’re only storing publicly available PDFs, 
>> because we have the right to do so, just like Google’s cache, and like we 
>> currently do with JIRA.
>> 
>> Additionally, the PDFs need to be version controlled otherwise we won’t be 
>> able to reliably recreate previous builds, so storing the files on a web 
>> server won’t be practical. Also committers will frequently be updating the 
>> renderings as bugs are fixed and we’ll need to version-control the rendered 
>> PNG files for the same reason. Finally, having committers-only files doesn’t 
>> fit well with the Apache goal of open development and would be unnecessary 
>> anyway given that all the PDFs are to be taken from public sources only.
>> 
>> In summary, I’m proposing that we just keep doing what we’re currently doing 
>> with JIRA but we move it into its own SVN repo along with some pre-rendered 
>> PNGs.
>> 
>>> Re preflight: the default mode should be to have the Isartor tests on. 
>>> Individuals could still disable them locally, but the central build 
>>> software should always use them.
>> 
>> Yes - does anybody know why this isn’t the default?
>> 
>> -- John
> 

Reply via email to