<div dir="ltr">Hi,<br><div class="gmail_extra"><br><div class="gmail_quote">2016-10-05 10:20 GMT+02:00 Moritz Lennert <span dir="ltr"><<a href="mailto:mlennert@club.worldonline.be" target="_blank">mlennert@club.worldonline.be</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">[sent this from the wrong address, so it didn't get through to the list]<br>
<br>
<br>
-------- Message d'origine --------<br>
Envoyé : 5 octobre 2016 00:41:20 GMT+02:00<br>
<span class="gmail-"><br>
<br>
<br>
Le 4 octobre 2016 22:55:35 GMT+02:00, "Anna Petrášová" <<a href="mailto:kratochanna@gmail.com">kratochanna@gmail.com</a>> a écrit :<br>
>On Tue, Oct 4, 2016 at 4:22 PM, Markus Metz<br>
><<a href="mailto:markus.metz.giswork@gmail.com">markus.metz.giswork@gmail.<wbr>com</a>> wrote:<br>
</span><div><div class="gmail-h5">>> On Tue, Oct 4, 2016 at 5:42 PM, Sören Gebbert<br>
>> <<a href="mailto:soerengebbert@googlemail.com">soerengebbert@googlemail.com</a>> wrote:<br>
>>> Hi,<br>
>>>><br>
>>>><br>
>>>> ><br>
>>>> > You are very welcome to write the missing tests for core modules.<br>
>>>> ><br>
>>>> > However, i don't understand the argument that because many core<br>
>modules<br>
>>>> > have<br>
>>>> > no tests, therefore new modules don't need them. If developers of<br>
>addon<br>
>>>> > module are serious about the attempt to make their modules usable<br>
>and<br>
>>>> > maintainable for others, then they have to implement tests. Its<br>
>and<br>
>>>> > integral<br>
>>>> > part of the development process and GRASS has a beautiful test<br>
>>>> > environment<br>
>>>> > hat makes writing tests easy. Tests and documentation are part of<br>
>coding<br>
>>>> > and<br>
>>>> > not something special. I don't think this is a hard requirement.<br>
>>>> ><br>
>>>> > There is a nice statement that is not far from the truth:<br>
>Untested code<br>
>>>> > is<br>
>>>> > broken code.<br>
>>>><br>
>>>> these gunittests only test if a module output stays the same. This<br>
>>><br>
>>><br>
>>> This is simply wrong, please read the gunittest documentation.<br>
>><br>
>> but then why does<br>
>>><br>
>>> The gunittest for the v.stream.order addon is an example how its<br>
>done:<br>
>>><br>
><a href="https://trac.osgeo.org/grass/browser/grass-addons/grass7/vector/v.stream.order/testsuite/test_stream_order.py" rel="noreferrer" target="_blank">https://trac.osgeo.org/grass/<wbr>browser/grass-addons/grass7/<wbr>vector/v.stream.order/<wbr>testsuite/test_stream_order.py</a><br>
>><br>
>> assume certain order numbers for features 4 and 7? What if these<br>
>order<br>
>> numbers are wrong?<br>
>><br>
</div></div><span class="gmail-">>> Recently I fixed bugs in r.stream.order, related to stream length<br>
>> calculations which are in turn used to determine stream orders. The<br>
>> gunittest did not pick up 1) the bugs, 2) the bug fixes.<br>
>><br>
>>><br>
</span><div><div class="gmail-h5">>>> You can write gunittests that will test every flag, every option,<br>
>their<br>
>>> combination and any output of a module. I have implemented plenty of<br>
>tests,<br>
>>> that check for correct error handling. Writing tests is effort, but<br>
>you have<br>
>>> to do it anyway. Why not implementing a gunittest for every feature<br>
>while<br>
>>> developing the module?<br>
>>>><br>
>>>><br>
>>>> My guess for the r.stream.* modules is at least 40 man hours of<br>
>>>> testing to make sure they work correctly. That includes evaluation<br>
>of<br>
>>>> float usage, handling of NULL data, comparison of results with and<br>
>>>> without the -m flag. Testing should be done with both high-res<br>
>(LIDAR)<br>
>>>> and low-res (e.g. SRTM) DEMs.<br>
>>><br>
>>><br>
>>> Tests can be performed on artificial data that tests all aspects of<br>
>the<br>
>>> algorithm. Tests that show the correctness of the algorithm for<br>
>specific<br>
>>> small cases should be preferred. However, large data should not be<br>
>an<br>
>>> obstacle to write a test.<br>
>><br>
>> I agree, for tests during development, not for gunittests.<br>
>><br>
>> From the examples I read, gunittests expect a specific output. If the<br>
>> expected output (obtained with an assumed correct version of the<br>
>> module) is wrong, the gunittest is bogus. gunittests are ok to make<br>
>> sure the output does not change, but not ok to make sure the output<br>
>is<br>
>> correct. Two random examples are r.stream.order and r.univar.<br>
><br>
><br>
</div></div><span class="gmail-">>I am not sure why are we discussing this, it's pretty obvious that<br>
>gunittests can serve to a) test inputs/outputs b) catch changes in<br>
>results (whether correct or incorrect) c) test correctness of results.<br>
>It just depends how you write them, and yes, for some modules c) is<br>
>more difficult to implement than for others.<br>
<br>
<br>
</span>Well, I agree with Markus that unittests are not a panacea and that we should not fall into the trap of thinking that these tests will guarantee that the results of our modules are correct.<br></blockquote><div><br></div><div>Then i live in a parallel universe. Simple question: How do you test your software? How do you assure the correct functionality of your software? Why is it impossible to implement your approach of testing in a dedicated gunittest? How do you assure software quality, if you don't provide tools so that other developers are able to test your software for correctness? Regression tests are not possible then, because the effect of changes in the core libraries can not be easily detected in modules without tests.</div><div><br></div><div>Can you explain to me why the developers of the sophisticated software system VTK [1] implement unit and integration tests for all software components to assure the correct functionality of the framework? They didn't saw the trap? They are delusional to think that tests assure software quality?</div><div><br></div><div>Why is test driven development [2] an integral part of agile software development approaches like scrum or extreme programming? They didn't saw the trap? They are delusional to think that tests assure software quality?</div><div><br></div><div>[1] <a href="http://www.vtk.org/overview/">http://www.vtk.org/overview/</a></div><div>[2] <a href="https://en.wikipedia.org/wiki/Test-driven_development">https://en.wikipedia.org/wiki/Test-driven_development</a></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<br>
However, I do agree that these tests are useful in detecting if any changes to the code change the output, thus raising a flag that the developer has to at least take into account.<br>
<br>
I'll try to write some tests for the OBIA tools when I find the time, although I do agree with Markus that it wouldn't be useful to try to write tests that would cover each and every possible corner case...<br></blockquote><div><br></div><div>Why is it "not useful" to write tests for all cases the software is dedicated to solve? It is indeed a lot of effort, but it is useful.<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<br>
In the meantime, g.extension is wonderful tool 😃<br></blockquote><div><br></div><div>Exactly! </div><div> </div><div>Best regards</div><div>Soeren</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<br>
Moritz<br>
<br>
><br>
>Anna<br>
<div class="gmail-HOEnZb"><div class="gmail-h5">><br>
>><br>
>> Markus M<br>
>><br>
>>><br>
>>> Best regards<br>
>>> Soeren<br>
>>><br>
>>>><br>
>>>> my2c<br>
>>>><br>
>>>> Markus M<br>
>>>><br>
>>>> ><br>
>>>> > Best<br>
>>>> > Sören<br>
>>>> ><br>
>>>> >><br>
>>>> >> One thing we could think about is activating the toolbox idea a<br>
>bit<br>
>>>> >> more<br>
>>>> >> and creating a specific OBIA toolbox in addons.<br>
>>>> >><br>
>>>> >>> Identified candidates could be added to core once they fulfill<br>
>the<br>
>>>> >>> requirements above. Would that happen only in minor releases or<br>
>would<br>
>>>> >>> that also be possible in point releases?<br>
>>>> >><br>
>>>> >><br>
>>>> >> Adding modules to core is not an API change, so I don't see why<br>
>they<br>
>>>> >> can't<br>
>>>> >> be added at any time. But then again, having a series of new<br>
>modules<br>
>>>> >> can be<br>
>>>> >> sufficient to justify a new minor release ;-)<br>
>>>> >><br>
>>>> >>> Or is that already too much formality and if someone wishes to<br>
>see an<br>
>>>> >>> addon in core that is simply discussed on ML?<br>
>>>> >><br>
>>>> >><br>
>>>> >> Generally, I would think that discussion on ML is the best way<br>
>to<br>
>>>> >> handle<br>
>>>> >> this.<br>
>>>> >><br>
>>>> >> Moritz<br>
>>>> >><br>
>>>> >><br>
>>>> >> ______________________________<wbr>_________________<br>
>>>> >> grass-dev mailing list<br>
>>>> >> <a href="mailto:grass-dev@lists.osgeo.org">grass-dev@lists.osgeo.org</a><br>
>>>> >> <a href="http://lists.osgeo.org/mailman/listinfo/grass-dev" rel="noreferrer" target="_blank">http://lists.osgeo.org/<wbr>mailman/listinfo/grass-dev</a><br>
>>>> ><br>
>>>> > ______________________________<wbr>_________________<br>
>>>> > grass-dev mailing list<br>
>>>> > <a href="mailto:grass-dev@lists.osgeo.org">grass-dev@lists.osgeo.org</a><br>
>>>> > <a href="http://lists.osgeo.org/mailman/listinfo/grass-dev" rel="noreferrer" target="_blank">http://lists.osgeo.org/<wbr>mailman/listinfo/grass-dev</a><br>
>>><br>
>>><br>
>> ______________________________<wbr>_________________<br>
>> grass-dev mailing list<br>
>> <a href="mailto:grass-dev@lists.osgeo.org">grass-dev@lists.osgeo.org</a><br>
>> <a href="http://lists.osgeo.org/mailman/listinfo/grass-dev" rel="noreferrer" target="_blank">http://lists.osgeo.org/<wbr>mailman/listinfo/grass-dev</a><br>
>_____________________________<wbr>__________________<br>
>grass-dev mailing list<br>
><a href="mailto:grass-dev@lists.osgeo.org">grass-dev@lists.osgeo.org</a><br>
><a href="http://lists.osgeo.org/mailman/listinfo/grass-dev" rel="noreferrer" target="_blank">http://lists.osgeo.org/<wbr>mailman/listinfo/grass-dev</a><br>
<br>
______________________________<wbr>_________________<br>
grass-dev mailing list<br>
<a href="mailto:grass-dev@lists.osgeo.org">grass-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/grass-dev" rel="noreferrer" target="_blank">http://lists.osgeo.org/<wbr>mailman/listinfo/grass-dev</a></div></div></blockquote></div><br></div></div>