Äau Habr!
Mani sauc Maksims Ponomarenko, un es esmu Sportmaster izstrÄdÄtÄjs. Man ir 10 gadu pieredze IT jomÄ. ViÅÅ” sÄka savu karjeru manuÄlajÄ testÄÅ”anÄ, pÄc tam pÄrgÄja uz datu bÄzes izstrÄdi. PÄdÄjos 4 gadus, uzkrÄjot testÄÅ”anÄ un izstrÄdÄ iegÅ«tÄs zinÄÅ”anas, automatizÄju testÄÅ”anu DBVS lÄ«menÄ«.
Esmu Sportmaster komandÄ tikai nedaudz vairÄk kÄ gadu un izstrÄdÄju automatizÄtu testÄÅ”anu vienam no lielÄkajiem projektiem. AprÄ«lÄ« puiÅ”i no Sportmaster Lab un es runÄjÄm konferencÄ KrasnodarÄ, mans ziÅojums saucÄs āVienÄ«bu testi DBVSā, un tagad es vÄlos tajÄ dalÄ«ties ar jums. Teksta bÅ«s daudz, tÄpÄc es nolÄmu ziÅojumu sadalÄ«t divos ierakstos. PirmajÄ runÄsim par automÄtiskajiem testiem un testÄÅ”anu kopumÄ, bet otrajÄ es sÄ«kÄk pakavÄÅ”os pie mÅ«su vienÄ«bu testÄÅ”anas sistÄmas un tÄs piemÄroÅ”anas rezultÄtiem.
PirmkÄrt, nedaudz garlaicÄ«ga teorija. Kas ir automatizÄtÄ testÄÅ”ana? Å Ä« ir testÄÅ”ana, kas tiek veikta, izmantojot programmatÅ«ru, un mÅ«sdienu IT to arvien vairÄk izmanto programmatÅ«ras izstrÄdÄ. Tas ir saistÄ«ts ar to, ka uzÅÄmumi aug, to informÄcijas sistÄmas aug un attiecÄ«gi pieaug arÄ« pÄrbaudÄmÄs funkcionalitÄtes apjoms. ManuÄlas pÄrbaudes veikÅ”ana kļūst arvien dÄrgÄka.
Es strÄdÄju lielÄ uzÅÄmumÄ, kura izlaidumi iznÄk reizi divos mÄneÅ”os. TajÄ paÅ”Ä laikÄ vesels mÄnesis tika pavadÄ«ts, lai desmitiem testÄtÄju manuÄli pÄrbaudÄ«tu funkcionalitÄti. Pateicoties automatizÄcijas ievieÅ”anai, ko veica neliela izstrÄdÄtÄju komanda, pusotra gada laikÄ mÄs varÄjÄm samazinÄt testÄÅ”anas laiku lÄ«dz 2 nedÄļÄm. Esam ne tikai palielinÄjuÅ”i testÄÅ”anas Ätrumu, bet arÄ« uzlabojuÅ”i tÄs kvalitÄti. AutomÄtiskie testi tiek palaisti regulÄri, un tie vienmÄr veic visu tajos iekļauto pÄrbaužu kursu, tas ir, mÄs izslÄdzam cilvÄcisko faktoru.
MÅ«sdienu IT ir raksturÄ«gs ar to, ka izstrÄdÄtÄjam var pieprasÄ«t ne tikai rakstÄ«t produkta kodu, bet arÄ« rakstÄ«t vienÄ«bas testus, kas pÄrbauda Å”o kodu.
Bet ko darÄ«t, ja jÅ«su sistÄma galvenokÄrt balstÄs uz servera loÄ£iku? TirgÅ« nav universÄla risinÄjuma vai labÄkÄs prakses. Parasti uzÅÄmumi Å”o problÄmu risina, izveidojot paÅ”i savu rakstÄ«to testÄÅ”anas sistÄmu. Å Ä« ir mÅ«su paÅ”u rakstÄ«tÄ automatizÄtÄ testÄÅ”anas sistÄma, kas tika izveidota mÅ«su projektÄ, un es par to runÄÅ”u savÄ ziÅojumÄ.
LojalitÄtes pÄrbaude
PirmkÄrt, parunÄsim par projektu, kurÄ mÄs izvietojÄm automatizÄtu testÄÅ”anas sistÄmu. MÅ«su projekts ir Sportmaster lojalitÄtes sistÄma (starp citu, par to jau rakstÄ«jÄm
Ja jÅ«su uzÅÄmums ir pietiekami liels, tad jÅ«su lojalitÄtes sistÄmai bÅ«s trÄ«s standarta Ä«paŔības:
- JÅ«su sistÄma bÅ«s ļoti noslogota
- JÅ«su sistÄmÄ bÅ«s sarežģīti skaitļoÅ”anas procesi
- JÅ«su sistÄma tiks aktÄ«vi uzlabota.
Ejam kÄrtÄ«bÄ... KopumÄ, ja Åemam vÄrÄ visus Sportmaster zÄ«molus, tad mums ir vairÄk nekÄ 1000 veikalu KrievijÄ, UkrainÄ, ĶīnÄ, KazahstÄnÄ un BaltkrievijÄ. Å ajos veikalos katru dienu tiek veikti aptuveni 300 000 pirkumu. Tas nozÄ«mÄ, ka katra otrÄ 3-4 pÄrbaudes nonÄk mÅ«su sistÄmÄ. Protams, mÅ«su lojalitÄtes sistÄma ir ļoti noslogota. Un tÄ kÄ tÄ tiek aktÄ«vi izmantota, mums jÄnodroÅ”ina visaugstÄkie tÄs kvalitÄtes standarti, jo jebkura programmatÅ«ras kļūda nozÄ«mÄ lielus naudas, reputÄcijas un citus zaudÄjumus.
TajÄ paÅ”Ä laikÄ Sportmaster rÄ«ko vairÄk nekÄ simts dažÄdu akciju. Akcijas ir visdažÄdÄkÄs: ir preÄu akcijas, ir nedÄļas dienai veltÄ«tÄs, ir piesietas konkrÄtam veikalam, ir akcijas par Äeka summu, ir par preÄu skaitu. KopumÄ nav slikti. Klientiem ir bonusi un reklÄmas kodi, kas tiek izmantoti, veicot pirkumus. Tas viss noved pie tÄ, ka jebkura pasÅ«tÄ«juma aprÄÄ·inÄÅ”ana ir ļoti nenozÄ«mÄ«gs uzdevums.
Algoritms, kas Ä«steno pasÅ«tÄ«jumu apstrÄdi, ir patiesi briesmÄ«gs un sarežģīts. Un jebkuras izmaiÅas Å”ajÄ algoritmÄ ir diezgan riskantas. Å Ä·ita, ka Ŕķietami nenozÄ«mÄ«gÄkÄs izmaiÅas var radÄ«t diezgan neparedzamas sekas. Bet tieÅ”i Å”Ädi sarežģīti skaitļoÅ”anas procesi, Ä«paÅ”i tie, kas Ä«steno kritisko funkcionalitÄti, ir vislabÄkie automatizÄcijas kandidÄti. Desmitiem lÄ«dzÄ«gu lietu pÄrbaude ar rokÄm ir ļoti laikietilpÄ«ga. Un tÄ kÄ procesa ieejas punkts nav mainÄ«ts, to vienreiz aprakstot, varat Ätri izveidot automÄtiskos testus un bÅ«t pÄrliecinÄti, ka funkcionalitÄte darbosies.
TÄ kÄ mÅ«su sistÄma tiek aktÄ«vi izmantota, bizness vÄlÄsies no jums kaut ko jaunu, dzÄ«vos lÄ«dzi laikam un bÅ«s orientÄts uz klientu. MÅ«su lojalitÄtes sistÄmÄ izlaidumi tiek izdoti ik pÄc diviem mÄneÅ”iem. Tas nozÄ«mÄ, ka ik pÄc diviem mÄneÅ”iem mums ir jÄveic pilnÄ«ga visas sistÄmas regresija. TajÄ paÅ”Ä laikÄ, protams, tÄpat kÄ jebkurÄ modernÄ IT, izstrÄde uzreiz nepÄriet no izstrÄdÄtÄja uz ražoÅ”anu. TÄ izcelsme ir izstrÄdÄtÄja Ä·ÄdÄ, pÄc tam secÄ«gi iziet cauri testa stendam, izlaiž, pieÅem un tikai pÄc tam nonÄk ražoÅ”anÄ. Vismaz pÄrbaudes un atbrÄ«voÅ”anas shÄmÄs mums ir jÄveic pilnÄ«ga visas sistÄmas regresija.
AprakstÄ«tÄs Ä«paŔības ir standarta gandrÄ«z jebkurai lojalitÄtes sistÄmai. ParunÄsim par mÅ«su projekta iezÄ«mÄm.
TehnoloÄ£iski 90% mÅ«su lojalitÄtes sistÄmas loÄ£ikas ir balstÄ«ta uz serveri un ieviesta Oracle. Delfos ir eksponÄts klients, kurÅ” veic automatizÄtas darba vietas administratora funkciju. Ir pieejami tÄ«mekļa pakalpojumi ÄrÄjÄm lietojumprogrammÄm (piemÄram, vietnei). TÄpÄc ir ļoti loÄ£iski, ka, ja mÄs izvietosim automatizÄtu testÄÅ”anas sistÄmu, mÄs to darÄ«sim Oracle.
LojalitÄtes sistÄma Sportmaster pastÄv jau vairÄk kÄ 7 gadus un to veidoja atseviŔķi izstrÄdÄtÄji... VidÄjais izstrÄdÄtÄju skaits mÅ«su projektÄ Å”ajos 7 gados bija 3-4 cilvÄki. TaÄu pÄdÄjÄ gada laikÄ mÅ«su komanda ir ievÄrojami augusi, un Å”obrÄ«d pie projekta strÄdÄ 10 cilvÄki. Tas ir, projektÄ ierodas cilvÄki, kuri nav pazÄ«stami ar tipiskiem uzdevumiem, procesiem un arhitektÅ«ru. Un ir paaugstinÄts risks, ka mÄs palaidÄ«sim garÄm kļūdas.
Projektu raksturo tas, ka nav Ä«paÅ”u testÄtÄju kÄ personÄla vienÄ«bu. Protams, ir arÄ« testÄÅ”ana, taÄu testÄÅ”anu veic analÄ«tiÄ·i papildus citiem saviem galvenajiem pienÄkumiem: saziÅai ar biznesa klientiem, lietotÄjiem, sistÄmas prasÄ«bu izstrÄdei utt. utt... Neraugoties uz to, ka testÄÅ”ana tiek veikta ļoti kvalitatÄ«vi (to ir Ä«paÅ”i vÄrts pieminÄt, jo daži analÄ«tiÄ·i var iekrist Å”ajÄ ziÅojumÄ), specializÄcijas efektivitÄte un koncentrÄÅ”anÄs uz vienu lietu nav atcelta .
Å emot vÄrÄ visu iepriekÅ” minÄto, lai uzlabotu piegÄdÄtÄ produkta kvalitÄti un samazinÄtu izstrÄdes laiku, ideja automatizÄt projekta testÄÅ”anu Ŕķiet ļoti loÄ£iska. Un dažÄdos lojalitÄtes sistÄmas pastÄvÄÅ”anas posmos atseviŔķi izstrÄdÄtÄji centÄs pÄrklÄt savu kodu ar vienÄ«bu testiem. KopumÄ tas bija diezgan nesavienots process, kurÄ katrs izmantoja savu arhitektÅ«ru un metodes. GalÄ«gie rezultÄti bija kopÄ«gi vienÄ«bu testiem: testi tika izstrÄdÄti, kÄdu laiku izmantoti, glabÄti versiju failu krÄtuvÄ, bet kÄdÄ brÄ«dÄ« tie pÄrstÄja darboties un tika aizmirsti. PirmkÄrt, tas bija saistÄ«ts ar faktu, ka testi vairÄk tika piesaistÄ«ti konkrÄtam izpildÄ«tÄjam, nevis projektam.
utPLSQL nÄk palÄ«gÄ
Vai jÅ«s kaut ko zinÄt par StÄ«venu FeuerÅ”teinu?
Å is ir gudrs puisis, kurÅ” ilgu savas karjeras daļu veltÄ«jis darbam ar Oracle un PL/SQL, un par Å”o tÄmu ir uzrakstÄ«jis diezgan daudz darbu. Viena no viÅa slavenajÄm grÄmatÄm saucas: āOracle PL/SQL. ProfesionÄļiem." Tas bija StÄ«vens, kurÅ” izstrÄdÄja Oracle PL/SQL utPLSQL risinÄjumu jeb, kÄ tas nozÄ«mÄ, Unit Testing ietvaru. utPLSQL risinÄjums tika izveidots 2016. gadÄ, taÄu pie tÄ turpina aktÄ«vi strÄdÄt un tiek izdotas jaunas versijas. PÄrskata sniegÅ”anas brÄ«dÄ« jaunÄkÄ versija ir datÄta ar 24. gada 2019. martu.
Kas tas ir. Å is ir atseviŔķs atvÄrtÄ koda projekts. Tas sver pÄris megabaitus, ieskaitot piemÄrus un dokumentÄciju. Fiziski tÄ ir atseviŔķa shÄma ORACLE datu bÄzÄ ar pakotÅu un tabulu komplektu vienÄ«bu testÄÅ”anas organizÄÅ”anai. InstalÄÅ”ana aizÅem dažas sekundes. AtŔķirÄ«ga utPLSQL iezÄ«me ir tÄ lietoÅ”anas vienkÄrŔība.
GlobÄli utPLSQL ir vienÄ«bas testu palaiÅ”anas mehÄnisms, kur vienÄ«bas tests tiek saprasts kÄ parastas Oracle pakeÅ”u procedÅ«ras, kuru organizÄÅ”anÄ tiek ievÄroti noteikti noteikumi. Papildus palaiÅ”anai utPLSQL saglabÄ visu jÅ«su testa darbÄ«bu žurnÄlu, kÄ arÄ« tajÄ ir iekÅ”Äja ziÅoÅ”anas sistÄma.
ApskatÄ«sim piemÄru, kÄ izskatÄs vienÄ«bas pÄrbaudes kods, kas ieviests, izmantojot Å”o paÅÄmienu.
TÄtad ekrÄnÄ tiek parÄdÄ«ts tipiskas pakotnes specifikÄcijas kods ar vienÄ«bu testiem. KÄdas ir obligÄtÄs prasÄ«bas? Paketes prefiksam jÄbÅ«t "utp_". VisÄm procedÅ«rÄm ar testiem jÄbÅ«t tieÅ”i tÄdam paÅ”am prefiksam. PakotnÄ jÄietver divas standarta procedÅ«ras: āutp_setupā un āutp_teardownā. PirmÄ procedÅ«ra tiek izsaukta, restartÄjot katru vienÄ«bas pÄrbaudi, otrÄ - pÄc palaiÅ”anas.
āutp_setupā, kÄ likums, sagatavo mÅ«su sistÄmu, lai palaistu vienÄ«bas testu, piemÄram, izveidojot testa datus. āutp_teardownā - gluži pretÄji, viss atgriežas sÄkotnÄjos iestatÄ«jumos un atiestata palaiÅ”anas rezultÄtus.
Å eit ir piemÄrs vienkÄrÅ”Äkajai vienÄ«bas pÄrbaudei, kas pÄrbauda ievadÄ«tÄ klienta tÄlruÅa numura normalizÄÅ”anu mÅ«su lojalitÄtes sistÄmas standarta veidlapÄ. Nav obligÄtu standartu, kÄ rakstÄ«t procedÅ«ras ar vienÄ«bas testiem. Parasti tiek izsaukta pÄrbaudÄmÄs sistÄmas metode, un Ŕīs metodes atgrieztais rezultÄts tiek salÄ«dzinÄts ar atsauces metodi. Ir svarÄ«gi, lai atsauces un iegÅ«tÄ rezultÄta salÄ«dzinÄÅ”ana notiktu, izmantojot standarta utPLSQL metodes.
VienÄ«bas testÄ var bÅ«t neierobežots skaits pÄrbaužu. KÄ redzams no piemÄra, mÄs veicam Äetrus secÄ«gus zvanus uz pÄrbaudÄ«to metodi, lai normalizÄtu tÄlruÅa numuru un novÄrtÄtu rezultÄtu pÄc katra zvana. IzstrÄdÄjot vienÄ«bas testu, ir jÄÅem vÄrÄ, ka ir pÄrbaudes, kas nekÄdÄ veidÄ neietekmÄ sistÄmu, un pÄc dažÄm jums ir jÄatgriežas sÄkotnÄjÄ sistÄmas stÄvoklÄ«.
PiemÄram, prezentÄtajÄ vienÄ«bas testÄ mÄs vienkÄrÅ”i formatÄjam ievades tÄlruÅa numuru, kas nekÄdi neietekmÄ lojalitÄtes sistÄmu.
Un, ja mÄs rakstÄm vienÄ«bas testus, izmantojot jauna klienta izveides metodi, tad pÄc katras pÄrbaudes sistÄmÄ tiks izveidots jauns klients, kas var ietekmÄt turpmÄko testa palaiÅ”anu.
Å Ädi tiek veikti vienÄ«bu testi. Ir divas iespÄjamÄs palaiÅ”anas opcijas: visu vienÄ«bu testu izpilde no noteiktas pakotnes vai noteiktas vienÄ«bas pÄrbaudes veikÅ”ana noteiktÄ pakotnÄ.
Å Ädi izskatÄs iekÅ”ÄjÄs ziÅoÅ”anas sistÄmas piemÄrs. Pamatojoties uz vienÄ«bas pÄrbaudes rezultÄtiem, utPLSQL izveido nelielu pÄrskatu. TajÄ mÄs redzam katras konkrÄtÄs pÄrbaudes rezultÄtu un kopÄjo vienÄ«bas testa rezultÄtu.
6 automÄtiskÄs pÄrbaudes noteikumi
Pirms sÄkam veidot jaunu lojalitÄtes sistÄmas automatizÄtÄs testÄÅ”anas sistÄmu, kopÄ ar vadÄ«bu noteicÄm principus, kÄdiem bÅ«tu jÄatbilst mÅ«su turpmÄkajÄm automatizÄtajÄm pÄrbaudÄm.
- AutomÄtiskajiem testiem ir jÄbÅ«t efektÄ«viem un noderÄ«giem. Mums ir brÄ«niŔķīgi izstrÄdÄtÄji, kuri noteikti ir jÄpiemin, jo daži no viÅiem, iespÄjams, redzÄs Å”o ziÅojumu, un viÅi raksta brÄ«niŔķīgu kodu. Bet pat viÅu brÄ«niŔķīgais kods nav ideÄls, un tajÄ ir, ir un joprojÄm bÅ«s kļūdas. Lai atrastu Ŕīs kļūdas, ir jÄveic automÄtiskÄs pÄrbaudes. Ja tas tÄ nav, tad vai nu mÄs rakstÄm sliktus autotestus, vai arÄ« esam nonÄkuÅ”i miruÅ”Ä vietÄ, kas principÄ netiek izstrÄdÄta. Abos gadÄ«jumos mÄs darÄm kaut ko nepareizi, un mÅ«su pieejai vienkÄrÅ”i nav jÄgas.
- JÄizmanto automÄtiskÄs pÄrbaudes. Nav jÄgas tÄrÄt daudz laika un pūļu programmatÅ«ras produkta rakstÄ«Å”anai, ievietot to repozitorijÄ un aizmirst. Testi ir jÄveic un jÄveic pÄc iespÄjas regulÄri.
- AutomÄtiskajiem testiem vajadzÄtu darboties stabili. NeatkarÄ«gi no diennakts laika, palaiÅ”anas stenda un citiem sistÄmas iestatÄ«jumiem, testa braucieniem vajadzÄtu dot tÄdu paÅ”u rezultÄtu. Parasti to nodroÅ”ina fakts, ka automÄtiskÄs pÄrbaudes darbojas ar Ä«paÅ”iem testa datiem ar fiksÄtiem sistÄmas iestatÄ«jumiem.
- AutomÄtiskajiem testiem ir jÄdarbojas jÅ«su projektam pieÅemamÄ ÄtrumÄ. Å is laiks tiek noteikts katrai sistÄmai individuÄli. Daži cilvÄki var atļauties strÄdÄt visu dienu, savukÄrt citi uzskata, ka ir ļoti svarÄ«gi to izdarÄ«t dažu sekunžu laikÄ. Es jums pastÄstÄ«Å”u nedaudz vÄlÄk, kÄdus Ätruma standartus mÄs sasniedzÄm savÄ projektÄ.
- AutomÄtiskÄs pÄrbaudes izstrÄdei jÄbÅ«t elastÄ«gai. Nav ieteicams atteikties no jebkuras funkcionalitÄtes testÄÅ”anas tikai tÄpÄc, ka mÄs to iepriekÅ” neesam darÄ«juÅ”i vai kÄda cita iemesla dÄļ. utPLSQL neuzliek nekÄdus ierobežojumus attÄ«stÄ«bai, un Oracle principÄ Ä¼auj ieviest dažÄdas lietas. LielÄkajai daļai problÄmu ir risinÄjums, tas ir tikai laika un pūļu jautÄjums.
- IzvietojamÄ«ba. Mums ir vairÄki stendi, kur jÄveic testi. KatrÄ stendÄ datu izgÄztuve var tikt atjauninÄta jebkurÄ laikÄ. Ir nepiecieÅ”ams veikt projektu ar automÄtiskÄm pÄrbaudÄm tÄ, lai jÅ«s varÄtu nesÄpÄ«gi veikt tÄ pilnÄ«gu vai daļÄju uzstÄdÄ«Å”anu.
Un otrajÄ ierakstÄ pÄc pÄris dienÄm pastÄstÄ«Å”u, ko mÄs darÄ«jÄm un kÄdus rezultÄtus sasniegÄm.
Avots: www.habr.com