Mga pagsulay sa yunit sa usa ka DBMS - kung giunsa naton kini buhaton sa Sportmaster, bahin sa duha

Unang bahin - dinhi.

Mga pagsulay sa yunit sa usa ka DBMS - kung giunsa naton kini buhaton sa Sportmaster, bahin sa duha

Hunahunaa ang usa ka sitwasyon. Nag-atubang ka sa tahas sa pagpalambo sa bag-ong kagamitan. Adunay ka kasinatian gikan sa imong mga gisundan. Sa paghunahuna nga wala kay moral nga obligasyon, unsay imong buhaton?

Kasagaran, ang tanan nga daan nga mga kalamboan nakalimtan ug ang tanan nagsugod pag-usab. Walay usa nga ganahan nga magkalot sa code sa laing tawo, ug kung adunay ka oras, nganong dili magsugod sa paghimo sa imong kaugalingong sistema? Kini usa ka kasagaran nga pamaagi, ug sa daghang bahin kini husto. Apan sa among proyekto, lahi ang among gibuhat. Gibase namo ang umaabot nga automated testing system sa mga kalamboan sa unit tests sa utPLSQL gikan sa among mga gisundan, ug dayon mitrabaho sa daghang parallel nga direksyon.

  1. Pag-uli sa daan nga mga pagsulay sa yunit. Ang pagkaayo nagpasabut nga pagpahiangay sa mga pagsulay sa naglungtad nga kahimtang sa sistema sa pagkamaunongon ug pagpahiangay sa mga pagsulay sa mga sumbanan sa utPLSQL.
  2. Pagsulbad sa problema uban sa pagsabot, ug unsa gayud, unsa nga mga pamaagi ug mga proseso, atong gitabonan sa autotests. Kinahanglan nimo nga ibutang kini nga kasayuran sa imong ulo, o maghimo mga konklusyon base sa direkta sa code sa mga autotest. Busa, nakahukom kami nga maghimo usa ka katalogo. Gi-assign namo ang usa ka talagsaon nga mnemonic code sa matag autotest, naghimo og usa ka deskripsyon, ug giayo ang mga setting (pananglitan, ubos sa unsa nga mga kondisyon kini kinahanglan nga pagdagan, o unsa ang mahitabo kung ang pagsulay mapakyas). Sa esensya, gipuno namo ang metadata bahin sa mga autotest ug gibutang kini nga metadata sa standard nga mga lamesa sa utPLSQL schema.
  3. Kahulugan sa estratehiya sa pagpalapad, i.e. pagpili sa pagpaandar nga gipailalom sa pag-verify pinaagi sa mga autotest. Nakahukom kami nga hatagan ug pagtagad ang tulo ka mga butang: bag-ong mga pag-uswag sa sistema, mga insidente gikan sa produksiyon, ug hinungdanon nga mga proseso sa sistema. Sa ingon, nag-uswag kami nga managsama sa pagpagawas, nagsiguro sa mas taas nga kalidad niini, nga dungan nga nagpalapad sa sakup sa pagbag-o ug nagsiguro sa pagkakasaligan sa sistema sa mga kritikal nga lugar. Ang una nga bottleneck mao ang proseso sa pag-apod-apod sa mga diskwento ug mga bonus pinaagi sa tseke.
  4. Natural, nagsugod kami sa paghimo og bag-ong mga autotest. Usa sa una nga mga buluhaton sa pagpagawas mao ang pagtimbang-timbang sa nahimo sa gitakda nang daan nga mga sampol sa sistema sa pagkamaunongon. Ang among proyekto adunay usa ka bloke sa rigidly fixed sql query nga nagpili sa mga kliyente sumala sa mga kondisyon. Pananglitan, pagkuha usa ka lista sa tanan nga mga kustomer kansang katapusan nga pagpalit sa usa ka partikular nga lungsod, o usa ka lista sa mga kostumer kansang kasagaran nga kantidad sa pagpalit labaw sa usa ka piho nga kantidad. Pagbaton ug sinulat nga mga autotest, among gisusi ang mga predefined samples, fixed benchmark performance parameters, ug dugang pa nga nagkuha kami ug load testing.
  5. Ang pagtrabaho sa mga autotest kinahanglan nga sayon. Ang duha ka labing kasagaran nga mga aksyon mao ang pagpadagan sa mga autotest ug paghimo sa datos sa pagsulay. Ingon niini kung giunsa ang duha ka auxiliary modules nga nagpakita sa among sistema: ang launch module ug ang data generation module.

    Ang launcher girepresentahan isip usa ka generic nga pamaagi nga adunay usa ka input text parameter. Ingon nga parameter, mahimo nimong ipasa ang usa ka autotest mnemonic code, ngalan sa pakete, ngalan sa pagsulay, setting sa autotest, o usa ka gireserba nga keyword. Gipili ug gipadagan sa pamaagi ang tanan nga mga autotest nga nagtagbo sa mga kondisyon.

    Ang data generation module gipresentar isip usa ka pakete, diin alang sa matag butang sa sistema nga gisulayan (usa ka lamesa sa database), usa ka espesyal nga pamaagi ang gihimo nga nagsal-ot sa datos didto. Sa kini nga pamaagi, ang mga default nga kantidad napuno sa labing kataas, nga nagsiguro sa paghimo sa mga butang nga literal sa pag-klik sa usa ka tudlo. Ug alang sa kasayon ​​​​sa paggamit, ang mga templates alang sa namugna nga datos gihimo. Pananglitan, paghimo usa ka kliyente sa usa ka piho nga edad nga adunay usa ka pagsulay nga telepono ug usa ka nahuman nga pagpalit.

  6. Ang mga autotest kinahanglan nga modagan ug modagan sulod sa usa ka makatarunganon nga panahon alang sa imong sistema. Busa, ang usa ka adlaw-adlaw nga paglansad sa gabii giorganisar, pinasukad sa mga sangputanan diin ang usa ka taho sa mga resulta gihimo ug gipadala sa tibuuk nga team sa pag-uswag pinaagi sa koreo sa korporasyon. Human sa pagpasig-uli sa daan nga mga autotest ug paghimo og mga bag-o, ang kinatibuk-ang oras sa pagdagan maoy 30 minutos. Ang ingon nga pasundayag nahiangay sa tanan, tungod kay ang paglansad nahitabo sa mga oras nga wala’y oras.

    Apan kinahanglan namon nga magtrabaho aron ma-optimize ang katulin sa trabaho. Ang sistema sa pagkamaunongon sa produksiyon gi-update sa gabii. Isip kabahin sa usa sa mga pagpagawas, kinahanglang maghimo mig dinalian nga mga kausaban sa gabii. Ang tunga sa oras nga paghulat alang sa mga resulta sa mga autotest sa alas tres sa buntag wala makapalipay sa tawo nga responsable sa pagpagawas (madasigon nga pagtimbaya kang Alexei Vasyukov!), Ug sa sunod nga buntag daghang mainit nga mga pulong ang gisulti sa among sistema. Apan isip resulta, usa ka 5-minutos nga sumbanan alang sa trabaho ang gitakda.

    Aron mapadali ang pasundayag, migamit kami ug duha ka pamaagi: nagsugod kami sa pagpadagan sa mga autotest sa tulo ka parallel thread, tungod kay kini sayon ​​kaayo tungod sa arkitektura sa among loyalty system. Ug gibiyaan namon ang pamaagi kung ang autotest wala maghimo mga datos sa pagsulay alang sa iyang kaugalingon, apan naningkamot nga makapangita usa ka butang nga angay sa sistema. Pagkahuman sa paghimo sa mga pagbag-o, ang kinatibuk-ang oras sa pag-opera gipamubu sa 3-4 ka minuto.

  7. Ang usa ka proyekto nga adunay mga autotest kinahanglan nga ma-deploy sa lainlaing mga stand. Sa sinugdanan sa panaw, adunay mga pagsulay sa pagsulat sa among kaugalingon nga mga batch nga mga file, apan kini nahimong tin-aw nga ang usa ka self-written automated installation usa ka kompleto nga kalisang, ug milingi kami ngadto sa mga solusyon sa industriya. Tungod sa kamatuoran nga ang proyekto adunay daghang direkta nga code (una sa tanan, among gitipigan ang code sa mga autotest) ug gamay ra kaayo nga datos (ang panguna nga datos mao ang metadata bahin sa mga autotest), nahimo kini nga dali ra nga i-integrate sa Liquibase nga proyekto.

    Kini usa ka bukas nga gigikanan nga database nga independente nga librarya alang sa pagsubay, pagdumala ug pagpadapat sa mga pagbag-o sa eskema sa database. Gidumala pinaagi sa command line o mga framework sama sa Apache Maven. Ang prinsipyo sa operasyon sa Liquibase yano ra. Kami adunay usa ka proyekto nga giorganisar sa usa ka piho nga paagi, nga naglangkob sa mga pagbag-o o mga script nga kinahanglan i-roll sa target nga server, ug pagkontrol sa mga file nga nagtino kung unsang pagkasunod-sunod ug kung unsang mga parameter ang kinahanglan i-install.

    Sa lebel sa DBMS, usa ka espesyal nga lamesa ang gihimo diin gitipigan sa Liquibase ang rollback log. Ang matag pagbag-o adunay kalkulado nga hash nga gitandi matag oras tali sa proyekto ug estado sa database. Salamat sa Liquibase, dali namong mapalihok ang mga pagbag-o sa among sistema sa bisan unsang circuit. Ang mga autotest karon gipadagan sa pagsulay ug pagpagawas sa mga loop, ingon man sa mga sudlanan (personal nga mga loop sa developer).

Mga pagsulay sa yunit sa usa ka DBMS - kung giunsa naton kini buhaton sa Sportmaster, bahin sa duha

Busa, hisgotan nato ang mga resulta sa pagpadapat sa atong unit testing system.

  1. Siyempre, una sa tanan, kombinsido kami nga nagsugod kami sa pagpalambo sa mas maayo nga software. Ang mga autotest nagdagan adlaw-adlaw ug nakit-an ang daghang mga bug matag pagpagawas. Dugang pa, ang pipila niini nga mga kasaypanan dili direkta nga nalangkit sa pagpaandar nga gusto namong usbon. Adunay kusog nga pagduhaduha nga kini nga mga sayup nakit-an pinaagi sa manual nga pagsulay.
  2. Ang team nakabaton ug pagsalig nga ang espisipikong pagpaandar moandar sa husto... Una sa tanan, kini may kalabotan sa atong mga kritikal nga proseso. Pananglitan, sa miaging unom ka bulan, wala kami'y mga problema sa pag-apod-apod sa mga diskwento ug mga bonus pinaagi sa tseke, bisan pa sa mga pagbag-o nga gihimo matag pagpagawas, bisan kung sa miaging mga panahon adunay mga sayup nga nahitabo sa pipila ka frequency
  3. Nahimo namon nga makunhuran ang gidaghanon sa mga pag-uli sa pagsulay. Tungod sa kamatuoran nga ang mga autotest gisulat alang sa bag-ong gamit, ang mga analista ug part-time nga mga tester makakuha og code nga mas taas nga kalidad, tungod kay napamatud-an na kini.
  4. Kabahin sa mga kalamboan sa automated testing gigamit sa developers. Pananglitan, ang datos sa pagsulay sa mga sudlanan gihimo gamit ang module sa paghimo sa butang.
  5. Importante nga nakahimo kita og "pagdawat" sa automated testing system sa mga developers. Adunay pagsabot nga kini importante ug mapuslanon. Ug gikan sa akong kaugalingon nga kasinatian, makaingon ako nga kini layo sa kaso. Kinahanglan nga isulat ang mga autotest, kinahanglan nga huptan ug pauswagon kini, pag-analisar ang mga resulta, ug kasagaran kini nga mga gasto sa oras dili gyud takus niini. Mas sayon ​​​​ang pag-adto sa produksiyon ug pag-atubang sa mga problema didto. Sa among nasud, naglinya ang mga developer ug gihangyo nga tabunan ang ilang pag-andar gamit ang mga autotest.

Unsa ang sunod

Mga pagsulay sa yunit sa usa ka DBMS - kung giunsa naton kini buhaton sa Sportmaster, bahin sa duha

Hisgutan nato ang mahitungod sa mga plano sa pagpalambo sa automated testing project.

Siyempre, samtang ang sistema sa pagkamaunongon sa Sportmaster buhi ug nagpadayon sa pag-uswag, ang mga autotest mahimo usab nga mapalambo hapit sa walay katapusan. Busa, ang nag-unang direksyon sa kalamboan mao ang pagpalapad sa coverage area.

Samtang nagkadaghan ang mga autotest, ang kinatibuk-ang oras sa ilang trabaho padayon nga modaghan, ug kinahanglan naton nga balikan ang isyu sa pasundayag. Lagmit, ang solusyon mao ang pagdugang sa gidaghanon sa mga parallel thread.

Apan kini klaro nga mga paagi sa pag-uswag. Kung maghisgot kami bahin sa usa ka butang nga labi ka dili hinungdanon, among gipasiugda ang mga musunud:

  1. Karon ang mga autotest gidumala sa lebel sa DBMS, i.e. Ang kahibalo sa PL/SQL gikinahanglan para sa malampusong trabaho. Kung gikinahanglan, ang pagdumala sa sistema (pananglitan, paglansad o paghimo og metadata) mahimong makuha sa usa ka matang sa admin panel gamit ang Jenkins o usa ka butang nga susama.
  2. Ang tanan nahigugma sa quantitative ug qualitative indicators. Alang sa awtomatik nga pagsulay, ang ingon nga usa ka unibersal nga timailhan mao ang Code Coverage o sukatan sa pagsakup sa code. Gamit kini nga timailhan, atong mahibal-an kung unsa nga porsyento sa code sa atong sistema nga ubos sa pagsulay ang nasakup sa mga autotest. Sugod gikan sa bersyon 12.2, ang Oracle naghatag ug abilidad sa pagkalkulo niini nga metric ug nagsugyot gamit ang standard nga DBMS_PLSQL_CODE_COVERAGE nga pakete.

    Ang among sistema sa autotest kapin na sa usa ka tuig ang edad ug tingali panahon na sa pagtimbang-timbang sa sakup. Sa akong katapusang proyekto (usa ka proyekto nga dili sa Sportmaster), kini nahitabo. Usa ka tuig human sa pagtrabaho sa mga autotest, ang management nagtakda sa tahas sa pag-assess kung pila ang porsyento sa code nga among nasakup. Uban sa labaw pa sa 1% nga coverage, ang pagdumala malipay. Kami, ang mga nag-develop, nagpaabut sa usa ka resulta sa mga 10%. Gipakyas namon ang pagsakup sa code, gisukod kini, nakuha ang 20%. Aron sa pagsaulog, kami miadto alang sa award, apan sa unsa nga paagi kami miadto alang niini ug diin kami miadto sa ulahi mao ang usa ka bug-os nga lain nga istorya.

  3. Mahimong sulayan sa mga autotest ang gibutyag nga mga serbisyo sa web. Gitugotan ka sa Oracle nga buhaton kini, ug dili na kami makasugat og daghang mga problema.
  4. Ug, siyempre, ang among automated testing system mahimong magamit sa laing proyekto. Ang solusyon nga among nadawat kay unibersal ug gikinahanglan lang ang paggamit sa Oracle. Nakadungog ko nga adunay interes sa awtomatikong pagsulay sa ubang mga proyekto sa Sportmaster ug, tingali, moadto kami kanila.

kaplag

Atong recap. Sa proyekto sa sistema sa pagkamaunongon sa Sportmaster, nakahimo kami sa pagpatuman sa usa ka awtomatikong sistema sa pagsulay. Ang basehan niini mao ang utPLSQL nga solusyon gikan ni Stephen Feuerstein. Sa palibot sa utPLSQL mao ang code alang sa mga autotest ug auxiliary nga self-written modules: usa ka launcher, usa ka data generation module, ug uban pa. Ang mga autotest nagdagan adlaw-adlaw ug, labing hinungdanon, nagtrabaho ug nakabenepisyo. Kami kombinsido nga nagsugod kami sa pagpagawas sa software nga mas taas nga kalidad. Sa samang higayon, ang resulta nga solusyon kay unibersal ug mahimong gawasnon nga magamit sa bisan unsang proyekto diin gikinahanglan ang pag-organisar sa automated testing sa Oracle DBMS.

PS Kini nga artikulo nahimo nga dili kaayo espesipiko: adunay daghang teksto ug halos walay teknikal nga mga pananglitan. Kung ang hilisgutan makapaikag sa tibuuk kalibutan, nan andam kami nga ipadayon kini ug mobalik nga adunay pagpadayon, diin isulti namon kanimo kung unsa ang nabag-o sa miaging unom ka bulan ug maghatag mga pananglitan sa code.

Isulat ang mga komento kung adunay mga punto nga kinahanglan ipasiugda sa umaabot, o mga pangutana nga kinahanglan ibutyag.

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Magsulat pa ba kita bahin niini?

  • Oo syempre

  • Dili salamat

12 ka tiggamit ang miboto. 4 ka tiggamit ang nag- abstain.

Source: www.habr.com

Idugang sa usa ka comment