Unit bvunzo muDBMS - maitiro atinozviita muSportmaster, chikamu chekutanga

Hei Habr!

Zita rangu ndinonzi Maxim Ponomarenko uye ndiri developer ku Sportmaster. Ndine makore gumi eruzivo mumunda weIT. Akatanga basa rake mukuyedza manyorero, ndokuchinjira kukusimudzira dhatabhesi. Kwemakore ekupedzisira e10, kuunganidza ruzivo rwakawanikwa mukuedza nekusimudzira, ndanga ndichiita automating test padanho reDBMS.

Ndanga ndiri muchikwata cheSportmaster kwerinopfuura gore uye ndiri kugadzira otomatiki kuyedzwa pane chimwe chezvirongwa zvikuru. MunaEpril, vakomana veSportmaster Lab neni takataura pamusangano muKrasnodar, mushumo wangu wakanzi "Unit tests muDBMS," uye zvino ndinoda kugoverana newe. Pachave neakawanda mameseji, saka ndakafunga kupatsanura mushumo muzvikamu zviviri. Mune yekutanga, isu tichataura nezve autotests uye kuyedza zvakajairika, uye yechipiri, ini ndichagara mune zvakadzama pane yedu unit test system uye mhedzisiro yekushandiswa kwayo.

Unit bvunzo muDBMS - maitiro atinozviita muSportmaster, chikamu chekutanga

Kutanga, dzidziso shoma inofinha. Chii chinonzi automated test? Uku kuyedzwa kunoitwa uchishandisa software, uye mune yazvino IT iri kuwedzera kushandiswa mukuvandudza software. Izvi zvinokonzerwa nekuti makambani ari kukura, masisitimu avo eruzivo ari kukura uye, nekudaro, huwandu hwekuita hunoda kuongororwa huri kukura. Kuitisa bvunzo yemanyorero kuri kuramba kuchidhura.

Ndakashandira imwe kambani hombe yaibuda mwedzi miviri yoga yoga. Panguva imwecheteyo, mwedzi wese wakapedzwa pakuita gumi nevaviri vanoedza nemaoko kutarisa kushanda. Nekuda kwekushandiswa kweotomatiki nechikwata chidiki chevagadziri, takakwanisa kuderedza nguva yekuyedza kusvika kumasvondo maviri pagore nehafu. Isu hatina kungowedzera kumhanya kwekuyedzwa, asi zvakare takavandudza kunaka kwayo. Otomatiki bvunzo dzinotangwa nguva nenguva uye dzinogara dzichiita iyo yese kosi yecheki inosanganisirwa mavari, kureva kuti, isu tinosiya chinhu chemunhu.

Yemazuva ano IT inoratidzirwa nenyaya yekuti mugadziri anogona kudikanwa kwete kungonyora kodhi yechigadzirwa, asiwo kunyora mayuniti bvunzo anotarisa iyi kodhi.

Asi ko kana system yako yakavakirwa zvakanyanya pane server logic? Iko hakuna mhinduro yepasirese kana maitiro akanakisa pamusika. Sezvo mutemo, makambani anogadzirisa dambudziko iri nekugadzira yavo yekuzvinyora-yavo yekuongorora system. Iyi ndiyo yedu yekuzvinyora yega yega yekuongorora system yakagadzirwa pane yedu purojekiti uye ini ndichataura nezvayo mumushumo wangu.

Unit bvunzo muDBMS - maitiro atinozviita muSportmaster, chikamu chekutanga

Kuedza kuvimbika

Kutanga, ngatitaure nezve purojekiti yatakaisa otomatiki yekuyedza system. Yedu chirongwa ndeye Sportmaster kuvimbika system (nenzira, isu takatonyora nezvayo mukati iyi post).

Kana kambani yako yakakura zvakakwana, saka yako yekuvimbika system ichava neatatu akajairika zvivakwa:

  • Sitimu yako inozoremerwa zvakanyanya
  • Yako sisitimu ichange iine yakaoma computing maitiro
  • Yako sisitimu inozoitwa kuvandudzwa.

Ngatiendei takarongeka ... Pakazara, kana tikafunga nezvese Sportmaster brands, saka tine zvitoro zvinopfuura 1000 muRussia, Ukraine, China, Kazakhstan neBelarus. Kutenga kungangoita mazana matatu ezviuru kunoitwa muzvitoro izvi zuva rega rega. Ndiko kuti, yega yega 300-000 cheki inopinda muhurongwa hwedu. Nomuzvarirwo, hurongwa hwedu hwekuvimbika hwakaremerwa zvakanyanya. Uye sezvo iri kushingaira kushandiswa, tinofanira kupa yepamusoro miitiro yehutano hwayo, nokuti chero kukanganisa mu software kunoreva mari yakawanda, mukurumbira uye kumwe kurasikirwa.

Panguva imwecheteyo, Sportmaster inomhanyisa anopfuura zana akasiyana ekusimudzira. Kune zvakasiyana-siyana zvekusimudzira: kune zvigadzirwa zvekusimudzira, kune izvo zvakatsaurirwa kuzuva revhiki, kune izvo zvakasungirirwa kune chaiyo chitoro, kune kukwidziridzwa kwehuwandu hwekugamuchira, kune huwandu hwezvinhu. Kazhinji, kwete zvakaipa. Vatengi vane mabhonasi uye macode ekusimudzira anoshandiswa pakutenga. Zvese izvi zvinotungamira kune chokwadi chekuti kuverenga chero kurongeka ibasa risiri diki.

Iyo algorithm inoshandisa odha yekugadzirisa inotyisa uye yakaoma. Uye chero shanduko kune iyi algorithm ine njodzi. Zvaiita sekuti shanduko dzinoita sedzisina kukosha dzaigona kukonzeresa mhedzisiro isingatarisike. Asi ndiwo chaiwo maitiro akaomarara ekombuta, kunyanya ayo anoita basa rakakosha, ndiwo akanakisa kukwikwidza otomatiki. Kuongorora akawanda emakesi akafanana nemaoko kunodya nguva. Uye sezvo nzvimbo yekupinda muchirongwa ichi isina kuchinjika, waitsanangura kamwe chete, unogona kukurumidza kugadzira otomatiki bvunzo uye uve nechivimbo chekuti kushanda kuchashanda.

Sezvo sisitimu yedu ichinyatso shandiswa, bhizinesi rinoda chimwe chinhu chitsva kubva kwauri, rarama nenguva uye uve nevatengi. Muhurongwa hwedu hwekuvimbika, zvinoburitswa zvinobuda mwedzi miviri yega yega. Izvi zvinoreva kuti mwedzi miviri yega yega tinoda kuita kudzoreredza kwakazara kwehurongwa hwese. Panguva imwecheteyo, zvakasikwa, senge mune chero yemazuva ano IT, budiriro haibve kubva kumugadziri kuenda kukugadzira. Iyo inotangira padunhu remugadziri, yozotevedzana ichipfuura nepabhenji rekuyedza, kuburitswa, kugamuchirwa, uye chete ipapo inoguma mukugadzirwa. Zvirinani, pabvunzo uye kuburitsa maseketi, isu tinofanirwa kuita kudzoreredza kwakazara kweiyo system yese.

Izvo zvakatsanangurwa zvivakwa zvinojairwa kunenge chero nzira yekuvimbika. Ngatitaure pamusoro pezvinhu zvepurojekiti yedu.

Tekinoroji, 90% yepfungwa yekuvimbika sisitimu yedu ndeye server-yakavakirwa uye inoshandiswa paOracle. Pane mutengi akafumurwa muDelphi, anoita basa remugadziri wenzvimbo yebasa. Kune akafumurwa webhu masevhisi ekunze maapplication (semuenzaniso webhusaiti). Naizvozvo, zvine musoro kuti kana tikaendesa otomatiki yekuyedza system, tinozviita paOracle.

Nzira yekuvimbika mu Sportmaster yave iripo kwemakore anopfuura 7 uye yakasikwa nevagadziri vasina kuroorwa ... Ivhareji yenhamba yevagadziri vepurojekiti yedu mukati memakore manomwe aya yaiva 7-3 vanhu. Asi mugore rapfuura, boka redu rakakura zvakanyanya, uye ikozvino kune vanhu gumi vari kushanda pachirongwa ichi. Ndiko kuti, vanhu vanouya kupurojekiti vasina kujairana neakajairwa mabasa, maitiro, uye zvivakwa. Uye kune njodzi yakawedzera yekuti tichapotsa kukanganisa.

Iyo purojekiti inoratidzwa nekushaikwa kwevayedza vakazvitsaurira sezvikamu zvevashandi. Iko kune, hongu, kuyedza, asi kuyedzwa kunoitwa nevanoongorora, kuwedzera kune mamwe mabasa avo makuru: kutaurirana nevatengi vebhizinesi, vashandisi, kugadzira zvinodiwa system, nezvimwe. etc... Pasinei nekuti kuyedza kunoitwa yakanyanya kunaka (izvi zvakanyanya kufanirwa kutaura, sezvo vamwe vevaongorori vangabata ziso reiyi rondedzero), kushanda kwehunyanzvi uye kuisa pfungwa pane chimwe chinhu hakuna kubviswa. .

Tichifunga nezvese zviri pamusoro, kuvandudza kunaka kwechigadzirwa chakaunzwa uye kuderedza nguva yekusimudzira, iyo pfungwa yekuongorora otomatiki pane purojekiti inoita seine musoro. Uye pamatanho akasiyana ekuvapo kweakavimbika system, vagadziri vega vakaedza kuvhara kodhi yavo neyuniti bvunzo. Pakazara yaive nzira isina kubatana, nemunhu wese aishandisa zvivakwa zvake uye nzira. Mhedzisiro yekupedzisira yaive yakajairika kune bvunzo dzeyuniti: miedzo yakagadzirwa, yakashandiswa kwenguva yakati, yakachengetwa mushanduro yefaira rekuchengetedza, asi pane imwe nguva vakamira kumhanya uye vakakanganwa. Chokutanga pane zvose, izvi zvakakonzerwa nekuti miedzo yakasungirirwa zvakanyanya kune mumwe muiti, uye kwete kune purojekiti.

utPLSQL inouya kuzonunura

Unit bvunzo muDBMS - maitiro atinozviita muSportmaster, chikamu chekutanga

Pane chaunoziva here nezvaStephen Feuerstein?

Uyu murume akangwara akapa chikamu chakareba chebasa rake kushanda neOracle uye PL/SQL, uye akanyora nhamba huru yemabasa pane iyi nyaya. Rimwe remabhuku ake ane mukurumbira rinonzi: β€œOracle PL/SQL. Zvema professionals." Aive Stefano akagadzira iyo utPLSQL mhinduro, kana, sezvainomirira, Unit Testing chimiro cheOracle PL/SQL. Iyo utPLSQL mhinduro yakagadzirwa muna 2016, asi inoramba ichishanda nesimba uye shanduro itsva dzinoburitswa. Panguva yekuzivisa, iyo yazvino vhezheni inodzokera munaKurume 24, 2019.
Chii ichochi. Iyi ipurojekiti yakazaruka yakaparadzana. Inoyera akati wandei megabytes, kusanganisira mienzaniso uye zvinyorwa. Panyama, iri schema yakaparadzana muORACLE dhatabhesi ine seti yemapakeji uye matafura ekuronga yeyuniti kuyedzwa. Kuiswa kunotora masekonzi mashoma. Chinhu chinosiyanisa che utPLSQL ndiko kusununguka kwayo kwekushandisa.
Pasi rose, utPLSQL inzira yekumhanyisa bvunzo dzeyuniti, uko bvunzo yeyuniti inonzwisiswa seyakajairwa Oracle batch maitiro, sangano rinotevera mimwe mitemo. Pamusoro pekutanga, utPLSQL inochengetedza gidhi yezvese bvunzo yako inomhanya, uye zvakare ine yemukati yekushuma system.

Ngatitarisei muenzaniso wekuti iyo unit test code inoita sei, inoshandiswa uchishandisa nzira iyi.

Unit bvunzo muDBMS - maitiro atinozviita muSportmaster, chikamu chekutanga

Saka, iyo skrini inoratidza iyo kodhi yeyakajairwa pasuru kutsanangurwa ine mauniti bvunzo. Ndezvipi zvinodiwa zvinosungirwa? Iyo packet inofanira kunge yakanyorwa ne "utp_". Maitirwo ese ane bvunzo anofanirwa kunge aine chivakashure chakafanana. Iyo pasuru inofanira kunge iine maviri akajairwa maitiro: "utp_setup" uye "utp_teardown". Maitiro ekutanga anodanwa nekutangazve yega yega bvunzo bvunzo, yechipiri - mushure mekutangwa.

"utp_setup", sekutonga, inogadzirira sisitimu yedu kuti iite bvunzo yeyuniti, semuenzaniso, kugadzira data rekuyedza. "utp_teardown" - pane zvinopesana, zvese zvinodzokera kune yekutanga marongero uye kugadzirisa zvakare mibairo yekutanga.

Heino muenzaniso weiyo yakapfava yeyuniti bvunzo iyo inoongorora iyo yakajairwa yeakapinda nhamba yefoni yemutengi kune yakajairwa fomu yekuvimbika system yedu. Iko hakuna mazinga anosungirwa ekunyora maitiro nemayuniti bvunzo. Sezvo mutemo, kufona kunoitwa kune nzira yehurongwa iri pasi pekuyedzwa, uye mhedzisiro inodzoserwa neiyi nzira inofananidzwa neyereferenzi. Izvo zvakakosha kuti kuenzaniswa kweiyo referensi mhedzisiro uye yakawanikwa inoitika kuburikidza neyakajairwa utPLSQL nzira.

Chiyero cheyuniti chinogona kuva chero nhamba yecheki. Sezvinoonekwa kubva mumuenzaniso, isu tinofona mana akateedzana kune yakaedzwa nzira yekumisikidza nhamba yefoni uye kuongorora mhedzisiro mushure mekufona kwega kwega. Paunenge uchigadzira bvunzo yeyuniti, unofanirwa kufunga kuti kune macheki asingakanganise sisitimu nenzira ipi neipi, uye mushure meimwe iwe unofanirwa kudzosera kumashure kune yekutanga mamiriro ehurongwa.
Semuyenzaniso, muyedzo yeyuniti yakaratidzwa tinongofometa iyo nhamba yefoni yekupinza, iyo isingakanganise kuvimbika system nenzira ipi zvayo.

Uye kana tikanyora bvunzo dzeyuniti tichishandisa nzira yekugadzira mutengi mutsva, zvino mushure mebvunzo yega yega mutengi mutsva anogadzirwa muhurongwa, izvo zvinogona kukanganisa kunotevera kwebvunzo.

Unit bvunzo muDBMS - maitiro atinozviita muSportmaster, chikamu chekutanga

Aya ndiwo mafambisirwo anoita bvunzo dzeyuniti. Pane mbiri dzinogoneka sarudzo dzekuvhura: kumhanyisa ese mayuniti bvunzo kubva pasuru chaiyo kana kuita yakatarwa unit bvunzo mune chaiyo package.

Unit bvunzo muDBMS - maitiro atinozviita muSportmaster, chikamu chekutanga

Izvi ndizvo zvakaita muenzaniso weiyo yemukati yekushuma system inotaridzika. Zvichienderana nemhedzisiro yebvunzo yeyuniti, utPLSQL inovaka chirevo chidiki. Mariri tinoona mhedzisiro yecheki yega yega uye mhedzisiro yeyuniti bvunzo.

6 mitemo ye autotests

Tisati tatanga kugadzira hurongwa hutsva hwekuzviyedza otomatiki yeruvimbiko, pamwe chete nemaneja, takasarudza misimboti inofanirwa kutevedzwa nemiedzo yedu yeramangwana.

Unit bvunzo muDBMS - maitiro atinozviita muSportmaster, chikamu chekutanga

  1. Autotests inofanirwa kushanda uye inofanirwa kubatsira. Tine vanogadzira vanoshamisa, avo vanoda chaizvo kutaurwa, nekuti vamwe vavo vangangoona iyi rondedzero, uye vanonyora inoshamisa kodhi. Asi kunyangwe kodhi yavo inoshamisa haina kukwana uye ine, ine, uye icharamba iine zvikanganiso. Autotests inodiwa kuti uwane zvikanganiso izvi. Kana izvi zvisiri izvo, saka isu tiri kunyora zvakaipa autotests, kana tasvika kune yakafa nzvimbo iyo, mukutanga, isiri kuvandudzwa. Muzviitiko zvose zviri zviviri, tiri kuita chimwe chinhu chakaipa, uye zvatinoita hazvina musoro.
  2. Autotests inofanira kushandiswa. Izvo hazvina musoro kushandisa nguva yakawanda nesimba pakunyora chigadzirwa chesoftware, chiise mudura uye ukanganwe. Miedzo inofanira kuitwa, uye kumhanya nguva dzose sezvinobvira.
  3. Autotests inofanira kushanda zvakasimba. Kunyangwe inguva yezuva, tanga kumira uye mamwe masisitimu masisitimu, bvunzo inomhanya inofanirwa kutungamira kune imwechete mhedzisiro. Semutemo, izvi zvinosimbiswa nenyaya yekuti autotests inoshanda neakakosha data data ine yakagadziriswa sisitimu marongero.
  4. Autotests inofanirwa kushanda nekumhanya kunogamuchirwa kuprojekiti yako. Iyi nguva inotarirwa yega yega yega yega system. Vamwe vanhu vanogona kukwanisa kushanda zuva rose, asi vamwe vanoona zvakakosha kuzviita mumasekonzi. Ndichakuudza zvishoma gare gare kuti ndeapi masipidhi zviyero zvatakawana muprojekiti yedu.
  5. Autotest budiriro inofanirwa kuchinjika. Hazvikurudzirwe kuramba kuyedza chero basa nekuda kwekuti isu hatisati tazviita kare kana chimwe chikonzero. utPLSQL haiisi chero zvirambidzo pakusimudzira, uye Oracle, musimboti, inobvumidza iwe kuita zvinhu zvakasiyana. Matambudziko mazhinji ane mhinduro, ingori nyaya yenguva nesimba.
  6. Deployability. Tine nzvimbo dzakati wandei dzatinoda kumhanya bvunzo. Panzvimbo yega yega, dump yedata inogona kuvandudzwa chero nguva. Izvo zvinodikanwa kuita purojekiti ine otomatiki bvunzo nenzira yekuti iwe unokwanisa kuita isingarwadze kuita kwayo kuzere kana kusarudzika kuisirwa.

Uye mune yechipiri positi mumazuva mashoma ini ndichakuudza zvatakaita uye kuti ndezvipi zvatakawana.

Source: www.habr.com

Voeg