[GRASS5] Automated test-system for basic functionalities.
Sören Gebbert
soerengebbert at gmx.de
Tue Jan 10 07:34:34 EST 2006
On Tuesday 10 January 2006 10:28, Roger Bivand wrote:
> On Tue, 10 Jan 2006, Radim Blazek wrote:
>
> > On 1/9/06, Sören Gebbert <soerengebbert at gmx.de> wrote:
> > > > It only tests if a module runs not the results, right?
> > > Yes. Thats one main task of the framework. It should start the user specified grass programms and/or testscripts,
> > > and catch/process the exitstatus (Signals) of the programms/scripts . Other tasks of the framework are, to parse the output (stdout and stderr)
> > > for known errors (Usage, Fatal Error, Segfault and so on) and create a readable summary and a logfile.
> >
> > > > We must get it running on Windows (native).
> > > Then Windows should bring a bash within ;). Seriously, the framework prototype runs only within grass and uses the GRASS shell
> > > variables and the shell output of some programms. And if grass-shellsript's (r.mremove) are running in grass/windows
> > > then the framework should run too.
> > > But if we decide to create a testfamework that works outside grass, creating locations and stuff, we may use another language (Perl?).
> >
> > Say that MSYS can be installed for testing. Anyway, I would
I'll take a look on it.
> > like to separate test description and the script running it.
But if the test description is a shell script the user/dev will have more options to write tests.
We can define the test description in xml and write the framework in C/C++,
but in this case im not able write the framework (i dont have the time and the knowledge). :(
I just wanted a small module test framework, if you and other devs want a huge sophisticated test suite,
maybe we should take a look on the mass of frameworks and testsuites which are free availible?
> >
> > > > But how can you check if module's output is correct?
> > > The framework should not be that smart (i think thats impossible to implement, every test may produce different output ) to check if every output is
> > > correct. But it should provide the functionality so the dev/user can build testfunctions to check the output (r.info -r). The framework
> > > should handle this funktions and should integrate them into the reports.
> >
> > Without output data verification it is almos useless in my opinion.
> > I have 2 examples in my mind I recently saw:
> > - new bug introduced in v.to.rast (last line segment not rasterized)
> > - bug in v.in.ascii on Windows (missing header file -> wrong output)
Please dont misunderstand me, i didnt say'd we should not validate the output data, but the testscript
writer should provide these informations.
And your a right in the point, that the framework should know how to compare/remove the data. ;)
> >
> > That is why I suggested a small mapset with etalon output data
> > which can be used for verification of test output.
I completly agree.
Indeed, thats an important point, to have one/some validation mapsets.
+ added to the must have list
>
> I agree, we need to compare the target output data with the generated.
> Given that they are most often binary, we can't use diff (R test uses diff
> on plain text files), but could we use checksums or something like a file
> digest to show same/different?
Interesting point, i dont know which one is better/faster, maybe a combination one for ascii and the other one for binary files?
+ added to the must have list
Many thanks for your suggestions!
Example: maybe a test description should look like this?
#########################################
#Testcript for r.mapcalc written by me
#Some important variables, needed by the framework
NeedValidationMapset="True" #only run this test in a validation mapset
ValidateOutputData="True" #validate the output data
OutputDataType="raster" #need to compare and remove the data
Programm="r.mapcalc" #the programm that should be tested
NumberOfTests=3 #Number of Tests
#define the output map names
OutputData[0]="grassTestOutputRmapcalc0"
OutputData[1]="grassTestOutputRmapcalc1"
OutputData[2]="grassTestOutputRmapcalcNoValidation"
#define the Validation map names
ValidationData[0]="r_mapcalc_validation_int_10"
ValidationData[1]="r_mapcalc_validation_float_10"
ValidationData[2]="none" #no validatio is needed, just an example
#define the command line options
GrassProgrammOptions[0]="${OutputData[0]} = 10"
GrassProgrammOptions[1]="${OutputData[1]} = 10.0"
GrassProgrammOptions[2]="${OutputData[2]} = 10.0"
#Now run the test
TestProgramm #thats a framework function, runs the programm and compares the output
#Take care the produced output is removed
RemoveTestedData #thats a framework function, the framework knows the datatype
########################################
What are you thinking?
Best regards
Soeren
>
> Roger
>
> >
> > Radim
> >
> > _______________________________________________
> > grass5 mailing list
> > grass5 at grass.itc.it
> > http://grass.itc.it/mailman/listinfo/grass5
> >
>
More information about the grass-dev
mailing list