Podrška #29026
ZatvorenF18 TDD, prvi integracijski testovi
Dodano od Ernad Husremović prije skoro 14 godina. Izmjenjeno prije skoro 14 godina.
0%
Povezani tiketi 1 (0 otvoreno — 1 zatvoren)
Izmjenjeno od Ernad Husremović prije skoro 14 godina
rezultat
vagrant@f18-dev-1:~/github/F18_knowhow$ ./F18_test
----------------------------------------------------------------------------------------------------
Version: Harbour 3.2.0dev (Rev. 17922)
Compiler: GNU C 4.6.3 (32-bit)
OS: Linux 3.2.0-23-generic-pae i686
Date, Time: 2012.08.31 00:55:00
Shortcut opt.: ON
Switches:
====================================================================================================
R No. Line TestCall() -> Result | Expected
----------------------------------------------------------------------------------------------------
1 TEST_MIGRATE(42 FILE(_dbf) -> .T. | .T.
2 TEST_MIGRATE(46 FILE(_dbf) -> .T. | .T.
3 TEST_MIGRATE(50 FILE(_dbf) -> .T. | .T.
4 HARBOUR_BASE(5) hb_ValToStr( 4 ) -> " 4" | " 4"
5 HARBOUR_BASE(6) hb_ValToStr( 4.0 / 2 ) -> " 2.00" | " 2.00"
6 HARBOUR_BASE(7) hb_ValToStr( "String" ) -> "String" | "String"
7 HARBOUR_BASE(8) hb_ValToStr( hb_SToD( "20010101" ) ) -> "2001.01.01" | "2001.01.01"
8 HARBOUR_BASE(9) hb_ValToStr( NIL ) -> "NIL" | "NIL"
9 HARBOUR_BASE(10 hb_ValToStr( .F. ) -> ".F." | ".F."
10 HARBOUR_BASE(12 hb_ValToStr( .T. ) -> ".T." | ".T."
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "semaphores_f18_test_pkey" for table "semaphores_f18_test"
row number -1 is out of range 0..-1
11 MODSTRU_TEST(58 FIELDPOS("NAZ2") > 0 .AND. LEN(EVAL(FIELDBLOCK("ID"))) == 5 -> .T. | .T.
12 FETCH_SET_METRI fetch_metric(_sect, NIL, _is_fakturisi) -> .F. | .F.
13 FETCH_SET_METRI fetch_metric(_sect, NIL, _is_fakturisi) -> .T. | .T.
14 FETCH_SET_METRI fetch_metric(_sect, NIL, _is_fakturisi) -> .F. | .F.
15 FETCH_SET_METRI fetch_metric(_sect, f18_user(), _color ) -> 50 | 50
16 FETCH_SET_METRI fetch_metric(_sect, f18_user(), _color ) -> 50 | 50
17 FETCH_SET_METRI fetch_metric(_sect, "<>", _color ) -> 101 | 101
18 FETCH_SET_METRI fetch_metric(_sect, f18_user(), _color ) -> 101 | 101
19 FETCH_SET_METRI fetch_metric(_sect, f18_user(), _color ) -> 70 | 70
20 FETCH_SET_METRI fetch_metric(_sect) -> "hbakir" | "hbakir"
21 FETCH_SET_METRI fetch_metric(_sect, NIL, "default_default") -> "default_default" | "default_default"
22 FETCH_SET_METRI fetch_metric(_sect, "hernad", _dat_2) -> HB_SToD("20111224") | HB_SToD("20111224")
23 FETCH_SET_METRI fetch_metric(_sect, NIL, _dat_2) -> HB_SToD("20110101") | HB_SToD("20110101")
24 TEST_VERSION(19 get_version_str(_num) -> "3.21.55" | "3.21.55"
25 TEST_VERSION(22 get_version_str(_num) -> "55.5.7" | "55.5.7"
26 TEST_VERSION(24 get_version_num(12, 5, 49) -> 120549 | 120549
27 I_DODAJ_SIFRU_R test_var("ok") -> .T. | .T.
28 I_DODAJ_SIFRU_R test_var("rec_99") == 1 -> .T. | .T.
29 I_DODAJ_SIFRU_P test_var("ok") -> .T. | .T.
30 I_DODAJ_SIFRU_P test_var("rec_part_99") == 1 -> .T. | .T.
31 I_DODAJ_SIFRE_R test_var("ok") -> .T. | .T.
32 I_DODAJ_SIFRE_R test_var("rec_roba_t1") == 1 .AND. test_var("rec_roba_t2") = -> .T. | .T.
33 I_POVRAT_FAKTUR test_var("fakt_pov") == 0 -> .T. | .T.
34 I_NAPRAVI_FAKTU test_var("fakt_77") == 2 -> .T. | .T.
====================================================================================================
Test calls passed: 34 ( 100.00 % )
Test calls failed: 0 ( 0.00 % )
----------
Total: 34 ( Time elapsed: 4.42 seconds )
Izmjenjeno od Ernad Husremović prije skoro 14 godina
integracijski testovi vrše automatsko testiranje korisničkih funkcija, simulirajući rad korisnika unutar aplikacije.
tako sam napravio unos (i_dodaj_sifru):- radna jedinice 99
- partner 99999
- artiikli TEST1, TEST2
ako ovi artikli postoje sa c-F se traže pa brišu ... što znači da se uvijek indirektno testiraju i funkcije kao što je c-F - traži šifru.
kada se pokriju glavne funkcije sa ovakvim testovima, side efekat bugovi će biti preventivno eliminisani. Kao što znamo, svaka nova verzija F18 core-a izaziva veliki broj tih side efekata bugo-ova - regresija funkcionalnosti
Izmjenjeno od Ernad Husremović prije skoro 14 godina
integracijski testovi fakturisanje¶
podešavanje parametara zaglavlja fakture:
evo kako izgleda takva testna funkcije
pa onda ide povrat fakture
i na kraju kreiranje fakture od dvije stavke
gornji testovi pokazuju da li su operacije uspješno realizovane
Izmjenjeno od Ernad Husremović prije skoro 14 godina
developerske procedure - pokretanje testova nakon builda¶
ove testove developer treba nakon svakog builda pokretati. to se radi iz dva koraka:
./build_test.sh => F18_test
./F18_test
baza koja se koristi za test je uvijek localhost/f18_test
za te potrebe trebamo napraviti i redovno održavati empty bazu (sa standarnim sifarnicima)
Izmjenjeno od Ernad Husremović prije skoro 14 godina
developerske procedure - pravljenje novih testova¶
potrebno je za sve kritične operacije kao što su izdavanje računa, i ažuriranje dokumenata napraviti testove
Izmjenjeno od Ernad Husremović prije skoro 14 godina
test štampe fakture¶
...
25 TEST_VERSION(22 get_version_str(_num) -> "55.5.7" | "55.5.7"
26 TEST_VERSION(24 get_version_num(12, 5, 49) -> 120549 | 120549
27 I_DODAJ_SIFRU_R test_var("ok") -> .T. | .T.
28 I_DODAJ_SIFRU_R test_var("rec_99") == 1 -> .T. | .T.
29 I_DODAJ_SIFRU_P test_var("ok") -> .T. | .T.
30 I_DODAJ_SIFRU_P test_var("rec_part_99") == 1 -> .T. | .T.
31 I_DODAJ_SIFRE_R test_var("ok") -> .T. | .T.
32 I_DODAJ_SIFRE_R test_var("rec_roba_t1") == 1 .AND. test_var("rec_roba_t2") = -> .T. | .T.
33 I_POVRAT_FAKTUR test_var("fakt_pov") == 0 -> .T. | .T.
34 I_NAPRAVI_FAKTU test_diff_between_files("fakt_1.txt", _fakt_outf) -> 0 | 0 <<<<<<<<<
35 I_NAPRAVI_FAKTU test_var("fakt_77") == 2 -> .T. | .T.
====================================================================================================
Test calls passed: 35 ( 100.00 % )
Test calls failed: 0 ( 0.00 % )
----------
Total: 35 ( Time elapsed: 6.10 seconds )
na čemu je bazirana ? na jednostavnom diff-ovanju (sa diff programom) test/data/fakt_1.txt fakture i izgenerisanog outf.txt-a
Izmjenjeno od Ernad Husremović prije skoro 14 godina
Testiranje ODT dokumenata¶
odt je zip fajl a u njemu se nalazi xml sadržaj
vagrant@f18-dev-1:~/github/F18_knowhow/tmp$ sudo apt-get install libxml2-utils
Izmjenjeno od Ernad Husremović prije skoro 14 godina
koristiću unzip i xmllint eksterne aplikacije
Izmjenjeno od Ernad Husremović prije skoro 14 godina
F18 1.3.17
vagrant@f18-dev-1:~/github/F18_knowhow$ ./F18_test
----------------------------------------------------------------------------------------------------
Version: Harbour 3.2.0dev (Rev. 17922)
Compiler: GNU C 4.6.3 (32-bit)
OS: Linux 3.2.0-23-generic-pae i686
Date, Time: 01.09.12 16:00:15
Shortcut opt.: ON
Switches:
====================================================================================================
R No. Line TestCall() -> Result | Expected
----------------------------------------------------------------------------------------------------
1 TEST_MIGRATE(42 FILE(_dbf) -> .T. | .T.
2 TEST_MIGRATE(46 FILE(_dbf) -> .T. | .T.
3 TEST_MIGRATE(50 FILE(_dbf) -> .T. | .T.
4 HARBOUR_BASE(5) hb_ValToStr( 4 ) -> " 4" | " 4"
5 HARBOUR_BASE(6) hb_ValToStr( 4.0 / 2 ) -> " 2.00" | " 2.00"
6 HARBOUR_BASE(7) hb_ValToStr( "String" ) -> "String" | "String"
7 HARBOUR_BASE(8) hb_ValToStr( hb_SToD( "20010101" ) ) -> "01.01.01" | "01.01.01"
8 HARBOUR_BASE(9) hb_ValToStr( NIL ) -> "NIL" | "NIL"
9 HARBOUR_BASE(10 hb_ValToStr( .F. ) -> ".F." | ".F."
10 HARBOUR_BASE(12 hb_ValToStr( .T. ) -> ".T." | ".T."
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "semaphores_f18_test_pkey" for table "semaphores_f18_test"
row number -1 is out of range 0..-1
11 MODSTRU_TEST(58 FIELDPOS("NAZ2") > 0 .AND. LEN(EVAL(FIELDBLOCK("ID"))) == 5 -> .T. | .T.
12 FETCH_SET_METRI fetch_metric(_sect, NIL, _is_fakturisi) -> .F. | .F.
13 FETCH_SET_METRI fetch_metric(_sect, NIL, _is_fakturisi) -> .T. | .T.
14 FETCH_SET_METRI fetch_metric(_sect, NIL, _is_fakturisi) -> .F. | .F.
15 FETCH_SET_METRI fetch_metric(_sect, f18_user(), _color ) -> 50 | 50
16 FETCH_SET_METRI fetch_metric(_sect, f18_user(), _color ) -> 50 | 50
17 FETCH_SET_METRI fetch_metric(_sect, "<>", _color ) -> 101 | 101
18 FETCH_SET_METRI fetch_metric(_sect, f18_user(), _color ) -> 101 | 101
19 FETCH_SET_METRI fetch_metric(_sect, f18_user(), _color ) -> 70 | 70
20 FETCH_SET_METRI fetch_metric(_sect) -> "hbakir" | "hbakir"
21 FETCH_SET_METRI fetch_metric(_sect, NIL, "default_default") -> "default_default" | "default_default"
22 FETCH_SET_METRI fetch_metric(_sect, "hernad", _dat_2) -> HB_SToD("20111224") | HB_SToD("20111224")
23 FETCH_SET_METRI fetch_metric(_sect, NIL, _dat_2) -> HB_SToD("20110101") | HB_SToD("20110101")
24 TEST_VERSION(19 get_version_str(_num) -> "3.21.55" | "3.21.55"
25 TEST_VERSION(22 get_version_str(_num) -> "55.5.7" | "55.5.7"
26 TEST_VERSION(24 get_version_num(12, 5, 49) -> 120549 | 120549
27 I_DODAJ_SIFRU_R test_var("ok") -> .T. | .T.
28 I_DODAJ_SIFRU_R test_var("rec_99") == 1 -> .T. | .T.
29 I_DODAJ_SIFRU_P test_var("ok") -> .T. | .T.
30 I_DODAJ_SIFRU_P test_var("rec_part_99") == 1 -> .T. | .T.
31 I_DODAJ_SIFRE_R test_var("ok") -> .T. | .T.
32 I_DODAJ_SIFRE_R test_var("rec_roba_t1") == 1 .AND. test_var("rec_roba_t2") = -> .T. | .T.
33 I_POVRAT_FAKTUR test_var("fakt_pov") == 0 -> .T. | .T.
34 (b)I_NAPRAVI_FA test_diff_between_files("fakt_1.txt", _fakt_outf) -> 0 | 0
35 (b)I_NAPRAVI_FA test_diff_between_odt_files("fakt_1.odt", _fakt_out_odt) -> 0 | 0
36 I_NAPRAVI_FAKTU test_var("fakt_77") == 2 -> .T. | .T.
====================================================================================================
Test calls passed: 36 ( 100.00 % )
Test calls failed: 0 ( 0.00 % )
----------
Total: 36 ( Time elapsed: 6.18 seconds )
napomena: testove izvoditi do daljnjeg na ubuntu mašini. windows diff (odt, txt) nije podržan
Izmjenjeno od Ernad Husremović prije skoro 14 godina
tokom rada sam neke globalne postavke mjenjao (postavke datuma SET DATE ...)
Testovi su mi odmah detektovali probleme koje promjene izazivaju
Izmjenjeno od Ernad Husremović prije skoro 14 godina
- Status promijenjeno iz Dodijeljeno u Zatvoreno
ova prva baterija testova je sada jedna smislena cijelina.
prije svake isporuke nove verzije obavezno ih treba pokrenuti