Testên yekîneyê di DBMS-ê de - em çawa di Sportmaster-ê de, beşa yekê dikin

Hey Habr!

Navê min Maxim Ponomarenko ye û ez pêşdebirek li Sportmaster im. Di warê IT de 10 sal ezmûna min heye. Wî kariyera xwe di ceribandina destan de dest pê kir, dûv re derbasî pêşveçûna databasê bû. Van 4 salên dawîn, berhevkirina zanîna ku di ceribandin û pêşkeftinê de bi dest xistiye, ez di asta DBMS de ceribandina otomatîkî dikim.

Ez tenê salek di tîmê Sportmaster de me û li ser yek ji wan projeyên sereke ceribandina otomatîkî pêş dixe. Di meha Nîsanê de, ez û xortên ji Sportmaster Lab di konferansek li Krasnodar de axivîn, rapora min bi navê "Di DBMS-ê de ceribandinên yekîneyê" bû, û naha ez dixwazim wê bi we re parve bikim. Dê gelek nivîs hebin, lewra min biryar da ku raporê bikim du post. Di yekem de, em ê bi gelemperî li ser ototest û ceribandinê biaxivin, û di ya duyemîn de, ez ê bi hûrgulî li ser pergala ceribandina yekîneya me û encamên serîlêdana wê bisekinim.

Testên yekîneyê di DBMS-ê de - em çawa di Sportmaster-ê de, beşa yekê dikin

Pêşîn, teoriyek piçûktir. Testkirina otomatîkî çi ye? Ev ceribandinek e ku bi karanîna nermalavê ve tête kirin, û di IT-ya nûjen de ew di pêşkeftina nermalavê de zêde tê bikar anîn. Ev ji ber vê yekê ye ku pargîdanî mezin dibin, pergalên agahdariya wan mezin dibin û, li gorî vê yekê, hêjmara fonksiyona ku divê were ceribandin mezin dibe. Pêkanîna ceribandina destan her ku diçe bihatir dibe.

Ez ji bo pargîdaniyek mezin xebitîm ku weşanên wê her du mehan carekê derdikevin. Di heman demê de, mehek tevahî hate xerc kirin ku bi dehan tester bi destan fonksiyonê kontrol bikin. Bi saya pêkanîna otomasyonê ji hêla tîmek piçûk a pêşdebiran ve, me karî di salek û nîvê de dema ceribandinê kêm bikin 2 hefte. Me ne tenê leza ceribandinê zêde kiriye, lê di heman demê de kalîteya wê jî baştir kiriye. Testên otomatîkî bi rêkûpêk têne destpêkirin û ew her gav tevahiya qursa kontrolên ku di nav wan de ne pêk tînin, ango, em faktora mirovî derdixin holê.

IT-ya nûjen bi vê yekê ve tête diyar kirin ku dibe ku ji pêşdebirkerek ne tenê hewce bike ku koda hilberê binivîsîne, lê di heman demê de ceribandinên yekîneyê jî binivîse ku vê kodê kontrol dike.

Lê heke pergala we di serî de li ser mantiqa serverê ye? Li sûkê çareseriyek gerdûnî an pratîkên çêtirîn tune. Wekî qaîdeyek, pargîdan vê pirsgirêkê bi afirandina pergala ceribandina xwe-nivîskî çareser dikin. Ev pergala meya ceribandina otomatîkî ya xwe-nivîskî ye ku li ser projeya me hatî afirandin û ez ê di rapora xwe de li ser biaxivim.

Testên yekîneyê di DBMS-ê de - em çawa di Sportmaster-ê de, beşa yekê dikin

Testkirina dilsoziyê

Pêşîn, bila em li ser projeya ku me pergalek ceribandina otomatîkî damezrand biaxivin. Projeya me pergala dilsoziya Sportmaster e (bi awayê, me berê jî li ser wê nivîsand ev post).

Ger pargîdaniya we têra xwe mezin e, wê hingê pergala dilsoziya we dê sê taybetmendiyên standard hebe:

  • Pergala we dê pir barkirî be
  • Pergala we dê pêvajoyên kompîturê yên tevlihev dihewîne
  • Pergala we dê bi rengek çalak were pêşve xistin.

Werin em bi rêzê herin... Bi tevahî, ger em hemî marqeyên Sportmaster bihesibînin, wê hingê li Rûsya, Ukrayna, Chinaîn, Kazakistan û Belarusê zêdetirî 1000 firotgehên me hene. Her roj li van dikanan nêzî 300 hezar kirîn tên kirin. Yanî her saniyeyekê 000-3 kontrol dikeve pergala me. Bi xwezayî, pergala dilsoziya me pir barkirî ye. Û ji ber ku ew bi çalak tê bikar anîn, divê em standardên herî bilind ên kalîteya wê peyda bikin, ji ber ku her xeletiyek di nermalavê de tê wateya windahiyên mezin ên darayî, navdar û yên din.

Di heman demê de, Sportmaster zêdetirî sed promosyonên cûda dimeşîne. Cûrbecûr danasîn hene: promosyonên hilberan hene, yên ku ji bo roja hefteyê hatine veqetandin hene, yên ku bi firotgehek taybetî ve girêdayî ne, ji bo mîqdara wergirtinê promosyonên hene, ji bo hejmara tiştan hene. Bi gelemperî, ne xirab e. Xerîdar bonus û kodên danasînê hene ku dema kirînê têne bikar anîn. Hemî ev rê li ber vê yekê vedike ku hesabkirina her fermanê karekî pir ne hindik e.

Algorîtmaya ku pêvajokirina fermanê pêk tîne bi rastî tirsnak û tevlihev e. Û her guhertinên vê algorîtmê pir xeternak e. Wusa dixuye ku guhertinên herî xuya ne girîng dikarin bibin sedema bandorên pir nediyar. Lê bi rastî ew pêvajoyên hesabker ên tevlihev, nemaze yên ku fonksiyonên krîtîk pêk tînin, berendamên çêtirîn ji bo otomasyonê ne. Kontrolkirina bi dehan dozên bi destan pir dem dixwe. Û ji ber ku xala têketina pêvajoyê neguherî ye, ku ew yek carî diyar kir, hûn dikarin zû ceribandinên otomatîkî biafirînin û pê ewle bin ku fonksiyon dê bixebite.

Ji ber ku pergala me bi çalak tê bikar anîn, karsaz dê ji we tiştek nû bixwaze, bi demê re bijî û xerîdar be. Di pergala meya dilsoziyê de, serbestberdan her du mehan carekê derdikevin. Ev tê wê wateyê ku her du mehan carekê pêdivî ye ku em paşveçûnek tevahî ya pergalê pêk bînin. Di heman demê de, bi xwezayî, wekî di her IT-ya nûjen de, pêşkeftin tavilê ji pêşdebiran berbi hilberînê naçe. Ew li ser çerxa pêşdebiran çêdibe, dûv re bi dûv re di berika ceribandinê re derbas dibe, berdan, pejirandin, û tenê hingê di hilberînê de diqede. Bi kêmanî, li ser çerxên ceribandin û berdanê, pêdivî ye ku em paşveçûnek bêkêmasî ya tevahî pergalê pêk bînin.

Taybetmendiyên diyarkirî hema hema ji bo her pergala dilsoziyê standard in. Ka em li ser taybetmendiyên projeya xwe biaxivin.

Ji hêla teknolojî ve, 90% ji mantiqa pergala meya dilsoziya server-based e û li ser Oracle-ê tête bicîh kirin. Di Delphi de xerîdarek heye, ku fonksiyona rêveberê cîhê xebatê yê otomatîkî pêk tîne. Ji bo serîlêdanên derveyî (mînakek malperek) karûbarên malperê yên vekirî hene. Ji ber vê yekê, pir mentiqî ye ku ger em pergalek ceribandina otomatîkî bicîh bikin, em ê wê li Oracle bikin.

Pergala dilsoziyê di Sportmaster de ji 7 salan zêdetir heye û ji hêla pêşdebirên yekane ve hatî afirandin... Di van 7 salan de hejmara navînî ya pêşdebiran di projeya me de 3-4 kes bû. Lê di sala borî de, tîmê me pir mezin bûye, û niha 10 kes li ser projeyê dixebitin. Ango, mirovên ku bi kar, pêvajo û mîmariya tîpîk nizanin têne projeyê. Û metirsiyek zêde heye ku em xeletiyan ji dest bidin.

Proje bi nebûna ceribandinên diyarkirî yên wekî yekîneyên karmendan ve tête diyar kirin. Bê guman, ceribandin heye, lê ceribandin ji hêla analîstan ve, ji bilî berpirsiyariyên wan ên sereke yên din, têne kirin: danûstendina bi xerîdarên karsaziyê, bikarhêneran, pêşxistina pêdiviyên pergalê, hwd. hwd... Tevî vê rastiyê ku ceribandin bi qalîteya pir bilind tê kirin (ev bi taybetî guncan e ku were gotin, ji ber ku hin vekoler dikarin çavê vê raporê bikişîne), bandoriya pisporî û giraniya li ser yek tişt nehatiye betal kirin. .

Li gorî hemî jorîn, ji bo baştirkirina kalîteya hilbera radestkirî û kêmkirina dema pêşkeftinê, ramana ceribandina otomatîkî ya li ser projeyek pir mentiqî xuya dike. Û di qonaxên cihêreng ên hebûna pergala dilsoziyê de, pêşdebirên kesane hewl dan ku koda xwe bi ceribandinên yekîneyê veşêrin. Bi tevayî ew pêvajoyek pir ji hev veqetandî bû, ku her kes mîmarî û rêbazên xwe bikar tîne. Encamên dawîn ji bo ceribandinên yekîneyê hevpar bûn: ceribandin hatin pêşve xistin, ji bo demekê hatine bikar anîn, di hilanîna pelê ya guhertoyê de hatine hilanîn, lê di demekê de ew xebitîn rawestandin û hatin ji bîr kirin. Berî her tiştî, ev ji ber vê yekê bû ku ceribandin bêtir bi performerek taybetî ve, û ne bi projeyê ve girêdayî bûn.

utPLSQL tê rizgariyê

Testên yekîneyê di DBMS-ê de - em çawa di Sportmaster-ê de, beşa yekê dikin

Ma hûn di derbarê Stephen Feuerstein de tiştek dizanin?

Ev zilamek jîr e ku beşek dirêj ji kariyera xwe veqetandiye ku bi Oracle û PL/SQL re bixebite, û li ser vê mijarê hejmareke pir mezin nivîsiye. Yek ji pirtûkên wî yên navdar ev e: “Oracle PL/SQL. Ji bo pisporan." Ew Stephen bû ku çareseriya utPLSQL pêşxist, an jî, wekî ku ew radiweste, çarçoveya Testkirina Yekîneyê ji bo Oracle PL/SQL. Çareseriya utPLSQL di 2016-an de hate afirandin, lê ew bi aktîvî li ser xebitîn berdewam dike û guhertoyên nû têne berdan. Di dema raporê de, guhertoya herî dawî ji 24ê Adarê, 2019-an vedigere.
Ew çi ye. Ev projeyek çavkaniya vekirî ya cuda ye. Ew çend megabytes giran dike, tevî mînak û belgeyan. Ji hêla fizîkî ve, ew di databasa ORACLE de bi komek pakêt û tabloyan ve ji bo organîzekirina ceribandina yekîneyê nexşeyek cihêreng e. Sazkirin çend saniyeyan digire. Taybetmendiyek cihêreng a utPLSQL karanîna wê hêsan e.
Di gerdûnî de, utPLSQL mekanîzmayek e ku ceribandinên yekîneyê dimeşîne, ku ceribandinek yekîneyê wekî prosedurên berhevokê yên Oracle-ê yên asayî tê fêm kirin, ku rêxistina wê hin qaîdeyan dişopîne. Digel destpêkirinê, utPLSQL têketinek hemî ceribandinên we hilîne, û di heman demê de pergalek ragihandina navxweyî jî heye.

Ka em li mînakek binêre ka koda testa yekîneyê çawa xuya dike, ku bi karanîna vê teknîkê hatî bicîh kirin.

Testên yekîneyê di DBMS-ê de - em çawa di Sportmaster-ê de, beşa yekê dikin

Ji ber vê yekê, ekran bi ceribandinên yekîneyê kodê ji bo taybetmendiyek pakêtek tîpîk nîşan dide. Pêdiviyên mecbûrî çi ne? Pêdivî ye ku pakêt bi pêşgira "utp_" be. Pêdivî ye ku hemî prosedurên bi testan re tam heman pêşgiran bin. Pêdivî ye ku pakêt du prosedurên standard hebin: "utp_setup" û "utp_teardown". Pêvajoya yekem bi destpêkirina ceribandina her yekîneyê ji nû ve tê gotin, ya duyemîn - piştî destpêkirinê.

"utp_setup", wekî qaîdeyek, pergala me amade dike ku ceribandinek yekîneyek bimeşîne, mînakî, afirandina daneyên testê. "utp_teardown" - berevajî vê, her tişt vedigere mîhengên orîjînal û encamên destpêkirinê vedigire.

Li vir mînakek ceribandina yekîneya herî hêsan e ku normalîzekirina jimareya têlefonê xerîdar li forma standard ji bo pergala meya dilsoziyê kontrol dike. Li ser awayê nivîsandina proseduran bi ceribandinên yekîneyê re standardên mecbûrî tune. Wekî qaîdeyek, bangek li rêbazek pergala di bin ceribandinê de tê kirin, û encama ku bi vê rêbazê hatî vegerandin bi ya referansê re tê berhev kirin. Girîng e ku berhevdana encama referansê û ya hatî bidestxistin bi rêbazên standard utPLSQL pêk were.

Testek yekîneyê dikare her jimareyek kontrolê hebe. Wekî ku ji nimûneyê tê dîtin, em çar bangên li pey hev ji rêbaza ceribandinê re dikin ku jimara têlefonê normal bikin û piştî her bangê encamê binirxînin. Dema ku ceribandinek yekîneyek pêşdixe, divê hûn hesab bikin ku kontrol hene ku bi tu awayî bandorê li pergalê nakin, û piştî hinan hûn hewce ne ku vegerin rewşa bingehîn a pergalê.
Mînakî, di ceribandina yekîneya pêşkêşkirî de em tenê jimara têlefona têlefonê format dikin, ku bi tu awayî bandorê li pergala dilsoziyê nake.

Û heke em ceribandinên yekîneyê bi karanîna rêbaza afirandina xerîdarek nû binivîsin, wê hingê piştî her ceribandinê dê xerîdarek nû di pergalê de were afirandin, ku dikare bandorê li destpêkirina ceribandinê ya paşîn bike.

Testên yekîneyê di DBMS-ê de - em çawa di Sportmaster-ê de, beşa yekê dikin

Bi vî rengî ceribandinên yekîneyê têne meşandin. Du vebijarkên destpêkirinê yên gengaz hene: meşandina hemî ceribandinên yekîneyê ji pakêtek taybetî an ceribandina yekîneyek taybetî di pakêtek taybetî de.

Testên yekîneyê di DBMS-ê de - em çawa di Sportmaster-ê de, beşa yekê dikin

Ev mînakek pergala raporkirina navxweyî ye. Li ser bingeha encamên testa yekîneyê, utPLSQL raporek piçûk ava dike. Di wê de em ji bo her kontrolek taybetî û encama giştî ya testa yekîneyê encam dibînin.

6 qaîdeyên autotests

Berî ku em dest bi afirandina pergalek nû ya ji bo ceribandina otomatîkî ya pergala dilsoziyê bikin, ligel rêveberiyê, me prensîbên ku divê ceribandinên meyên xweser ên pêşerojê bişopînin destnîşan kirin.

Testên yekîneyê di DBMS-ê de - em çawa di Sportmaster-ê de, beşa yekê dikin

  1. Divê ototest bi bandor bin û bikêr bin. Pêşdebirên me yên hêja hene, yên ku bê guman hewce ne ku werin gotin, ji ber ku hin ji wan belkî vê raporê bibînin, û ew kodek ecêb dinivîsin. Lê tewra koda wan a ecêb jî ne bêkêmasî ye û xeletî hene, hene û dê berdewam bikin. Ji bo dîtina van xeletiyan ototest hewce ne. Ger ne wisa be, wê demê yan em ototestên xerab dinivîsin, yan jî em hatine herêmek mirî ku, di prensîbê de, nayê pêşve xistin. Di her du rewşan de jî, em tiştekî xelet dikin, û nêzîkatiya me bi hêsanî nayê wateya.
  2. Divê ototests bêne bikaranîn. Bê wate ye ku meriv gelek dem û hewldan li ser nivîsandina hilberek nermalavê xerc bike, wê têxe depoyek û wê ji bîr bike. Divê îmtîhan bêne meşandin, û bi rêkûpêk ku gengaz be.
  3. Divê ototest bi îstîqrar bixebitin. Bêyî wextê rojê, standa destpêkirinê û mîhengên pergalê yên din, ceribandinên ceribandinê divê bibin sedema heman encamê. Wekî qaîdeyek, ev ji hêla rastiya ku ototest bi daneyên ceribandina taybetî yên bi mîhengên pergalê yên sabît re dixebitin ve tê piştrast kirin.
  4. Divê ototest bi lezek ku ji bo projeya we were pejirandin bixebitin. Ev dem ji bo her sîstemê ferdî tê diyarkirin. Hin kes dikarin bihêlin ku tevahiya rojê bixebitin, hinên din jî girîng dibînin ku ew di çirkeyan de bikin. Ez ê hinekî paşê ji we re vebêjim ka me di projeya xwe de çi standardên lezê bi dest xist.
  5. Pêşveçûna Autotest divê nerm be. Ne şîret e ku meriv ceribandina fonksiyonek tenê red bike ji ber ku me berê an ji ber sedemek din ew nekiriye. utPLSQL ti astengî li ser pêşkeftinê ferz nake, û Oracle, di prensîbê de, destûrê dide we ku hûn cûrbecûr tiştan bicîh bikin. Pir pirsgirêkan çareseriyek heye, ew tenê pirsgirêkek dem û hewldanê ye.
  6. Deployability. Gelek standên me hene ku divê em ceribandinan bikin. Li her stêrkek, dakêşek daneyê dikare di her kêliyê de were nûve kirin. Pêdivî ye ku projeyek bi ceribandinên otomatîkî bi vî rengî were meşandin ku hûn dikarin sazkirina wê ya tam an qismî bê êş pêk bînin.

Û di nivîsa duyemîn de di nav du rojan de ez ê ji we re vebêjim ku me çi kir û me çi encam bi dest xist.

Source: www.habr.com

Add a comment