Mayeso a unit mu DBMS - momwe timachitira mu Sportmaster, gawo lachiwiri

Gawo loyamba - apa.

Mayeso a unit mu DBMS - momwe timachitira mu Sportmaster, gawo lachiwiri

Tangolingalirani mkhalidwewo. Mukuyang'anizana ndi ntchito yopanga magwiridwe antchito atsopano. Muli ndi zotukuka zochokera kwa omwe adalipo kale. Ngati tikuganiza kuti mulibe udindo wochita zinthu, kodi mungatani?

Nthawi zambiri, zochitika zakale zonse zimayiwalika ndipo zonse zimayambiranso. Palibe amene amakonda kukumba mu code ya wina, koma ngati muli ndi nthawi, bwanji osayamba kupanga dongosolo lanu? Iyi ndi njira yodziwika bwino, ndipo ndiyolondola kwambiri. Koma mu polojekiti yathu tinalakwitsa. Tidakhazikitsa njira yoyesera yamtsogolo pazoyeserera zamayunitsi pa utPLSQL kuchokera kwa omwe adatsogolera, kenako tinayamba kugwira ntchito mayendedwe angapo ofanana.

  1. Kubwezeretsanso mayeso akale a unit. Kuchira kumatanthauza kusintha mayeso kuti akhale momwe alili achitetezo ndikusintha mayeso kuti agwirizane ndi miyezo ya utPLSQL.
  2. Kuthetsa vuto ndikumvetsetsa zomwe kwenikweni, njira ndi njira zomwe zimaphimbidwa ndi autotests. Muyenera kusunga izi m'mutu mwanu, kapena kuganiza motengera ma code autotest. Choncho, tinaganiza zopanga catalog. Tidapereka khodi yapadera ya mnemonic pa autotest iliyonse, tidapanga malongosoledwe ndi zokonda zojambulidwa (mwachitsanzo, zomwe ziyenera kukhazikitsidwa, kapena zomwe ziyenera kuchitika ngati kuyesa sikulephera). Kwenikweni, tidadzaza metadata yokhudza ma autotest ndikuyika metadatayo m'magome wamba a utPLSQL.
  3. Kufotokozera njira yowonjezera, i.e. kusankha kwa magwiridwe antchito omwe akuyenera kutsimikiziridwa ndi mayeso ochita kupanga. Tinasankha kulabadira zinthu zitatu: kukonza dongosolo latsopano, zochitika zopanga, ndi njira zazikulu zamakina. Choncho, tikukula mofanana ndi kumasulidwa, kuonetsetsa kuti ali ndi khalidwe lapamwamba, panthawi imodzimodziyo kukulitsa kuchuluka kwa kusinthika ndikuwonetsetsa kudalirika kwa dongosolo m'malo ovuta. Cholepheretsa choyamba chotere chinali njira yogawa kuchotsera ndi mabonasi pa cheke.
  4. Mwachilengedwe, tinayamba kupanga ma autotes atsopano. Imodzi mwa ntchito zotulutsidwa koyamba inali kuwunika momwe zitsanzo zofotokozedweratu za dongosolo la kukhulupirika likuyendera. Pulojekiti yathu ili ndi mafunso okhazikika a SQL omwe amasankha makasitomala kutengera momwe zinthu ziliri. Mwachitsanzo, pezani mndandanda wamakasitomala onse omwe kugula kwawo komaliza kunali mumzinda winawake, kapena mndandanda wamakasitomala omwe kuchuluka kwawo kogula kumaposa mtengo wina wake. Pokhala ndi ma autotesti olembedwa, tidayang'ana zitsanzo zomwe zidafotokozedweratu, zolembedwa za benchmark performance, komanso tinali ndi kuyezetsa katundu.
  5. Kugwira ntchito ndi autotests kuyenera kukhala kosavuta. Zochita ziwiri zodziwika kwambiri ndikuyesa ma autotest ndikupanga data yoyeserera. Umu ndi momwe ma module awiri othandizira adawonekera m'dongosolo lathu: gawo loyambitsa ndi gawo lopanga data.

    Choyambitsa chimayimiridwa ngati njira imodzi yapadziko lonse lapansi yokhala ndi gawo limodzi lolowetsa mawu. Monga parameter, mutha kudutsa code ya autotest mnemonic, dzina la phukusi, dzina loyesa, autotest setting, kapena mawu osakira. Njirayi imasankha ndikuyendetsa ma autotest onse omwe amakwaniritsa zomwe zili.

    Dongosolo lopanga deta limaperekedwa ngati phukusi lomwe pa chinthu chilichonse cha dongosolo lomwe likuyesedwa (tebulo mu database), njira yapadera idapangidwa yomwe imayika deta pamenepo. Mwanjira iyi, zikhalidwe zosasinthika zimadzazidwa momwe zingathere, zomwe zimatsimikizira kupangidwa kwa zinthu zenizeni pakudina chala. Ndipo kuti zitheke kugwiritsa ntchito, ma templates a data yopangidwa adapangidwa. Mwachitsanzo, pangani kasitomala wazaka zina ndi foni yoyesera komanso kugula komaliza.

  6. Ma Autotest ayenera kuyamba ndikuyenda munthawi yomwe ili yovomerezeka pamakina anu. Choncho, kukhazikitsidwa kwa tsiku ndi tsiku kunakonzedwa, kutengera zotsatira zomwe lipoti lazotsatira limapangidwa ndikutumizidwa ku gulu lonse lachitukuko kudzera pamakalata amakampani. Pambuyo pobwezeretsa ma autotes akale ndikupanga zatsopano, nthawi yonse yogwira ntchito inali mphindi 30. Kuchita kumeneku kunali koyenera kwa aliyense, popeza kutseguliraku kunachitika kunja kwa maola ogwira ntchito.

    Koma tinayenera kuyesetsa kuwongolera liwiro la ntchitoyo. Dongosolo lokhulupirika popanga limasinthidwa usiku. Monga gawo limodzi la zotulutsidwa, tinafunikira kusintha mwachangu usiku. Kudikirira kwa theka la ola zotsatira za autotests pa 5 koloko m'mawa sikunapangitse munthu yemwe ali ndi udindo womasulidwa kukhala wosangalala (moni wachangu kwa Alexey Vasyukov!), Ndipo m'mawa wotsatira mawu ambiri okoma mtima adanenedwa ku dongosolo lathu. Koma zotsatira zake, muyezo wa mphindi XNUMX wogwirira ntchito unakhazikitsidwa.

    Kuti tifulumizitse ntchito, tidagwiritsa ntchito njira ziwiri: ma autotests adayamba kuyenda mumizere itatu yofananira, mwamwayi izi ndizabwino kwambiri chifukwa cha kapangidwe kake ka kukhulupirika. Ndipo tidasiya njira yomwe autotest simadzipangira yokha data yoyeserera, koma imayesa kupeza china chake choyenera mudongosolo. Pambuyo pakusintha, nthawi yonse yogwira ntchito idachepetsedwa mpaka mphindi 3-4.

  7. Pulojekiti yokhala ndi zoyeserera zokha iyenera kutumizidwa kumalo osiyanasiyana. Kumayambiriro kwa ulendo wathu, tinali kuyesa kulemba mafayilo athu a batch, koma zinaonekeratu kuti kudzilemba nokha kunali koopsa kwambiri, ndipo tinatembenukira ku zothetsera mafakitale. Chifukwa chakuti pulojekitiyi ili ndi ma code ambiri achindunji (choyamba, timasungira code autotest) ndi deta yochepa kwambiri (deta yaikulu ndi metadata yokhudza autotests), kukhazikitsidwa mu polojekiti ya Liquibase kunakhala kosavuta kwambiri.

    Ndi laibulale yotseguka, yodziyimira pawokha pa database yotsatirira, kuyang'anira, ndi kukakamiza kusintha kwa schema ya database. Imayendetsedwa kudzera pamzere wamalamulo kapena machitidwe monga Apache Maven. Mfundo yogwiritsira ntchito Liquibase ndiyosavuta. Tili ndi pulojekiti yokonzedwa mwanjira inayake, yomwe imakhala ndi zosintha kapena zolemba zomwe zimayenera kutumizidwa ku seva yomwe mukufuna, ndikuwongolera mafayilo omwe amatsimikizira kuti ndi zotani komanso ndi magawo otani omwe kusinthaku kumayenera kukhazikitsidwa.

    Pa mlingo wa DBMS, tebulo lapadera limapangidwa momwe Liquibase imasungira chipika chopukutira. Kusintha kulikonse kumakhala ndi hashi yowerengeka, yomwe imafananizidwa nthawi iliyonse pakati pa polojekiti ndi boma mu database. Chifukwa cha Liquibase, titha kusintha mosavuta makina athu kudera lililonse. Ma Autotest tsopano akuyambika pamayesero oyesa ndikutulutsa, komanso pamiyendo (mabwalo aumwini).

Mayeso a unit mu DBMS - momwe timachitira mu Sportmaster, gawo lachiwiri

Chifukwa chake, tiyeni tikambirane zotsatira zogwiritsa ntchito makina athu oyesera mayunitsi.

  1. Inde, choyamba, tikukhulupirira kuti tayamba kupanga mapulogalamu abwino. Ma Autotest amayambitsidwa tsiku lililonse ndipo zolakwika zambiri zimapezeka paliponse. Kuphatikiza apo, zina mwa zolakwikazi zimangokhudzana ndi magwiridwe antchito omwe timafuna kusintha. Pali kukayikira kwakukulu kuti zolakwika izi zinapezedwa ndi kuyesa kwamanja.
  2. Gululi tsopano lili ndi chidaliro kuti ntchito yeniyeni ikugwira ntchito molondola ... Choyamba, izi zimakhudza njira zathu zovuta. Mwachitsanzo, m'miyezi isanu ndi umodzi yapitayi sitinakhale ndi vuto lililonse ndi kugawa kuchotsera ndi mabonasi pa risiti, ngakhale kusintha kumasulidwa, ngakhale mu nthawi yapita zolakwika zinachitika ndi pafupipafupi.
  3. Tinatha kuchepetsa kuchuluka kwa kuyesa kobwerezabwereza. Chifukwa chakuti ma autotest amalembedwa kuti agwire ntchito zatsopano, ofufuza ndi oyesa anthawi yochepa amalandira ma code apamwamba kwambiri, chifukwa. yafufuzidwa kale.
  4. Zina mwazotukuka pakuyesa makina zimagwiritsidwa ntchito ndi opanga. Mwachitsanzo, data yoyeserera pamiyendo imapangidwa pogwiritsa ntchito gawo lopanga zinthu.
  5. Ndikofunikira kuti tapanga "kuvomereza" kwa makina oyesera okhawo pa mbali ya omanga. Pali kumvetsetsa kuti izi ndizofunikira komanso zothandiza. Koma kwa ine ndekha ndinganene kuti izi siziri choncho. Ma Autotest amayenera kulembedwa, amayenera kuthandizidwa ndikupangidwa, zotsatira zake ziyenera kufufuzidwa, ndipo nthawi zambiri ndalama zanthawi izi sizoyenera. Ndikosavuta kupita kukupanga ndikuthana ndi mavuto kumeneko. Apa, Madivelopa ali pamzere ndikutifunsa kuti tifotokoze momwe amagwirira ntchito ndi ma autotest.

Chotsatira

Mayeso a unit mu DBMS - momwe timachitira mu Sportmaster, gawo lachiwiri

Tiye tikambirane za mapulani achitukuko a projekiti yoyesera yodzichitira.

Zoonadi, bola ngati kukhulupirika kwa Sportmaster kuli ndi moyo ndikupitirizabe kukula, ndizothekanso kupanga autotess pafupifupi kosatha. Chifukwa chake, njira yayikulu yachitukuko ndikukulitsa malo ophunzirira.

Pamene chiwerengero cha autotests chikuwonjezeka, nthawi yawo yonse yogwiritsira ntchito idzawonjezeka pang'onopang'ono, ndipo tidzabwereranso ku nkhani ya ntchito. Mwinamwake, yankho lidzakhala kuonjezera chiwerengero cha ulusi wofanana.

Koma izi ndi njira zoonekeratu za chitukuko. Ngati tilankhula za chinthu chopanda pake, tikuwonetsa izi:

  1. Pakadali pano, autotest management ikuchitika pamlingo wa DBMS, i.e. kudziwa PL/SQL ndikofunikira kuti ntchito yopambana. Ngati ndi kotheka, kasamalidwe ka makina (mwachitsanzo, kuyambitsa kapena kupanga metadata), mutha kupanga mtundu wina wa gulu la admin pogwiritsa ntchito Jenkins kapena zina zofananira.
  2. Aliyense amakonda zizindikiro kuchuluka ndi khalidwe. Pakuyesa pawokha, chizindikiro chapadziko lonse lapansi ndi Code Coverage kapena metric yofikira. Pogwiritsa ntchito chizindikirochi, titha kudziwa kuti kuchuluka kwa ma code a dongosolo lathu poyesedwa kumaphimbidwa ndi autotests. Kuyambira pa mtundu 12.2, Oracle imapereka mwayi wowerengera metric iyi ndipo imapereka kugwiritsa ntchito phukusi lokhazikika la DBMS_PLSQL_CODE_COVERAGE.

    Makina athu a autotest angopitirira chaka chimodzi ndipo mwina ino ndi nthawi yoti tiwunikire zomwe tikuchita. Mu ntchito yanga yomaliza (osati Sportmaster project) izi ndi zomwe zinachitika. Patatha chaka chimodzi titagwira ntchito pa autotests, oyang'anira adakhazikitsa ntchito yowunika kuchuluka kwa ma code omwe timalemba. Ndi nkhani yopitilira 1%, oyang'anira angakhale okondwa. Ife, omanga, timayembekezera zotsatira za 10%. Tidayika ma code coverage, kuyeza, ndikupeza 20%. Kukondwerera, tinapita kukatenga mphoto, koma momwe tinapitira kuti tikalandire ndi kumene tinapita pambuyo pake ndi nkhani yosiyana kwambiri.

  3. Ma Autotests amatha kuyang'ana mautumiki omwe ali pa intaneti. Oracle imatilola kuchita izi bwino kwambiri, ndipo sitidzakumananso ndi zovuta zingapo.
  4. Ndipo, zowona, makina athu oyesera okha amatha kugwiritsidwa ntchito ku projekiti ina. Yankho lomwe tidalandira ndi lapadziko lonse lapansi ndipo limangofunika kugwiritsa ntchito Oracle. Ndinamva kuti ma projekiti ena a Sportmaster akufuna kuyesa basi ndipo mwina tidzapita kwa iwo.

anapezazo

Tiyeni tifotokoze mwachidule. Pa projekiti ya kukhulupirika ku Sportmaster, tidakwanitsa kukhazikitsa makina oyesera okha. Zimatengera yankho la utPLSQL lochokera kwa Stephen Feuerstein. Pafupi ndi utPLSQL pali ma code autotest ndi ma module othandizira odzilemba okha: gawo loyambitsa, gawo lopangira deta ndi zina. Ma Autotest amayambitsidwa tsiku ndi tsiku ndipo, koposa zonse, amagwira ntchito ndipo ndi othandiza. Tikukhulupirira kuti tayamba kutulutsa mapulogalamu apamwamba kwambiri. Panthawi imodzimodziyo, njira yothetsera vutoli ndi yapadziko lonse ndipo ingagwiritsidwe ntchito momasuka ku polojekiti iliyonse komwe kuli kofunikira kukonza zoyeserera zokha pa Oracle DBMS.

PS Nkhaniyi sinatchulidwe kwambiri: pali zolemba zambiri ndipo palibe zitsanzo zaukadaulo. Ngati mutuwo umakhala wosangalatsa, ndiye kuti ndife okonzeka kupitiriza ndi kubwereranso ndi kupitiriza, kumene tidzakuuzani zomwe zasintha m'miyezi isanu ndi umodzi yapitayi ndikupereka zitsanzo zamakhodi.

Lembani ndemanga ngati pali mfundo zofunika kuzigogomezera m’tsogolo, kapena mafunso ofunikira kuulula.

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Kodi tidzalembanso zina za izi?

  • Inde, zedi

  • Ayi zikomo

Ogwiritsa ntchito 12 adavota. Ogwiritsa 4 adakana.

Source: www.habr.com

Kuwonjezera ndemanga