Unit tests f'DBMS - kif nagħmluh fi Sportmaster, l-ewwel parti

Ħej Habr!

Jisimni Maxim Ponomarenko u jien żviluppatur fi Sportmaster. Għandi 10 snin esperjenza fil-qasam tal-IT. Beda l-karriera tiegħu fl-ittestjar manwali, imbagħad qaleb għall-iżvilupp tad-database. Għal dawn l-aħħar 4 snin, nakkumula l-għarfien miksub fl-ittestjar u l-iżvilupp, kont qed nawtomatizza l-ittestjar fil-livell DBMS.

Ilni fit-tim Sportmaster għal ftit aktar minn sena u qed niżviluppa ttestjar awtomatizzat fuq wieħed mill-proġetti ewlenin. F'April, il-guys minn Sportmaster Lab u jien tkellimna f'konferenza fi Krasnodar, ir-rapport tiegħi kien imsejjaħ "Testijiet tal-unità f'DBMS," u issa nixtieq naqsamha miegħek. Se jkun hemm ħafna test, għalhekk iddeċidejt li naqsam ir-rapport f'żewġ postijiet. Fl-ewwel, se nitkellmu dwar l-awtotests u l-ittestjar b'mod ġenerali, u fit-tieni, ser nitkellem f'aktar dettall fuq is-sistema tagħna ta 'ttestjar ta' unità u r-riżultati tal-applikazzjoni tagħha.

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, l-ewwel parti

L-ewwel, teorija ftit boring. X'inhu l-ittestjar awtomatizzat? Dan huwa ttestjar li jsir bl-użu ta’ softwer, u fl-IT modern jintuża dejjem aktar fl-iżvilupp tas-softwer. Dan minħabba l-fatt li l-kumpaniji qed jikbru, is-sistemi tal-informazzjoni tagħhom qed jikbru u, għaldaqstant, l-ammont ta 'funzjonalità li jeħtieġ li jiġi ttestjat qed jikber. It-twettiq tal-ittestjar manwali qed isir aktar u aktar għali.

Ħdimt għal kumpanija kbira li r-rilaxxi tagħha joħorġu kull xahrejn. Fl-istess ħin, intefaq xahar sħiħ biex tużżana tester jiċċekkja manwalment il-funzjonalità. Grazzi għall-implimentazzjoni tal-awtomazzjoni minn tim żgħir ta 'żviluppaturi, stajna nnaqqsu l-ħin tal-ittestjar għal ġimgħatejn f'sena u nofs. Aħna mhux biss żidna l-veloċità tal-ittestjar, iżda wkoll tejbu l-kwalità tiegħu. Testijiet awtomatizzati huma mnedija regolarment u dejjem iwettqu l-kors kollu tal-kontrolli inklużi fihom, jiġifieri, neskludu l-fattur uman.

L-IT moderna hija kkaratterizzata mill-fatt li żviluppatur jista 'jkun meħtieġ mhux biss li jikteb il-kodiċi tal-prodott, iżda wkoll li jikteb testijiet tal-unità li jiċċekkjaw dan il-kodiċi.

Imma x'jiġri jekk is-sistema tiegħek hija bbażata primarjament fuq il-loġika tas-server? M'hemm l-ebda soluzzjoni universali jew l-aħjar prattiki fis-suq. Bħala regola, il-kumpaniji jsolvu din il-problema billi joħolqu s-sistema ta 'ttestjar tagħhom stess bil-miktub. Din hija s-sistema ta 'ttestjar awtomatizzata tagħna stess li nħolqot fuq il-proġett tagħna u se nitkellem dwarha fir-rapport tiegħi.

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, l-ewwel parti

Ittestjar tal-lealtà

L-ewwel, ejja nitkellmu dwar il-proġett fejn użajna sistema ta 'ttestjar awtomatizzata. Il-proġett tagħna huwa s-sistema ta’ lealtà Sportmaster (mill-mod, diġà ktibna dwarha fi din il-kariga).

Jekk il-kumpanija tiegħek hija kbira biżżejjed, allura s-sistema ta 'lealtà tiegħek se jkollha tliet proprjetajiet standard:

  • Is-sistema tiegħek se tkun mgħobbija ħafna
  • Is-sistema tiegħek se jkun fiha proċessi tal-kompjuters kumplessi
  • Is-sistema tiegħek se titjieb b'mod attiv.

Ejja mmorru fl-ordni... B'kollox, jekk nikkunsidraw il-marki Sportmaster kollha, allura għandna aktar minn 1000 ħanut fir-Russja, l-Ukrajna, iċ-Ċina, il-Każakstan u l-Belarus. F’dawn il-ħwienet isiru madwar 300 xiri kuljum. Jiġifieri, kull sekonda 000-3 kontrolli jidħlu fis-sistema tagħna. Naturalment, is-sistema ta 'lealtà tagħna hija mgħobbija ħafna. U peress li jintuża b'mod attiv, irridu nipprovdu l-ogħla standards tal-kwalità tiegħu, minħabba li kwalunkwe żball fis-softwer ifisser telf monetarju kbir, ta 'reputazzjoni u telf ieħor.

Fl-istess ħin, Sportmaster imexxi aktar minn mitt promozzjoni differenti. Hemm varjetà ta 'promozzjonijiet: hemm promozzjonijiet ta' prodotti, hemm dawk iddedikati għall-jum tal-ġimgħa, hemm dawk marbuta ma 'maħżen speċifiku, hemm promozzjonijiet għall-ammont tal-irċevuta, hemm għan-numru ta' oġġetti. B'mod ġenerali, mhux ħażin. Il-klijenti għandhom bonuses u kodiċijiet promozzjonali li jintużaw meta jagħmlu xiri. Dan kollu jwassal għall-fatt li l-kalkolu ta 'kwalunkwe ordni huwa kompitu mhux trivjali ħafna.

L-algoritmu li jimplimenta l-ipproċessar tal-ordnijiet huwa tassew terribbli u kkumplikat. U kwalunkwe bidla għal dan l-algoritmu hija pjuttost riskjuża. Deher li l-aktar bidliet apparentement insinifikanti jistgħu jwasslu għal effetti pjuttost imprevedibbli. Iżda huma preċiżament tali proċessi tal-kompjuters kumplessi, speċjalment dawk li jimplimentaw funzjonalità kritika, li huma l-aħjar kandidati għall-awtomazzjoni. Il-kontroll ta' għexieren ta' każijiet simili bl-idejn jieħu ħafna ħin. U peress li l-punt tad-dħul fil-proċess ma nbidilx, wara li ddeskrivieh darba, tista 'malajr toħloq testijiet awtomatiċi u tkun kunfidenti li l-funzjonalità taħdem.

Peress li s-sistema tagħna tintuża b'mod attiv, in-negozju jrid xi ħaġa ġdida mingħandek, jgħix maż-żminijiet u jkun orjentat lejn il-klijent. Fis-sistema ta’ lealtà tagħna, ir-rilaxxi joħorġu kull xahrejn. Dan ifisser li kull xahrejn irridu nwettqu rigressjoni sħiħa tas-sistema kollha. Fl-istess ħin, naturalment, bħal f'kull IT moderna, l-iżvilupp ma jmurx immedjatament mill-iżviluppatur għall-produzzjoni. Joriġina fiċ-ċirkwit tal-iżviluppatur, imbagħad jgħaddi suċċessivament mill-bank tat-test, ir-rilaxx, l-aċċettazzjoni, u mbagħad biss jispiċċa fil-produzzjoni. Bħala minimu, fuq iċ-ċirkwiti tat-test u tar-rilaxx, irridu nwettqu rigressjoni sħiħa tas-sistema kollha.

Il-proprjetajiet deskritti huma standard għal kważi kull sistema ta 'lealtà. Ejja nitkellmu dwar il-karatteristiċi tal-proġett tagħna.

Teknoloġikament, 90% tal-loġika tas-sistema ta 'lealtà tagħna hija bbażata fuq server u implimentata fuq Oracle. Hemm klijent espost f'Delphi, li jwettaq il-funzjoni ta 'amministratur awtomatizzat tal-post tax-xogħol. Hemm servizzi tal-web esposti għal applikazzjonijiet esterni (pereżempju websajt). Għalhekk, huwa loġiku ħafna li jekk niskjeraw sistema ta 'ttestjar awtomatizzata, nagħmluha fuq Oracle.

Is-sistema ta' lealtà fi Sportmaster ilha teżisti għal aktar minn 7 snin u nħolqot minn żviluppaturi waħedhom... In-numru medju ta' żviluppaturi fuq il-proġett tagħna matul dawn is-7 snin kien ta' 3-4 persuni. Iżda matul l-aħħar sena, it-tim tagħna kiber b'mod sinifikanti, u issa hemm 10 nies jaħdmu fuq il-proġett. Jiġifieri, nies jaslu għall-proġett li mhumiex familjari mal-kompiti, proċessi u arkitettura tipiċi. U hemm riskju akbar li se nitilfu l-iżbalji.

Il-proġett huwa kkaratterizzat min-nuqqas ta' testers dedikati bħala unitajiet tal-persunal. Hemm, ovvjament, l-ittestjar, iżda l-ittestjar isir mill-analisti, minbarra r-responsabbiltajiet ewlenin l-oħra tagħhom: il-komunikazzjoni mal-klijenti tan-negozju, l-utenti, l-iżvilupp tar-rekwiżiti tas-sistema, eċċ. eċċ... Minkejja l-fatt li l-ittestjar isir ta 'kwalità għolja ħafna (dan huwa speċjalment xieraq li wieħed isemmi, peress li xi wħud mill-analisti jistgħu jiġbdu l-għajn ta' dan ir-rapport), l-effettività tal-ispeċjalizzazzjoni u l-konċentrazzjoni fuq ħaġa waħda ma ġietx ikkanċellata .

Meta wieħed iqis dak kollu ta 'hawn fuq, biex tittejjeb il-kwalità tal-prodott ikkunsinnat u jitnaqqas il-ħin ta' żvilupp, l-idea li jiġu awtomatizzati l-ittestjar fuq proġett tidher loġika ħafna. U fi stadji differenti tal-eżistenza tas-sistema ta 'lealtà, żviluppaturi individwali għamlu sforzi biex ikopru l-kodiċi tagħhom bit-testijiet tal-unità. B'mod ġenerali kien proċess pjuttost magħqud, b'kulħadd juża l-arkitettura u l-metodi tiegħu stess. Ir-riżultati finali kienu komuni għat-testijiet tal-unità: it-testijiet ġew żviluppati, użati għal xi żmien, maħżuna f'ħażna ta 'fajls verżjoni, iżda f'xi punt waqfu jaħdmu u ġew minsija. L-ewwelnett, dan kien minħabba l-fatt li t-testijiet kienu marbuta aktar ma 'artist speċifiku, u mhux mal-proġett.

utPLSQL jiġi għas-salvataġġ

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, l-ewwel parti

Taf xi ħaġa dwar Stephen Feuerstein?

Dan huwa raġel intelliġenti li ddedika parti twila mill-karriera tiegħu biex jaħdem ma 'Oracle u PL/SQL, u kiteb numru pjuttost kbir ta' xogħlijiet fuq dan is-suġġett. Wieħed mill-kotba famużi tiegħu jismu: “Oracle PL/SQL. Għall-professjonisti." Kien Stephen li żviluppa s-soluzzjoni utPLSQL, jew, kif inhi, il-qafas tal-Ittestjar tal-Unità għall-Oracle PL/SQL. Is-soluzzjoni utPLSQL inħolqot fl-2016, iżda tkompli tinħadem fuqha attivament u jinħarġu verżjonijiet ġodda. Fiż-żmien tar-rappurtar, l-aħħar verżjoni tmur lura għall-24 ta’ Marzu 2019.
X'inhu. Dan huwa proġett separat ta' sors miftuħ. Tiżen ftit megabytes, inklużi eżempji u dokumentazzjoni. Fiżikament, hija skema separata fid-database ORACLE b'sett ta' pakketti u tabelli għall-organizzazzjoni tal-ittestjar tal-unità. L-installazzjoni tieħu ftit sekondi. Karatteristika distintiva ta 'utPLSQL hija l-faċilità ta' użu tiegħu.
Globalment, utPLSQL huwa mekkaniżmu għat-tmexxija ta 'testijiet ta' unità, fejn test ta 'unità huwa mifhum bħala proċeduri ta' lott Oracle ordinarji, li l-organizzazzjoni tagħhom issegwi ċerti regoli. Minbarra t-tnedija, utPLSQL jaħżen log tal-ġirjiet kollha tat-test tiegħek, u għandu wkoll sistema ta' rappurtar interna.

Ejja nħarsu lejn eżempju ta' kif jidher il-kodiċi tat-test unitarju, implimentat bl-użu ta' din it-teknika.

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, l-ewwel parti

Allura, l-iskrin juri l-kodiċi għal speċifikazzjoni ta 'pakkett tipiku b'testijiet ta' unità. X'inhuma r-rekwiżiti obbligatorji? Il-pakkett għandu jkun prefiss b'"utp_". Il-proċeduri kollha bit-testijiet għandu jkollhom eżattament l-istess prefiss. Il-pakkett għandu jkun fih żewġ proċeduri standard: “utp_setup” u “utp_teardown”. L-ewwel proċedura tissejjaħ billi terġa 'tibda kull test ta' unità, it-tieni - wara t-tnedija.

“utp_setup”, bħala regola, tipprepara s-sistema tagħna biex tmexxi test unitarju, pereżempju, toħloq dejta tat-test. "utp_teardown" - għall-kuntrarju, kollox jerġa 'lura għas-settings oriġinali u jerġa' jwaqqaf ir-riżultati tat-tnedija.

Hawn hu eżempju tat-test unitarju l-aktar sempliċi li jiċċekkja n-normalizzazzjoni tan-numru tat-telefon tal-klijent imdaħħal għall-formola standard għas-sistema ta 'lealtà tagħna. M'hemm l-ebda standards obbligatorji dwar kif tikteb proċeduri bit-testijiet tal-unità. Bħala regola, issir sejħa għal metodu tas-sistema taħt test, u r-riżultat ritornat b'dan il-metodu jitqabbel ma 'dak ta' referenza. Huwa importanti li t-tqabbil tar-riżultat ta' referenza u dak miksub iseħħ permezz ta' metodi standard utPLSQL.

Test unitarju jista' jkollu kwalunkwe numru ta' kontrolli. Kif jidher mill-eżempju, nagħmlu erba 'sejħiet konsekuttivi għall-metodu ttestjat biex innormalizzaw in-numru tat-telefon u nevalwaw ir-riżultat wara kull sejħa. Meta tiżviluppa test unitarju, trid tqis li hemm kontrolli li ma jaffettwawx is-sistema bl-ebda mod, u wara xi ftit għandek bżonn terġa 'lura għall-istat oriġinali tas-sistema.
Pereżempju, fit-test tal-unità ppreżentat aħna sempliċement ifformattjaw in-numru tat-telefon tad-dħul, li ma jaffettwax is-sistema ta 'lealtà bl-ebda mod.

U jekk niktbu testijiet ta 'unità billi tuża l-metodu tal-ħolqien ta' klijent ġdid, imbagħad wara kull test jinħoloq klijent ġdid fis-sistema, li jista 'jaffettwa t-tnedija sussegwenti tat-test.

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, l-ewwel parti

Dan huwa kif it-testijiet tal-unità jitmexxew. Hemm żewġ għażliet ta 'tnedija possibbli: it-tmexxija tat-testijiet tal-unità kollha minn pakkett speċifiku jew it-tmexxija ta' test tal-unità speċifiku f'pakkett speċifiku.

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, l-ewwel parti

Hekk jidher eżempju ta' sistema ta' rappurtar intern. Ibbażat fuq ir-riżultati tat-test tal-unità, utPLSQL jibni rapport żgħir. Fiha naraw ir-riżultat għal kull kontroll speċifiku u r-riżultat ġenerali tat-test unitarju.

6 regoli ta 'awtotests

Qabel ma bdejna noħolqu sistema ġdida għall-ittestjar awtomatizzat tas-sistema ta 'lealtà, flimkien mal-ġestjoni, iddeterminajna l-prinċipji li t-testijiet awtomatizzati futuri tagħna għandhom jikkonformaw magħhom.

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, l-ewwel parti

  1. L-awtotestijiet għandhom ikunu effettivi u għandhom ikunu utli. Għandna żviluppaturi mill-isbaħ, li żgur jeħtieġ li jissemmew, għaliex xi wħud minnhom probabbilment se jaraw dan ir-rapport, u jiktbu kodiċi mill-isbaħ. Iżda anke l-kodiċi meraviljuż tagħhom mhuwiex perfett u għandu, għandu, u se jkompli jkun fih żbalji. Autotests huma meħtieġa biex jinstabu dawn l-iżbalji. Jekk dan mhux il-każ, allura jew qed niktbu autotests ħżiena, jew wasalna f'żona mejta li, fil-prinċipju, mhix qed tiġi żviluppata. Fiż-żewġ każijiet, qed nagħmlu xi ħaġa ħażina, u l-approċċ tagħna sempliċement ma jagħmilx sens.
  2. Autotests għandhom jintużaw. Ma jagħmilx sens li tqatta 'ħafna ħin u sforz biex tikteb prodott tas-softwer, poġġih f'repożitorju u tinsa. It-testijiet għandhom isiru, u jitħaddmu regolarment kemm jista 'jkun.
  3. Autotests għandhom jaħdmu b'mod stabbli. Irrispettivament mill-ħin tal-ġurnata, stand tal-varar u settings oħra tas-sistema, it-test runs għandhom iwasslu għall-istess riżultat. Bħala regola, dan huwa żgurat mill-fatt li l-awtotests jaħdmu b'dejta tat-test speċjali b'settings fiss tas-sistema.
  4. Autotests għandhom jaħdmu b'veloċità aċċettabbli għall-proġett tiegħek. Dan iż-żmien huwa determinat individwalment għal kull sistema. Xi nies jistgħu jaffordjaw li jaħdmu l-ġurnata kollha, filwaqt li oħrajn isibuha kritika li jagħmlu dan f'sekondi. Ngħidlek ftit aktar tard liema standards ta 'veloċità ksibna fil-proġett tagħna.
  5. L-iżvilupp tal-awtotest għandu jkun flessibbli. Mhux rakkomandabbli li tirrifjuta li tittestja kwalunkwe funzjonalità sempliċement għax ma għamilniex qabel jew għal xi raġuni oħra. utPLSQL ma jimponi l-ebda restrizzjoni fuq l-iżvilupp, u Oracle, fil-prinċipju, jippermettilek li timplimenta varjetà ta 'affarijiet. Ħafna mill-problemi għandhom soluzzjoni, hija biss kwistjoni ta 'ħin u sforz.
  6. Skjerament. Għandna diversi stands fejn irridu nwettqu t-testijiet. F'kull stand, dump tad-data jista 'jiġi aġġornat fi kwalunkwe ħin. Huwa meħtieġ li twettaq proġett b'testijiet awtomatiċi b'tali mod li tista 'twettaq l-installazzjoni sħiħa jew parzjali tiegħu mingħajr tbatija.

U fit-tieni post fi ftit jiem ngħidilkom x’għamilna u x’riżultati ksibna.

Sors: www.habr.com

Żid kumment