Metadata: unit test, cppunit, testy, kvalita
Novo generovane data sa nachadzaju na ceste:
192.168.241.25/Dokumentacia/Projekty_ISO/02_PlatobnySystem-Intel/To/Test/__DATAtest/
a
192.168.241.25/DokumentaciaTD/VyvojovyUsekArchiv/VyvojSW/TransFare/IntegrationTesting/
Aktualne pouzivane data sa nachadzaju v git repozitari vozidlovej aplikacie 'vehiclesystemapps.git', v priecinku: AppCore/src/tests/data
Z tejto cesty treba data rozbalit este na Phoenix: <code> /usr/local/emtest/platforms/templates/testing/cpdata/ </code>
V pripade potreby zmien konfiguracie testov sa zmeny vykonavaju na Phoenixe aby sa prejavili na vsetkych PC
Rozbehnutie unit testov na PC: je potrebne mat vytvorene priecinky testing na ceste /opt/devel/etc/ a /opt/devel/var/lib/
ln -s CESTA_K_STIAHNUTYM_ZDROJAKOM/AppCore/src/tests/configs/ /opt/devel/etc/testing/ETIL
ln -s CESTA_K_STIAHNUTYM_ZDROJAKOM/AppCore/src/tests/data /opt/devel/var/lib/testing/cpdata
| Linka | Spoj | Popis |
| 100002 | | kombinovna PAL s usekom MHD - zastavky ZA nastavena TS MHD s nahradnou Primestska , zvysok Primestska |
| 102 | | MHD pasmovy tarifny system s usekmi 1-1, 1-2, 2-2. |
| 102418 | | BID zonovy usek s prechodom do neIDS BID useku. |
| 102414 | 33 | 'Bac,razc' do 'Rohovce,posta' - 4km + navazny 102414/42 'Rohovce, posta' do 'Bac OU' 5km = 9km /0,9e. Nastavena odchylka na vsetky linky z 'Bac, razc' - 'Bac OU' 1 riadok 0,7e |
| 506401 | 1 |
| 506402 | 1 |
V systeme je nastavena odchylka pre zastavky z 'Bac, razc' → 'Bac OU'.
Popis fungovania odchyliek:
DokumentaciaTD/VyvojovyUsek/VyvojSW/TransFare/OnboardComputer_Slave_Common/SpolocneVlastnostiCitackyAPalubnehoPocitaca_VERZIA.pdf
Na zastavkach su nastavene nasledovne odchylky:
| Typ odchylky | Riadok cennika | Linka | Spoj | Zastavky | Tarif. skupina | Cennik |
| Odchylka na linku, spoj a zast. | riadok 4 - 1.10eur | 102414 | 33 | 'Báč,, rázc.' → 'Báč,,OcÚ' | PAL/11 | Primesto/801000027 |
| Odchylka na linku | riadok 3 - 0.90eur | 102414 | lubovolny(napr. 39) | 'Báč,, rázc.' → 'Báč,,OcÚ' | PAL/11 | Primesto/801000027 |
| Vseobecna odchylka na zastavky | riadok 2 - 0.80eur | lubovolna(napr. 102418) | lubovolny(napr. 235) | 'Báč,, rázc.' → 'Báč,,OcÚ' | PAL/11 | Primesto/801000027 |
6.10.2020
nove data pre IDS ZSK
Cennik ZSK - prestupny, do 30 min od vystupu podla CP, cena za kazdy km 0.02 + fixna cena, ktora je zlavou po prestupe
2 linky z Martina s nastavenou TS IDS + nahradna neids + navzajom nastavene ako nahradne
8.2.2018
100001(1A)/6 zastavka Brodno aj 100002(2A)/4 zastavka brodno → prestup na 3(3)/1
100001/6 zastavka Brodno → prestup na 3(3)/1 a sucasne 3(3)/1 zastavka Brodno → prestup na 100001(1A) /5
linka 2 (2B) spoj 2 + pokracujuca linka 3(3) spoj 1 na zastavke ZA Brodno zel.st → 100001 (1A) spoj 5
linka 3(3) spoj 1 zastavka ZA,Brodno zel.st → prestup na linku 100001(1A) spoj 5 + pokracujuca 100002 (2A) spoj 3
100002(2A)/4 zastavka A.Bernolaka → prestup na 100001(1A)/6 a na zastavke Brodno → prestup na 3(3)/1
13.11.2017 - K.Turcelova
pridana linka 12 - MHD KE
pridany cennik casovy - Obycajne cest 30 a 60 min + zastavkovy - 4zastavky + pasmovy CL 30dni zakladny
TS 10 MHD s obycajnym cestovnym + CL / nahradna TS 9 4zastavkovy
16.06.2016 - K.Turcelova
znova nahodene vsetky linky, naimportovane linky SL a prneseny tarifny BID lebo sa stratila DB
vygenerovane data so spojom 102418/26 obchadzka JL ale cas nastup - vystup je viac ako za prejdene zony
Strata databazy
Stary changelog sa nachadza na ceste
Dokumentacia/Projekty_ISO/02_PlatobnySystem-Intel/To/Test/DATAtest
Aktualne pouzivane testy sa nachadzaju v git repozitari vozidlovej aplikacie 'vehiclesystemapps.git', v priecinku: AppCore/src/tests/configs.
Kazdy test ma definovane vstupne data vo forme XML (konfiguracia testu), kde su zadane elementarne vstupy pre vydaj (napr Linka, Spoj, CisloTarifnehoListka, nastupna a vystupna zastavka, … - vsetko sekcia <Input>). Kartove testy maju navyse v tychto vstupnych datach definovanu cestu k suboru s datami karty (<CardDataFilePath>).
Vo vstupnych datach mozu byt v sekcii <Output> definovane dalsie parametre, ktore sa mozu spatne kontrolovat napr. po vydaji listka (moze sa kontrolovat napr. cena listka, …).
Priklad konfiguracie testu:
<?xml version="1.0" encoding="utf-8"?>
<Test>
<Input>
<Line>2</Line> <!-- obligatory -->
<Trip>1</Trip> <!-- obligatory -->
<ProtectNumber>9999</ProtectNumber> <!-- obligatory -->
<TariffTicketNumber>1</TariffTicketNumber> <!-- obligatory -->
<TicketCount>1</TicketCount> <!-- obligatory -->
<IssueType>1</IssueType> <!-- obligatory -->
<PaymentType>1</PaymentType> <!-- obligatory -->
<OperationType>0</OperationType> <!-- obligatory -->
<Tariff></Tariff> <!-- obligatory -->
<TariffGroup>1</TariffGroup> <!-- obligatory -->
<CardWriteOperations>6</CardWriteOperations>
<TripOrderCheckinBusStop>0</TripOrderCheckinBusStop>
<TripOrderCheckoutBusStop>1</TripOrderCheckoutBusStop>
<TripOrderOfBusStopForCheckOut>0</TripOrderOfBusStopForCheckOut>
<CreditRecharge></CreditRecharge>
<TicketCount>1</TicketCount>
<CancelationStatisticTicketNumber></CancelationStatisticTicketNumber>
<DeviceSerialNumber>18</DeviceSerialNumber>
<AdvertisementEnabled></AdvertisementEnabled>
<CrossTransfer>18</CrossTransfer>
<MultipleTickets></MultipleTickets>
<ZoneList>
<Zone>15</Zone>
</ZoneList>
<CheckInZone></CheckInZone>
<CheckOutZone></CheckOutZone>
<CheckOutZoneBusStopID></CheckOutZoneBusStopID>
<CheckInZoneBusStopID></CheckInZoneBusStopID>
<PassNumber></PassNumber>
<PriceListRow></PriceListRow>
<FlagShowConfirmationMessageOnPortableEP></FlagShowConfirmationMessageOnPortableEP>
<FlagAllowIssueOnPortableEP></FlagAllowIssueOnPortableEP>
<FlagTransferForAllTicketsOnCard></FlagTransferForAllTicketsOnCard>
<FlagProlongTicketsTimeValidity></FlagProlongTicketsTimeValidity>
<FlagRepeatedCheckIn></FlagRepeatedCheckIn>
<FlagExplicitlySelectedTariff></FlagExplicitlySelectedTariff>
<ReclamationUID></ReclamationUID>
<TimeTicketCounter></TimeTicketCounter>
<OneWayTicketCardPositioning></OneWayTicketCardPositioning>
<SelectedCommercialDiscount></SelectedCommercialDiscount>
<CardDataFilePath>ETIL/CardIssue/CardStatistic/image</CardDataFilePath>
</Input>
<Output>
<DistanceKM>1</DistanceKM>
</Output>
</Test>
TestManager je zodpovedny za vyhladavanie a zaregistrovanie vsetkych testov. Prehladava podpriecinky v etc/testing/ETIL, ktore obsahuju .xml subory a ich nazov je definovany nazov konkretneho testu (TestManager ma tieto nazvy definovane v mape napevno).
Pri registracii testov sa definuju makrom CPPUNIT_TEST() nazvy metod triedy, ktore sa maju vykonat pre samotne testovanie.
Trieda, ktora implementuje testy moze obsahovat viacero testov (trieda == balik testov).
Pred spustenim tychto metod sa vola metoda setUp(), ktora vycita vstupne data z konfiguracneho suboru testu,
podla nich nastavi potrebne parametre vydaja a tarifne nastavenia, vytvori novu statistiku, inicializuje vydaj (IssueIn()) a inicializuje TicketIssueLogic.
Po testovani sa vola metoda tearDown(), v ktorej prebehne vytvorenie a naplnenie koncoveho listka statistiky a obnovia sa povodne tarifne nastavenia.
Priklad ako vyzera registracia triedy s testami:
CPPUNIT_TEST_SUITE ( TestStatisticContinuousTrip ); // definovanie balika testov - nazvu triedy
CPPUNIT_TEST ( CheckStatisticContinuousTrip ); // definovnie 1.testu (metoda triedy TestStatisticContinuousTrip)
CPPUNIT_TEST ( CheckStatisticForCombinedTicketOnContinuousTrip ); // definovnie 2.testu (metoda triedy TestStatisticContinuousTrip)
CPPUNIT_TEST_SUITE_END(); // koniec test suite
Samotne testovanie napr. v modelovaj situacii kontroly konkretnych parametrov statistiky po vydaji listka (predpokladajme ze uz metoda setUp() prebehla):
vydame listok
kontrolujeme parametre listka v statistike ( pomocou makra CPPUNIT_ASSERT_MESSAGE() definujeme podmienku, ktora ma byt splnena ak ma test prebehnut uspesne a text, ktory sa zobrazi, ak podmienka nie je splnena.)
Pri testovani je bezne, ze pre jeden balik testov existuje vacsi pocet konfiguracnych suborov, ktore zohladnuju rozne scenare.
Vysledky vsetkych testov sa okrem zapisania na standardny vystup zapisuju do suboru TestResults.xml.
TestCardByway
BywayTest: (zachadzky)
vydaj listka
km na listku vs konfig (PaidDistance ak je zadane)
cena listka vs konfig (TicketPrice ak je zadane)
platene zony vs konfig (PaidZoneList)
TestCardCombinedTicket
BIDCases:
Dokument popisujuci priklady: DokumentaciaTD/VyvojovyUsek/VyvojSW/TransFare/IntegrationTesting/BID cases/Príklady výpočtu cien.pdf
inicializacia card facade + vydaj listka + zapis statistiky
pocet vydanych listkov (ocakava sa jeden)
pocet segmentov vydaneho listka vs konfig (IssuedTicketSegmentsSize)
cena listka vs konfig (TicketPrice)
riadok cennika vydaneho listka vs konfig (PriceListRowNumber)
TestCardDestinationZone
Check:
inicializacia card facade + vydaj listka + zapis statistiky (pred vydajom sa nastavia additional zones, destination zone (DestinationZone) a flag UsePriceListRowWithLongestTimeValidity. Additional zones sa pocitaju z destination zone a inych parametrov konfigu (TripOrderCheckinBusStop, TripOrderCheckoutBusStop, TariffTicketNumber)).
pocet vydanych listkov (ocakava sa jeden)
pocet segmentov vydaneho listka vs konfig (IssuedTicketSegmentsSize)
celkova cena vydaneho listka vs konfig (TicketPrice)
Testy na storno listka z karty. Pre kazdy pripad sa preda listok a nasledne vystornuje. Jednotlive testy menia nastavenia TS40 (storno JL v primeste) a TS149 (storno JL v MHD).
Kontroluju sa polozky:
Testovane situacie:
OWT na karte su zapisane v strukture EOneWayTicketZone:
test_case_01 - Spoj 2/1, zastavky 1-2, CTL 1, TS40=1, TS149=1, na karte nie je ziaden listok
test_case_02 - Spoj 2/1, zastavky 1-2, CTL 1, TS40=1, TS149=1, na karte je listok majitela a spolucestujuceho zo spoja 9/7
test_case_03 - Spoj 2/1, zastavky 1-2, CTL 2, TS40=1, TS149=1, na karte je listok majitela zo spoja 2/1
test_case_04 - Spoj 2/1, zastavky 1-2, CTL 2, TS40=1, TS149=1, na karte je listok majitela zo spoja 2/1, dokupuju a stornuju sa viaceri spolucestujuci
test_case_11 - TS40=2, TS149=2, inak to iste ako test_case_01
test_case_12 - TS40=2, TS149=2, inak to iste ako test_case_02
test_case_13 - TS40=2, TS149=2, inak to iste ako test_case_03
test_case_14 - TS40=2, TS149=2, inak to iste ako test_case_04
OWT na karte su zapisane v strukture EOneWayTicketZoneList:
test_case_21 - struktura EOneWayTicketZoneList, inak to iste ako test_case_01
test_case_22 - struktura EOneWayTicketZoneList, inak to iste ako test_case_02
test_case_23 - struktura EOneWayTicketZoneList, inak to iste ako test_case_03
test_case_24 - struktura EOneWayTicketZoneList, inak to iste ako test_case_04
test_case_31 - struktura EOneWayTicketZoneList, inak to iste ako test_case_11
test_case_32 - struktura EOneWayTicketZoneList, inak to iste ako test_case_12 - iba majitel
test_case_33 - struktura EOneWayTicketZoneList, inak to iste ako test_case_13
test_case_34 - struktura EOneWayTicketZoneList, inak to iste ako test_case_14
Test na kontrolu statistiky po vydaji z karty. Kontroluju sa polozky:
Vypocitana DPH (DPH v statistike sa kontroluje voci vypocitanej DPH z ceny listka a tarify).
Pocet kilometrov, pokial je “nastavenie TS175” (pouzit kombinovany listok) == “0” (nekombinovany listok). Pocet kilometrov sa kontroluje voci TestConfigu.
Testovane situacie:
Spoj 2/1 (PAD), vydaj z prvej na druhu zastavku
Spoj 2/1 (PAD), vydaj z prvej na piatu zastavku
Spoj 100001/1 (MHD), vydaj z prvej na stvrtu zastavku
Testujeme zapis listka spolucestujuceho na kartu:
ak je nastavenie TS62 == “1” a tarifa je prestupna (VT10=0), kazdy listok spolucestujuceho sa ma zapisat vzdy na samostatny ticketIndex (“separatny zapis”)
ak je nastavenie TS62 == “2” alebo tarifa nie je prestupna (VT10=1), listky spolucestujucich s rovnakou tarifou sa maju zapisat na jeden ticketIndex, pricom sa na danom indexe zvysi ticketCount (“spolocny zapis”)
Testovane situacie: spoj 506401/1
Dokupenie spolucestujuceho, ak je na karte zapisany listok majitela. Listok spolucestujuceho sa zapise na samostatny ticketIndex.
Dokupenie spolucestujuceho, ak je na karte zapisany listok majitela a jedneho spolucestujuceho. Pri separatnom zapise sa ma pouzit samostatny ticketIndex. Pri spolocnom zapise sa pouzije ticketIndex prveho spolucestujuceho, pricom sa zvysi pocet listkov.
Dokupenie spolucestujuceho, ak je na karte zapisany listok majitela a dvoch spolucestujucich. Pri separatnom zapise sa ma pouzit samostatny ticketIndex. Pri spolocnom zapise sa pouzije ticketIndex prvych dvoch spolucestujucich, pricom sa zvysi pocet listkov.
Test na predlzenie casoveho listka, pokial je na karte regionalna zlava.
Testovane situacie:
Predlzenie casoveho listka na zony (100,101), pokial je na karte regionalna zlava BID SeniorPass. Spoj 102414/5.
Test na krizove prestupy. Pri krizovom prestupe sa neplati plna cena za listok, ale berie sa do uvahy uz zaplatena cena za predosly spoj.
Testovane situacie:
Jednoduchy krizovy prestup (bez navaznych spojov) zo spoja 100001/6 na 3/1 na zastavke “Brodno,ZST”
ten isty spoj so spolucestujucimi
ten isty spoj, ak je na karte listok z nastavenym flagom “wasInterchange”. Preda sa listok v plnej cene.
Krizovy prestup z navazneho spoja na jednoduchy spoj (zo spoja 2/2+3/1 na 100001/5 na zastavke “Brodno,ZST”)
Krizovy prestup z jednoducheho spoja na navazny spoj (zo spoja 3/1 na 100001/5+100002/3 na zastavke “Brodno,ZST”)
Navrhy testov na dorobenie:
Dvojnasobny krizovy prestup - z 100002/4 na 100001/6 na zastavke “Bernolakova”, potom z 100001/6 na 3/1 na zastavke “Brodno,ZST”. Druhy prestup by mal byt v plnej cene (kvoli nastavenemu flagu wasInterchange).
Vsetky varianty so spolucestujucimi
Test na optimalizaciu listka pri vystupeni z vozidla (checkout). Na optimalizovanom listku sa upravi tarifa, cena a zastavky.
Testovane situacie:
Optimalizacia listka na spoji 12/1, na karte je len listok majitela
Optimalizacia listka na spoji 12/1, na karte je listok majitela aj spolucestujucich
Optimalizacia listka na spoji 12/1, na karte je jazda majitela na PCL a listky spolucestujucich
Test na predlzovanie jednorazoveho listka (dokupovanie minut).
Testovane situacie:
Dokupovanie minut na spoji 12/1, na karte je jazda majitela na PCL a listky dvoch spolucestujucich. Mali by sa predat tri listky, listok pre majitela ma nulovu cenu.
Dokupovanie minut na spoji 12/1, na karte je len listok majitela. Mal by sa predat jeden listok za plnu cenu.
Dokupovanie minut na spoji 12/1, na karte je listok majitela a listky dvoch spolucestujucich. Mali by sa predat tri listky, vsetky za plnu cenu.
Dokupovanie minut na spoji 12/1, na karte je listok majitela a listky dvoch spolucestujucich, predlzujeme len listok majitela. Mal by sa predat jeden listok, listky spolucestujucich by sa mali zneplatnit.
Test na postupny prestup spolucestujucich (prestup sa vykonava len pre jedneho cestujuceho naraz). Kazdy spolucestujuci je zapisany na samostatnom ticketIndexe.
Testovane situacie: vykonava sa prestup na spoj 3/2, na karte je listok majitela a dvoch spolucestujucich zo spoja 3/1 (plny a polovicny)
Majitel ani spolucestujuci este nevykonali prestup - vykona sa len prestup majitela.
Majitel uz vykonal prestup, predavame plnu tarifu - vykona sa len prestup plneho spolucestujuceho.
Majitel uz vykonal prestup, predavame polovicnu tarifu - vykona sa len prestup polovicneho spolucestujuceho.
Majitel a plny spolucestujuci uz vykonali prestup, predavame polovicnu tarifu - vykona sa prestup len polovicneho spolucestujuceho.
Majitel a polovicny spolucestujuci uz vykonali prestup, predavame plnu tarifu - vykona sa prestup len plneho spolucestujuceho.
Vsetci uz vykonali prestup, predavame plnu tarifu - preda sa listok pre dalsieho spolucestujuceho.
!!! Pozor, ak testy z modulu TestCardOneWayTicketAcceptance neprechadzaju, treba brat na zretel fakt, ze casova akceptacia platneho listka je zavisla od casov na zastavkach podla cestovnych poriadkov
Aktulne je nastavena linka 102414, spoj 1, cca 00:00 - 6:50 test neprechadza
Testy na kontrolu typ karty - typ zlavy a prenosnu penazenku
Test case-y:
vydaj listka, kde typ zlavy ID na tarife je rovnaky ako typ zlavy na karte, vydaj ma prebehnut bez chyby
vydaj listka, kde typ zlavy ID na tarife NIE je rovnaky ako typ zlavy na karte, vydaj ma skoncit EIssueLogicDefines::ErrorIssueOnPortableWallet
vydaj listka, kde typ zlavy ID na tarife NIE je rovnaky ako typ zlavy na karte, ale je zapnuta prenosna penazenka, vydaj ma prebehnut bez chyby
vydaj listka, kde typ zlavy ID na tarife NIE je rovnaky ako typ zlavy na karte, je zapnuta prenosna penazenka a vyzadovane potvrdenie pri vydaji na prenosnu penazenku, vydaj skonci chybou EIssueLogicDefines::ErrorInvalidTariffToCard, nasledne sa nastavi flag pre potvrdenie vydaja na prenosnu penazenku, nasledny vydaj ma prebehnut bez chyby
vydaj listka, kde typ zlavy ID na tarife je rovnaky ako typ zlavy na karte, na karte je platny casovy listok na zonu 255, cestujeme cez zony 255 a 245, na zonu 255 sa uplatni jazda na PCL, na zonu 245 sa vyda JL, kontroluje sa pocet issuet ticket segmentov a hodnota pocet platenych zon
vydaj listka, kde typ zlavy ID na tarife NIE je rovnaky ako typ zlavy na karte, avsak kontrola zhody typu karty a typu tarify je vypnuta, vydaj ma prebehnut bez chyby
Vydavame listok na spoj 2/1 (aj ked je capping primarne urceny pre MHD, je ho mozne nastavit na akukolvek tarifu - linka 2 je PAD), z prvej (index 0) na druhu zastavku (index 1), plna cena podla typu kartu je 59 centov Test case-y vychadzaju z testovacich scenarov z RM tasku 11001 (https://redmine.transdata.sk/issues/11001)
TestCashCombinedTicket
BIDCases:
Dokument popisuju priklady: DokumentaciaTD/VyvojovyUsek/VyvojSW/TransFare/IntegrationTesting/BID cases/Príklady výpočtu cien.pdf
vydaj listka
pocet vydanych listkov (ocakava sa jeden)
pocet segmentov vydaneho listka vs konfig (IssuedTicketSegmentsSize)
cena listka vs konfig (TicketPrice)
riadok cennika vydaneho listka vs konfig (PriceListRowNumber)
TestCashDestinationZone
Check:
vydaj listka (pred vydajom sa nastavia additional zones, destination zone (DestinationZone) a flag UsePriceListRowWithLongestTimeValidity. Additional zones sa pocitaju z destination zone a inych parametrov konfigu (TripOrderCheckinBusStop, TripOrderCheckoutBusStop, TariffTicketNumber)).
pocet vydanych listkov (ocakava sa jeden)
celkova cena vydaneho listka vs konfig (TicketPrice)
pocet segmentov vydaneho listka vs konfig (IssuedTicketSegmentsSize)
TestCashPrint
CheckCashPrint:
priprava (loadnutie) templatov pre tlac
vydaj listka
printModule - priprava cisla listka, tlac listka, doplnenie reklam na listok (ak je povolene v AdvertisementEnabled)
TestCashStorno
CheckCashStorno:
vydaj listka
storno listka
zapis statistiky
TestDeviationPrices
CheckDeviationPrices:
vydaj listka s odchylkovou cenou
kontola poctu vydanych listkov (ma byt jeden)
kontrola ceny vs konfig (TicketPrice)