Unit tests f'DBMS - kif nagħmluh fi Sportmaster, it-tieni parti

L-ewwel parti - hawn.

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, it-tieni parti

Immaġina s-sitwazzjoni. Inti qed jiffaċċjaw il-kompitu li tiżviluppa funzjonalità ġdida. Għandek żviluppi mill-predeċessuri tiegħek. Jekk nassumu li m'għandekx obbligi morali, x'kont tagħmel?

Ħafna drabi, l-iżviluppi antiki kollha jintesew u kollox jerġa 'jibda mill-ġdid. Ħadd ma jħobb iħaffer fil-kodiċi ta 'xi ħadd ieħor, imma jekk għandek ħin, għaliex ma tibda toħloq is-sistema tiegħek? Dan huwa approċċ tipiku, u huwa fil-biċċa l-kbira korrett. Imma fil-proġett tagħna għamilna ħażin. Aħna bbażajna s-sistema tal-ittestjar awtomatiku tal-ġejjieni fuq l-iżviluppi fit-testijiet tal-unità fuq utPLSQL mill-predeċessuri tagħna, u mbagħad marru naħdmu f'diversi direzzjonijiet paralleli.

  1. Ir-restawr ta' testijiet ta' unità qodma. L-irkupru tfisser l-adattament tat-testijiet għall-istat eżistenti tas-sistema ta 'lealtà u l-adattament tat-testijiet għall-istandards utPLSQL.
  2. Issolvi problema b'fehim ta 'x'eżattament, liema metodi u proċessi huma koperti bl-awtotests. Int trid jew iżżomm din l-informazzjoni f'rasek, jew tiġbed konklużjonijiet ibbażati direttament fuq il-kodiċi tal-awtotest. Għalhekk, iddeċidejna li noħolqu katalgu. Assenjajna kodiċi mnemoniku uniku għal kull autotest, ħloqna deskrizzjoni u rreġistrajna settings (pereżempju, taħt liema kundizzjonijiet għandu jitnieda, jew x'għandu jiġri jekk it-tnedija tat-test tfalli). Essenzjalment, imla l-metadejta dwar l-awtotests u poġġiejna dik il-metadejta f'tabelli standard ta 'skema utPLSQL.
  3. Id-definizzjoni tal-istrateġija tal-espansjoni, i.e. għażla ta' funzjonalità li hija soġġetta għal verifika permezz ta' testijiet awtomatizzati. Iddeċidejna li nagħtu attenzjoni għal tliet affarijiet: titjib fis-sistema ġdida, inċidenti tal-produzzjoni, u proċessi ewlenin tas-sistema. Għalhekk, qed niżviluppaw b'mod parallel mar-rilaxx, niżguraw il-kwalità ogħla tagħha, fl-istess ħin nespandu l-ambitu tar-rigressjoni u niżguraw l-affidabilità tas-sistema f'postijiet kritiċi. L-ewwel ostakolu bħal dan kien il-proċess ta 'distribuzzjoni ta' skontijiet u bonusijiet fuq ċekk.
  4. Naturalment, bdejna niżviluppaw autotests ġodda. Waħda mill-ewwel kompiti ta 'rilaxx kienet li tevalwa l-prestazzjoni ta' kampjuni predefiniti tas-sistema ta 'lealtà. Il-proġett tagħna għandu blokk ta 'mistoqsijiet SQL ffissati b'mod riġidu li jagħżlu klijenti abbażi tal-kundizzjonijiet. Pereżempju, ikseb lista tal-klijenti kollha li l-aħħar xiri tagħhom kien f'belt speċifika, jew lista ta 'klijenti li l-ammont medju tax-xiri tagħhom huwa ogħla minn ċertu valur. Wara li ktibna testijiet awtomatiċi, ivverifikajna kampjuni predefiniti, irreġistrajna parametri tal-prestazzjoni tal-benchmark, u barra minn hekk kellna ttestjar tat-tagħbija.
  5. Il-ħidma ma 'awtotests għandha tkun konvenjenti. Iż-żewġ azzjonijiet l-aktar komuni huma t-tħaddim tal-awtotests u l-ħolqien tad-dejta tat-test. Hekk dehru żewġ moduli awżiljarji fis-sistema tagħna: modulu tat-tnedija u modulu tal-ġenerazzjoni tad-dejta.

    Il-lanċjar huwa rappreżentat bħala proċedura universali waħda b'parametru wieħed tad-dħul tat-test. Bħala parametru, tista 'tgħaddi l-kodiċi mnemoniku tal-awtotest, l-isem tal-pakkett, l-isem tat-test, l-issettjar tal-awtotest, jew kelma prinċipali riżervata. Il-proċedura tagħżel u tmexxi l-awtotests kollha li jissodisfaw il-kundizzjonijiet.

    Il-modulu tal-ġenerazzjoni tad-dejta huwa ppreżentat fil-forma ta 'pakkett li fih għal kull oġġett tas-sistema taħt test (tabella fid-database), inħolqot proċedura speċjali li ddaħħal id-dejta hemmhekk. F'din il-proċedura, il-valuri awtomatiċi jimtlew kemm jista 'jkun, li jiżgura l-ħolqien ta' oġġetti litteralment bi klikk ta 'saba'. U għall-użu faċli, inħolqu mudelli għad-dejta ġġenerata. Per eżempju, toħloq klijent ta 'ċerta età b'telefon tat-test u xiri komplut.

  6. L-awtotests għandhom jibdew u jaħdmu fi żmien li huwa aċċettabbli għas-sistema tiegħek. Għalhekk, ġiet organizzata tnedija bil-lejl ta’ kuljum, li abbażi tar-riżultati tagħha jiġi ġġenerat rapport dwar ir-riżultati u mibgħut lit-tim ta’ żvilupp kollu permezz ta’ posta korporattiva. Wara li rrestawraw autotests qodma u ħoloq oħrajn ġodda, il-ħin operattiv totali kien ta '30 minuta. Din il-prestazzjoni kienet adattata għal kulħadd, peress li t-tnedija saret barra mill-ħinijiet tax-xogħol.

    Imma kellna naħdmu fuq l-ottimizzazzjoni tal-veloċità tax-xogħol. Is-sistema ta 'lealtà fil-produzzjoni hija aġġornata bil-lejl. Bħala parti minn waħda mir-rilaxxi, kellna nagħmlu bidliet urġenti bil-lejl. L-istennija ta 'nofs siegħa għar-riżultati tal-awtotests fit-tlieta ta' filgħodu ma għamlitx lill-persuna responsabbli għar-rilaxx kuntenta (tislijiet ardenti lil Alexey Vasyukov!), U l-għada filgħodu ntqal ħafna kliem ġentili lejn is-sistema tagħna. Iżda bħala riżultat, ġie stabbilit standard ta '5 minuti għax-xogħol.

    Biex tħaffef il-prestazzjoni, użajna żewġ metodi: l-awtotests bdew jaħdmu fi tliet ħjut paralleli, fortunatament dan huwa konvenjenti ħafna minħabba l-arkitettura tas-sistema ta 'lealtà tagħna. U abbandunajna l-approċċ fejn l-awtotest ma joħloqx data tat-test għalih innifsu, iżda jipprova jsib xi ħaġa adattata fis-sistema. Wara li saru l-bidliet, il-ħin operattiv totali tnaqqas għal 3-4 minuti.

  7. Proġett b'testijiet awtomatiċi għandu jkun jista' jiġi skjerat f'diversi stands. Fil-bidu tal-vjaġġ tagħna, kien hemm tentattivi biex niktbu l-fajls tal-lott tagħna stess, iżda deher ċar li installazzjoni awtomatizzata miktuba minnha nfisha kienet orrur komplet, u ddejna lejn soluzzjonijiet industrijali. Minħabba l-fatt li l-proġett fih ħafna kodiċi dirett (l-ewwel nett, aħna naħżnu l-kodiċi tal-awtotest) u ftit li xejn data (id-dejta ewlenija hija metadejta dwar l-awtotests), l-implimentazzjoni fil-proġett Liquibase irriżulta li kienet sempliċi ħafna.

    Hija librerija b'sors miftuħ, indipendenti mid-database għat-traċċar, il-ġestjoni u l-infurzar tal-bidliet fl-iskema tad-database. Immexxi permezz tal-linja tal-kmand jew oqfsa bħal Apache Maven. Il-prinċipju ta 'tħaddim ta' Liquibase huwa pjuttost sempliċi. Għandna proġett organizzat b'ċertu mod, li jikkonsisti f'bidliet jew skripts li jeħtieġ li jiġu roll out fis-server fil-mira, u fajls ta 'kontroll li jiddeterminaw f'liema sekwenza u b'liema parametri għandhom jiġu installati dawn il-bidliet.

    Fil-livell DBMS, tinħoloq tabella speċjali li fiha Liquibase taħżen ir-reġistru tal-qlib. Kull bidla għandha hash ikkalkulat, li hija mqabbla kull darba bejn il-proġett u l-istat fid-database. Grazzi għal Liquibase, nistgħu faċilment inwettqu bidliet fis-sistema tagħna għal kwalunkwe ċirkwit. L-awtotestijiet issa huma mnedija fuq ċirkwiti tat-test u tar-rilaxx, kif ukoll fuq kontenituri (ċirkwiti personali tal-iżviluppaturi).

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, it-tieni parti

Allura, ejja nitkellmu dwar ir-riżultati tal-użu tas-sistema tagħna tal-ittestjar tal-unità.

  1. Naturalment, l-ewwel nett, aħna konvinti li bdejna niżviluppaw software aħjar. L-awtotests huma mnedija kuljum u għexieren ta 'żbalji jinstabu kull rilaxx. Barra minn hekk, xi wħud minn dawn l-iżbalji huma biss indirettament relatati mal-funzjonalità li verament ridna nbiddlu. Hemm dubji serji li dawn l-iżbalji nstabu permezz ta' ttestjar manwali.
  2. It-tim issa għandu fiduċja li l-funzjonalità speċifika qed taħdem b'mod korrett... L-ewwelnett, dan jikkonċerna l-proċessi kritiċi tagħna. Per eżempju, matul l-aħħar sitt xhur ma kellna l-ebda problemi bid-distribuzzjoni ta 'skontijiet u bonusijiet fuq irċevuti, minkejja l-bidliet fir-rilaxx, għalkemm f'perjodi preċedenti seħħew żbalji b'ċerta frekwenza
  3. Irnexxielna nnaqqsu n-numru ta' iterazzjonijiet tal-ittestjar. Minħabba l-fatt li l-awtotests huma miktuba għal funzjonalità ġdida, l-analisti u t-testers part-time jirċievu kodiċi ta 'kwalità ogħla, minħabba li diġà ġie ċċekkjat.
  4. Xi wħud mill-iżviluppi fl-ittestjar awtomatizzat huma użati mill-iżviluppaturi. Pereżempju, id-dejta tat-test fuq il-kontenituri tinħoloq bl-użu tal-modulu tal-ġenerazzjoni tal-oġġett.
  5. Huwa importanti li żviluppajna "aċċettazzjoni" tas-sistema tal-ittestjar awtomatizzata min-naħa tal-iżviluppaturi. Hemm fehim li dan huwa importanti u utli. Iżda mill-esperjenza tiegħi stess nista' ngħid li dan huwa 'l bogħod mill-każ. Autotests jeħtieġ li jinkitbu, jeħtieġ li jiġu appoġġjati u żviluppati, ir-riżultati għandhom jiġu analizzati, u ħafna drabi dawn l-ispejjeż tal-ħin sempliċement ma jiswewx. Huwa ħafna aktar faċli li tmur għall-produzzjoni u tittratta l-problemi hemmhekk. Hawnhekk, l-iżviluppaturi jingħaqdu u jistaqsuna biex ikopru l-funzjonalità tagħhom b'awtotests.

X'hemm Li jmiss

Unit tests f'DBMS - kif nagħmluh fi Sportmaster, it-tieni parti

Ejja nitkellmu dwar il-pjanijiet ta 'żvilupp għall-proġett ta' ttestjar awtomatizzat.

Naturalment, sakemm is-sistema ta 'lealtà ta' Sportmaster tkun ħajja u tkompli tiżviluppa, huwa wkoll possibbli li jiġu żviluppati awtotests kważi bla tmiem. Għalhekk, id-direzzjoni ewlenija tal-iżvilupp qed tespandi ż-żona ta 'kopertura.

Hekk kif in-numru ta 'awtotests jiżdied, il-ħin operattiv totali tagħhom se jiżdied b'mod stabbli, u nerġgħu jkollna nerġgħu lura għall-kwistjoni tal-prestazzjoni. Ħafna probabbli, is-soluzzjoni tkun li jiżdied in-numru ta 'ħjut paralleli.

Iżda dawn huma modi ovvji ta 'żvilupp. Jekk nitkellmu dwar xi ħaġa aktar mhux trivjali, aħna nenfasizzaw dan li ġej:

  1. Bħalissa, il-ġestjoni tal-awtotest titwettaq fil-livell DBMS, i.e. għarfien ta' PL/SQL huwa meħtieġ għal xogħol ta' suċċess. Jekk meħtieġ, ġestjoni tas-sistema (per eżempju, tnedija jew ħolqien ta 'metadata), tista' toħloq xi tip ta 'pannell tal-amministrazzjoni bl-użu ta' Jenkins jew xi ħaġa simili.
  2. Kulħadd iħobb l-indikaturi kwantitattivi u kwalitattivi. Għall-ittestjar awtomatizzat, indikatur universali bħal dan huwa Kopertura tal-Kodiċi jew metrika tal-kopertura tal-kodiċi. Billi nużaw dan l-indikatur, nistgħu niddeterminaw liema perċentwal tal-kodiċi tas-sistema tagħna taħt test huwa kopert mill-awtotests. Jibda mill-verżjoni 12.2, Oracle jipprovdi l-abbiltà li jikkalkula din il-metrika u joffri l-użu tal-pakkett standard DBMS_PLSQL_CODE_COVERAGE.

    Is-sistema tal-awtotest tagħna għandha ftit aktar minn sena u forsi issa huwa ż-żmien li nevalwaw il-kopertura tagħna. Fl-aħħar proġett tiegħi (mhux proġett ta’ Sportmaster) dan ġara. Sena wara li ħadem fuq l-awtotests, il-maniġment stabbilixxa l-kompitu li jivvaluta liema perċentwal tal-kodiċi nkopru. B'kopertura ta 'aktar minn 1%, il-maniġment ikun kuntent. Aħna, l-iżviluppaturi, nistennew riżultat ta 'madwar 10%. Installajna kopertura tal-kodiċi, kejlna, u ltqajna 20%. Biex niċċelebraw, morna nġibu l-premju, imma kif morna niksbuh u fejn morna aktar tard hija storja kompletament differenti.

  3. Autotests jistgħu jiċċekkjaw is-servizzi tal-web esposti. Oracle jippermettilna nagħmlu dan pjuttost tajjeb, u mhux se niltaqgħu ma 'numru ta' problemi.
  4. U, ovvjament, is-sistema ta 'ttestjar awtomatizzata tagħna tista' tiġi applikata għal proġett ieħor. Is-soluzzjoni li rċevejna hija universali u teħtieġ biss l-użu ta 'Oracle. Smajt li proġetti oħra ta’ Sportmaster huma interessati fl-ittestjar awtomatiku u forsi mmorru għalihom.

Sejbiet

Ejja nġabru fil-qosor. Fuq il-proġett tas-sistema ta 'lealtà fi Sportmaster, irnexxielna nimplimentaw sistema ta' ttestjar awtomatizzata. Hija bbażata fuq is-soluzzjoni utPLSQL minn Stephen Feuerstein. Madwar utPLSQL hemm kodiċi awtotest u moduli awżiljarji miktuba waħedhom: modulu ta 'tnedija, modulu ta' ġenerazzjoni tad-dejta u oħrajn. L-awtotests huma mnedija kuljum u, l-aktar importanti, jaħdmu u huma utli. Ninsabu kunfidenti li bdejna noħorġu softwer ta' kwalità ogħla. Fl-istess ħin, is-soluzzjoni li tirriżulta hija universali u tista 'tiġi applikata liberament għal kwalunkwe proġett fejn huwa meħtieġ li jiġi organizzat ttestjar awtomatizzat fuq l-Oracle DBMS.

PS Dan l-artikolu mhuwiex speċifiku ħafna: hemm ħafna test u prattikament l-ebda eżempji tekniċi. Jekk is-suġġett huwa ġeneralment interessanti, allura aħna lesti li nkompluh u nerġgħu lura b'kontinwazzjoni, fejn ngħidulek x'inbidel matul l-aħħar sitt xhur u nipprovdu eżempji ta 'kodiċi.

Ikteb kummenti jekk ikun hemm punti li għandhom jiġu enfasizzati fil-futur, jew mistoqsijiet li jeħtieġu żvelar.

Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, ta 'xejn.

Ghandna niktbu aktar dwar dan?

  • Iva dażgur

  • Le grazzi

Ivvutaw 12 utent. 4 utent astjenew.

Sors: www.habr.com

Żid kumment