Testen: verschil tussen versies

Uit EekBoek
Naar navigatie springenNaar zoeken springen
(Initiële versie)
 
(Toevoegingen basis tests en ivp)
 
(6 tussenliggende versies door 2 gebruikers niet weergegeven)
Regel 1: Regel 1:
Het is ./Build test die de tests draait. Dit testproces omvat het uitvoeren van alle t/*.t files (dus alle files met .t extensie in de t directory).
In feite omvat de testen van EekBoek de volgende dingen:
prove [ -l | -b ] [ -v ] t/testnaam.t
* de basis-tests
De IVP tests zijn dus t/91_ivp_sqlite.t en t/92_ivp_postgres.t . Beide files maken gebruik van gemeenschappelijke code in 90_ivp_common.pl en data in t/ivp
* de installatie verificatie procedure
* administratie-test framework.


== Test framework ==
De opdracht <tt><b>./Build test</b></tt> voert alle beschikbare tests uit. Dat zijn op dit moment de basis tests en de installatie verificatie procedure (IVP). Dit testproces omvat het uitvoeren van alle t/*.t files, dus alle files met .t extensie in de t directory.  
Er is een test framework waarmee het eenvoudig is om functionele tests uit te voeren. Je zet de bekende vier bestanden in een directory, voegt een bestandje "tests.eb" toe en het framework zorgt ervoor dat de administratie wordt aangemaakt en de tests gedraaid. De tests worden geacht rapporten te produceren die dan worden gecontroleerd aan de hand van meegeleverde referentie-rapporten.  


Bijvoorbeeld:
De IVP verifieert met de beschikbare database drivers vrijwel alle aspecten van het administratie voeren. Met andere woorden, als de IVP geslaagd is, dan zal EekBoek ook functioneel correct werken, behoudens nog niet ontdekte bugs. De IVP tests zijn <tt><b>t/91_ivp_sqlite.t</b></tt> en <tt><b>t/92_ivp_postgres.t</b></tt>. Beide files maken gebruik van gemeenschappelijke code in 90_ivp_common.pl en data in t/ivp .
 t/admtest_btw.t
t/admtest_btw/eekboek.conf
 t/admtest_btw/mutaties.eb
 t/admtest_btw/opening.eb
t/admtest_btw/relaties.eb
 t/admtest_btw/schema.dat
 t/admtest_btw/tests.eb
 t/admtest_btw/ref/btwall1.txt
 t/admtest_btw/ref/btwall2.txt


De eigenlijke test file is
Interessanter is het (nog in ontwikkeling zijnde) test framework, dat hieronder staat afgebeeld. Tests die met dit framework worden gemaakt, worden straks ook meegenomen in de ./Build test.
 t/admtest_btw.t
en die bevat enkel:
 our $tag = "admtest_btw";
 our $dbdriver = "postgres";  
# SQLite cannot import
 unshift( @INC, "t" ) if -d "t";
 require " admtest_common.pl";


De tests.eb bevat:
== Test framework ==
 btwaangifte --output=btwall1.txt
Er is een test framework waarmee het eenvoudig is om functionele tests uit te voeren. Je zet de bekende vier bestanden in een directory, voegt een bestandje "tests.eb" toe en het framework zorgt ervoor dat de administratie wordt aangemaakt en de tests gedraaid. De tests worden geacht rapporten te produceren die dan worden gecontroleerd aan de hand van meegeleverde referentie-rapporten.  
 export --file=foo.ebz --single --nototals
 import --file=foo.ebz
 btwaangifte --output=btwall2.txt


De aangemaakte rapporten worden vergeleken met de referentie-rapporten:
[[Bestand:eekboek-testing_.png]]
 t/admtest_btw/ref/btwall1.txt
 t/admtest_btw/ref/btwall2.txt


De uitvoer van "prove -b -v t/admtest_btw.t" :
Bijvoorbeeld de inhoud van de directory t/admtest_btw:
 t/admtest_btw.t ..  1..12  ok
1 - use IPC::Run3;  ok
2 - writable output dir  ok
3 - file is present: eekboek.conf  ok
4 - file is present: schema.dat  ok
5 - file is present: opening.eb  ok
6 - file is present: relaties.eb  ok
7 - file is present: mutaties.eb  ok
8 - file is present: tests.eb  ok
9 - initialise database  ok
10 - running tests  ok
11 - verification: btwall1.txt  ok
12 - verification: btwall2.txt  ok
All tests successful.
 Files=1, Tests=12, ...
 Result: PASS --


De tests worden geacht rapporten te produceren die dan worden gecontroleerd aan de hand van meegeleverde referentie-rapporten. Bijvoorbeeld:
  t/admtest_btw.t
  t/admtest_btw.t
  t/admtest_btw/eekboek.conf
  t/admtest_btw/eekboek.conf
Regel 63: Regel 25:
  t/admtest_btw/tests.eb
  t/admtest_btw/tests.eb
  t/admtest_btw/ref/btwall1.txt
  t/admtest_btw/ref/btwall1.txt
  t/admtest_btw/ref/btwall2.txt
  t/admtest_btw/ref/btwall2.txt  
 
De eigenlijke test file is:
 
t/admtest_btw.t
 
en die bevat enkel:
 
our $tag = "admtest_btw";
our $dbdriver = "postgres"; 
unshift( @INC, "t" ) if -d "t";
require " admtest_common.pl";
 
De tests.eb bevat:
 
btwaangifte --output=btwall1.txt
export --file=foo.ebz --single --nototals
import --file=foo.ebz
btwaangifte --output=btwall2.txt
 
De aangemaakte rapporten worden vergeleken met de referentie-rapporten:
 
t/admtest_btw/ref/btwall1.txt
t/admtest_btw/ref/btwall2.txt
 
Een enkele test kan worden gedraaid met de opdracht:
 
prove [ -l | -b ] [ -v ] t/testnaam.t
 
Prove is een command-line tool voor het draaien van tests tegen een bepaald test harnas. Kijk op <tt><b>man prove</b></tt> voor de mogelijkheden en de opties.
 
De uitvoer van "prove -b -v t/admtest_btw.t" is dan:
t/admtest_btw.t ..  1..12  ok
1 - use IPC::Run3;  ok
2 - writable output dir  ok
3 - file is present: eekboek.conf  ok
4 - file is present: schema.dat  ok
5 - file is present: opening.eb  ok
6 - file is present: relaties.eb  ok
7 - file is present: mutaties.eb  ok
8 - file is present: tests.eb  ok
9 - initialise database  ok
10 - running tests  ok
11 - verification: btwall1.txt  ok
12 - verification: btwall2.txt  ok
ok
All tests successful.
Files=1, Tests=12, ...
Result: PASS --

Huidige versie van 23 jan 2011 om 09:20

In feite omvat de testen van EekBoek de volgende dingen:

  • de basis-tests
  • de installatie verificatie procedure
  • administratie-test framework.

De opdracht ./Build test voert alle beschikbare tests uit. Dat zijn op dit moment de basis tests en de installatie verificatie procedure (IVP). Dit testproces omvat het uitvoeren van alle t/*.t files, dus alle files met .t extensie in de t directory.

De IVP verifieert met de beschikbare database drivers vrijwel alle aspecten van het administratie voeren. Met andere woorden, als de IVP geslaagd is, dan zal EekBoek ook functioneel correct werken, behoudens nog niet ontdekte bugs. De IVP tests zijn t/91_ivp_sqlite.t en t/92_ivp_postgres.t. Beide files maken gebruik van gemeenschappelijke code in 90_ivp_common.pl en data in t/ivp .

Interessanter is het (nog in ontwikkeling zijnde) test framework, dat hieronder staat afgebeeld. Tests die met dit framework worden gemaakt, worden straks ook meegenomen in de ./Build test.

Test framework

Er is een test framework waarmee het eenvoudig is om functionele tests uit te voeren. Je zet de bekende vier bestanden in een directory, voegt een bestandje "tests.eb" toe en het framework zorgt ervoor dat de administratie wordt aangemaakt en de tests gedraaid. De tests worden geacht rapporten te produceren die dan worden gecontroleerd aan de hand van meegeleverde referentie-rapporten.

Bijvoorbeeld de inhoud van de directory t/admtest_btw:

t/admtest_btw.t
t/admtest_btw/eekboek.conf
t/admtest_btw/mutaties.eb
t/admtest_btw/opening.eb
t/admtest_btw/relaties.eb
t/admtest_btw/schema.dat
t/admtest_btw/tests.eb
t/admtest_btw/ref/btwall1.txt
t/admtest_btw/ref/btwall2.txt 

De eigenlijke test file is:

t/admtest_btw.t 

en die bevat enkel:

our $tag = "admtest_btw"; 
our $dbdriver = "postgres";  
unshift( @INC, "t" ) if -d "t"; 
require " admtest_common.pl"; 

De tests.eb bevat:

btwaangifte --output=btwall1.txt 
export --file=foo.ebz --single --nototals 
import --file=foo.ebz 
btwaangifte --output=btwall2.txt 

De aangemaakte rapporten worden vergeleken met de referentie-rapporten:

t/admtest_btw/ref/btwall1.txt 
t/admtest_btw/ref/btwall2.txt 

Een enkele test kan worden gedraaid met de opdracht:

prove [ -l | -b ] [ -v ] t/testnaam.t 

Prove is een command-line tool voor het draaien van tests tegen een bepaald test harnas. Kijk op man prove voor de mogelijkheden en de opties.

De uitvoer van "prove -b -v t/admtest_btw.t" is dan:

t/admtest_btw.t ..  1..12  ok
1 - use IPC::Run3;  ok
2 - writable output dir  ok
3 - file is present: eekboek.conf  ok
4 - file is present: schema.dat  ok
5 - file is present: opening.eb  ok
6 - file is present: relaties.eb  ok
7 - file is present: mutaties.eb  ok
8 - file is present: tests.eb  ok
9 - initialise database  ok
10 - running tests  ok
11 - verification: btwall1.txt  ok
12 - verification: btwall2.txt  ok
ok
All tests successful.
Files=1, Tests=12, ...
Result: PASS --