Санҷишҳои воҳид дар DBMS - чӣ гуна мо инро дар Sportmaster мекунем, қисми якум

Эй Ҳабр!

Номи ман Максим Пономаренко ва ман таҳиягари Sportmaster ҳастам. Ман таҷрибаи 10-сола дар соҳаи IT дорам. Вай фаъолияти худро дар санҷиши дастӣ оғоз карда, сипас ба таҳияи пойгоҳи додаҳо гузашт. Дар тӯли 4 соли охир, ман донишҳои дар санҷиш ва таҳия гирифташударо ҷамъ карда, ман санҷишро дар сатҳи DBMS автоматикунонидаам.

Ман ҳамагӣ зиёда аз як сол дар дастаи Sportmaster будам ва санҷиши автоматикунонидашудаи яке аз лоиҳаҳои бузургро таҳия мекунам. Моҳи апрел, бачаҳо аз Sportmaster Lab ва ман дар як конфронс дар Краснодар суханронӣ кардем, гузориши ман "Санҷиши воҳидҳо дар DBMS" ном дошт ва ҳоло ман мехоҳам онро бо шумо мубодила кунам. Матни зиёде хоҳад буд, бинобар ин ман қарор додам, ки гузоришро ба ду паём тақсим кунам. Дар аввал, мо дар бораи автотестҳо ва умуман санҷиш сӯҳбат хоҳем кард ва дар дуюм, ман дар бораи системаи санҷиши воҳиди худ ва натиҷаҳои татбиқи он муфассалтар таваққуф мекунам.

Санҷишҳои воҳид дар DBMS - чӣ гуна мо инро дар Sportmaster мекунем, қисми якум

Аввалан, як назарияи каме дилгиркунанда. Санҷиши автоматӣ чист? Ин озмоишест, ки бо истифода аз нармафзор анҷом дода мешавад ва дар IT муосир он дар таҳияи нармафзор бештар истифода мешавад. Ин ба он вобаста аст, ки ширкатҳо афзоиш меёбанд, системаҳои иттилоотии онҳо афзоиш меёбанд ва мутаносибан миқдори функсияҳое, ки бояд санҷида шаванд, меафзояд. Гузаронидани санҷиши дастӣ торафт гаронтар мешавад.

Ман дар як ширкати бузург кор мекардам, ки нашрияҳояш ҳар ду моҳ мебароянд. Ҳамзамон, як моҳ барои он сарф шуд, ки даҳҳо озмоишгарон функсияҳоро дастӣ тафтиш кунанд. Ба шарофати татбиқи автоматикунонӣ аз ҷониби як гурӯҳи хурди таҳиягарон мо тавонистем вақти санҷишро дар якуним сол то 2 ҳафта кам кунем. Мо на фацат суръати санчишро зиёд кардем, балки сифати онро низ бехтар намудем. Санҷишҳои автоматӣ мунтазам оғоз карда мешаванд ва онҳо ҳамеша тамоми ҷараёни санҷишҳои ба онҳо дохилшударо иҷро мекунанд, яъне мо омили инсониро истисно мекунем.

IT-и муосир бо он тавсиф карда мешавад, ки аз таҳиягар на танҳо навиштани рамзи маҳсулот, балки инчунин навиштани санҷишҳои воҳиди санҷиши ин код талаб карда мешавад.

Аммо чӣ мешавад, агар системаи шумо асосан ба мантиқи сервер асос ёбад? Дар бозор ягон ҳалли универсалӣ ё таҷрибаҳои беҳтарин вуҷуд надорад. Чун қоида, ширкатҳо ин мушкилотро тавассути эҷоди системаи санҷиши худнависии худ ҳал мекунанд. Ин системаи автоматии санҷиши худи мост, ки дар лоиҳаи мо сохта шудааст ва ман дар ин бора дар гузориши худ сӯҳбат хоҳам кард.

Санҷишҳои воҳид дар DBMS - чӣ гуна мо инро дар Sportmaster мекунем, қисми якум

Санҷиши садоқат

Аввалан, биёед дар бораи лоиҳае сӯҳбат кунем, ки дар он мо системаи автоматии санҷишро ҷойгир кардем. Лоиҳаи мо ин системаи вафодории Sportmaster мебошад (дар омади гап, мо аллакай дар ин бора навишта будем ин пост).

Агар ширкати шумо ба қадри кофӣ калон бошад, пас системаи вафодории шумо дорои се хосияти стандартӣ хоҳад буд:

  • Системаи шумо хеле пурбор мешавад
  • Системаи шумо дорои равандҳои мураккаби ҳисоббарорӣ хоҳад буд
  • Системаи шумо фаъолона такмил дода мешавад.

Биёед, ба тартиб меравем... Дар маҷмӯъ, агар ҳамаи тамғаҳои Sportmaster-ро ба назар гирем, пас мо дар Русия, Украина, Чин, Қазоқистон ва Беларус зиёда аз 1000 мағоза дорем. Дар ин магазинхо хар руз кариб 300 хазор харид карда мешавад. Яъне дар хар сония 000—3 чек ба системаи мо дохил мешавад. Табиист, ки системаи вафодории мо хеле пурбор аст. Ва азбаски он фаъолона истифода мешавад, мо бояд стандартҳои баландтарини сифати онро таъмин кунем, зеро ҳар хатогӣ дар нармафзор маънои талафоти калони пулӣ, обрӯ ва дигарро дорад.

Ҳамзамон, Sportmaster зиёда аз сад таблиғоти гуногунро иҷро мекунад. Аксияҳои гуногун мавҷуданд: таблиғоти маҳсулот мавҷуданд, онҳое ҳастанд, ки ба рӯзи ҳафта бахшида шудаанд, онҳое ҳастанд, ки ба мағозаи мушаххас алоқаманданд, таблиғҳо барои маблағи квитансия мавҷуданд, барои шумораи молҳо ҳастанд. Умуман, бад нест. Мизоҷон бонусҳо ва рамзҳои таблиғотиро доранд, ки ҳангоми харид истифода мешаванд. Хамаи ин ба он оварда мерасонад, ки хисобу китоби хар як супориш кори хеле ночиз аст.

Алгоритм, ки коркарди фармоишро амалӣ мекунад, воқеан даҳшатнок ва мураккаб аст. Ва ҳама гуна тағирот ба ин алгоритм хеле хатарнок аст. Чунин ба назар мерасид, ки тағиротҳои ба назар ночиз метавонанд ба оқибатҳои хеле пешгӯинашаванда оварда расонанд. Аммо маҳз чунин равандҳои мураккаби ҳисоббарорӣ, махсусан онҳое, ки функсияҳои муҳимро амалӣ мекунанд, беҳтарин номзадҳо барои автоматизатсия мебошанд. Бо дастй тафтиш кардани даххо ходисахои ба ин монанд хеле вакт сарф мешавад. Ва азбаски нуқтаи воридшавӣ ба раванд бетағйир аст, онро як маротиба тавсиф карда, шумо метавонед зуд санҷишҳои автоматӣ эҷод кунед ва итминон ҳосил кунед, ки функсия кор хоҳад кард.

Азбаски системаи мо фаъолона истифода мешавад, бизнес аз шумо чизи нав мехоҳад, бо замон зиндагӣ мекунад ва ба мизоҷон нигаронида шудааст. Дар системаи вафодории мо, релизҳо ҳар ду моҳ мебароянд. Ин маънои онро дорад, ки мо бояд дар ҳар ду моҳ регрессияи пурраи тамоми системаро гузаронем. Дар айни замон, табиист, ки мисли ҳама гуна IT-и муосир, рушд фавран аз таҳиякунанда ба истеҳсолот намегузарад. Он дар схемаи таҳиякунанда пайдо мешавад, пас пай дар пай аз стенди санҷишӣ мегузарад, бароварда мешавад, қабул мекунад ва танҳо баъд дар истеҳсолот анҷом меёбад. Ҳадди ақал, дар схемаҳои санҷиш ва озодкунӣ, мо бояд регрессияи пурраи тамоми системаро анҷом диҳем.

Хусусиятҳои тавсифшуда барои қариб ҳама гуна системаи вафодорӣ стандартӣ мебошанд. Биёед дар бораи хусусиятҳои лоиҳаи худ сӯҳбат кунем.

Аз ҷиҳати технологӣ, 90% мантиқи системаи вафодории мо ба сервер асос ёфтааст ва дар Oracle амалӣ карда мешавад. Дар Delphi муштарӣ мавҷуд аст, ки вазифаи маъмури автоматии ҷои корро иҷро мекунад. Хидматҳои веб барои барномаҳои беруна (масалан, вебсайт) мавҷуданд. Аз ин рӯ, хеле мантиқист, ки агар мо системаи автоматии санҷишро ҷойгир кунем, мо онро дар Oracle иҷро хоҳем кард.

Системаи вафодорӣ дар Sportmaster зиёда аз 7 сол вуҷуд дорад ва аз ҷониби як таҳиягарон сохта шудааст... Шумораи миёнаи таҳиягарон дар лоиҳаи мо дар тӯли ин 7 сол 3-4 нафарро ташкил дод. Аммо дар давоми як соли охир коллективи мо хеле афзуд ва холо дар ин кор 10 кас кор мекунад. Яъне ба лоиҳа одамоне меоянд, ки бо вазифаҳо, равандҳо ва меъмории маъмулӣ шинос нестанд. Ва хатари аз даст додани хатогиҳо зиёд аст.

Лоиҳа бо набудани озмоишгарони махсус ҳамчун воҳидҳои кормандон тавсиф мешавад. Албатта, санҷиш вуҷуд дорад, аммо санҷишро таҳлилгарон ба ғайр аз дигар масъулиятҳои асосии онҳо анҷом медиҳанд: муошират бо муштариёни тиҷоратӣ, корбарон, таҳияи талаботи система ва ғайра. Ва ғайра... Сарфи назар аз он, ки санҷиш хеле босифат гузаронида мешавад (инро зикр кардан бамаврид аст, зеро баъзе аз таҳлилгарон метавонанд ба ин гузориш таваҷҷӯҳ кунанд), самаранокии ихтисос ва тамаркуз ба як чиз бекор карда нашудааст. .

Бо назардошти ҳамаи гуфтаҳои боло, барои беҳтар кардани сифати маҳсулоти расонидашуда ва кам кардани вақти коркард, идеяи автоматикунонии санҷиш дар лоиҳа хеле мантиқӣ ба назар мерасад. Ва дар марҳилаҳои гуногуни мавҷудияти системаи вафодорӣ, таҳиягарони инфиродӣ кӯшиш карданд, ки рамзи худро бо санҷишҳои воҳид фаро гиранд. Дар маҷмӯъ, ин як раванди хеле ҷудошуда буд, ки ҳама меъморӣ ва усулҳои худро истифода мебурданд. Натиҷаҳои ниҳоӣ барои санҷишҳои воҳид умумӣ буданд: санҷишҳо таҳия карда шуданд, барои муддате истифода шуданд, дар анбори файлҳои версиявӣ нигоҳ дошта шуданд, аммо дар баъзе лаҳзаҳо кор карданро қатъ карданд ва фаромӯш шуданд. Пеш аз хама, ин аз он сабаб буд, ки санҷишҳо бештар ба иҷрокунандаи мушаххас вобаста буданд, на ба лоиҳа.

utPLSQL ба наҷот меояд

Санҷишҳои воҳид дар DBMS - чӣ гуна мо инро дар Sportmaster мекунем, қисми якум

Оё шумо дар бораи Стивен Фейерштейн чизе медонед?

Ин як бачаи оқил аст, ки як қисми тӯлонии касбашро ба кор бо Oracle ва PL/SQL бахшидааст ва дар ин мавзӯъ шумораи хеле зиёди корҳо навиштааст. Яке аз китобҳои машҳури ӯ чунин ном дорад: “Oracle PL/SQL. Барои мутахассисон». Маҳз Стивен буд, ки ҳалли utPLSQL-ро таҳия кардааст, ё ба тавре ки он чаҳорчӯбаи санҷиши воҳидиро барои Oracle PL/SQL таҳия кардааст. Ҳалли utPLSQL дар соли 2016 сохта шудааст, аммо кораш фаъолона идома дорад ва версияҳои нав бароварда мешаванд. Дар замони гузориш, версияи охирин ба 24 марти соли 2019 рост меояд.
Ин чист. Ин лоиҳаи алоҳидаи кушодаасос аст. Он якчанд мегабайт вазн дорад, аз ҷумла мисолҳо ва ҳуҷҷатҳо. Аз ҷиҳати ҷисмонӣ, он як схемаи алоҳида дар пойгоҳи додаҳои ORACLE бо маҷмӯи бастаҳо ва ҷадвалҳо барои ташкили санҷиши воҳидҳо мебошад. Насбкунӣ чанд сонияро мегирад. Хусусияти фарқкунандаи utPLSQL осонии истифодаи он мебошад.
Дар саросари ҷаҳон, utPLSQL як механизми иҷро кардани санҷишҳои воҳидҳо мебошад, ки дар он санҷиши воҳид ҳамчун расмиёти оддии партияи Oracle фаҳмида мешавад, ки ташкили он қоидаҳои муайянро риоя мекунад. Илова ба оғозёбӣ, utPLSQL сабти ҳамаи санҷишҳои шуморо нигоҳ медорад ва инчунин дорои системаи ҳисоботдиҳии дохилӣ мебошад.

Биёед мисолеро бубинем, ки рамзи санҷиши воҳид чӣ гуна аст, ки бо истифода аз ин техника амалӣ карда мешавад.

Санҷишҳои воҳид дар DBMS - чӣ гуна мо инро дар Sportmaster мекунем, қисми якум

Ҳамин тавр, экран рамзи мушаххасоти муқаррарии бастаро бо санҷишҳои воҳид нишон медиҳад. Талаботи ҳатмӣ кадомҳоянд? Баста бояд префикси "utp_" бошад. Ҳама расмиёти санҷишҳо бояд префикси якхела дошта бошанд. Баста бояд ду тартиби стандартиро дар бар гирад: “utp_setup” ва “utp_teardown”. Тартиби аввал бо аз нав оғоз кардани ҳар як санҷиши воҳид даъват карда мешавад, дуюм - пас аз оғоз.

"utp_setup", чун қоида, системаи моро барои иҷро кардани санҷиши воҳид омода мекунад, масалан, эҷоди маълумоти санҷишӣ. "utp_teardown" - баръакс, ҳама чиз ба танзимоти аслӣ бармегардад ва натиҷаҳои оғозёбиро барқарор мекунад.

Ин аст як мисоли оддитарин санҷиши воҳид, ки муқаррар кардани рақами телефони муштарии воридшударо ба шакли стандартии системаи вафодории мо тафтиш мекунад. Стандартҳои ҳатмӣ оид ба тарзи навиштани расмиёти санҷишҳои воҳид вуҷуд надоранд. Одатан, ба усули системаи санҷидашуда занг зада мешавад ва натиҷаи бо ин усул баргардонидашуда бо усули истинод муқоиса карда мешавад. Муҳим он аст, ки муқоисаи натиҷаи истинод ва натиҷаи бадастомада тавассути усулҳои стандартии utPLSQL сурат мегирад.

Санҷиши воҳид метавонад ҳама гуна санҷишҳоро дошта бошад. Тавре ки аз мисол дида мешавад, мо чор занги пай дар пай ба усули озмудашуда барои ба эътидол овардани рақами телефон ва баҳодиҳии натиҷа пас аз ҳар занг. Ҳангоми таҳияи санҷиши воҳид, шумо бояд ба назар гиред, ки санҷишҳое мавҷуданд, ки ба ҳеҷ ваҷҳ ба система таъсир намерасонанд ва пас аз чанде шумо бояд ба ҳолати аслии система баргардед.
Масалан, дар санҷиши воҳиди пешниҳодшуда мо танҳо рақами телефони воридшударо формат мекунем, ки ба ҳеҷ ваҷҳ ба системаи вафодорӣ таъсир намерасонад.

Ва агар мо бо истифода аз усули эҷоди муштарии нав санҷишҳои воҳидиро нависед, пас пас аз ҳар як санҷиш дар система муштарии нав эҷод мешавад, ки метавонад ба оғози минбаъдаи санҷиш таъсир расонад.

Санҷишҳои воҳид дар DBMS - чӣ гуна мо инро дар Sportmaster мекунем, қисми якум

Санҷишҳои воҳидҳо ҳамин тавр иҷро мешаванд. Ду имконоти имконпазири оғозёбӣ мавҷуданд: иҷро кардани ҳама санҷишҳои воҳидҳо аз бастаи мушаххас ё гузаронидани санҷиши воҳиди мушаххас дар бастаи мушаххас.

Санҷишҳои воҳид дар DBMS - чӣ гуна мо инро дар Sportmaster мекунем, қисми якум

Намунаи системаи ҳисоботдиҳии дохилӣ ин аст. Дар асоси натиҷаҳои санҷиши воҳид, utPLSQL ҳисоботи хурд месозад. Дар он мо натиҷаи ҳар як санҷиши мушаххас ва натиҷаи умумии санҷиши воҳидро мебинем.

6 қоидаҳои санҷиши автоматӣ

Пеш аз оғози сохтани системаи нави санҷиши автоматии системаи вафодорӣ, мо якҷоя бо роҳбарият, мо принсипҳоеро муайян кардем, ки санҷишҳои автоматии ояндаи мо бояд ба онҳо мувофиқат кунанд.

Санҷишҳои воҳид дар DBMS - чӣ гуна мо инро дар Sportmaster мекунем, қисми якум

  1. Автотестҳо бояд самаранок ва муфид бошанд. Мо таҳиягарони олиҷаноб дорем, ки онҳоро ҳатман бояд зикр кард, зеро баъзеи онҳо эҳтимол ин гузоришро хоҳанд дид ва онҳо рамзи олиҷаноб менависанд. Аммо ҳатто рамзи аҷиби онҳо комил нест ва дорои хатогиҳост, дорад ва боқӣ хоҳад монд. Барои дарёфти ин хатогиҳо санҷишҳои автоматӣ лозиманд. Агар ин тавр набошад, пас ё мо автотестхои бад менависем, ё ба майдони мурдае расидаем, ки аслан кор карда намешавад. Дар ҳарду ҳолат, мо кори нодуруст карда истодаем ва муносибати мо танҳо маъно надорад.
  2. Автотестҳо бояд истифода шаванд. Барои навиштани маҳсулоти нармафзор вақт ва кӯшиши зиёд сарф кардан, онро дар анбор гузоштан ва фаромӯш кардан ҳеҷ маъно надорад. Санҷишҳо бояд то ҳадди имкон мунтазам гузаронида шаванд.
  3. Автотестхо бояд муътадил кор кунанд. Новобаста аз вақти рӯз, стенди оғозёбӣ ва дигар танзимоти система, озмоишҳо бояд ба як натиҷа оварда расонанд. Одатан, ин бо он таъмин карда мешавад, ки автотестҳо бо маълумотҳои махсуси санҷишӣ бо танзимоти собит система кор мекунанд.
  4. Автотестҳо бояд бо суръати қобили қабул барои лоиҳаи шумо кор кунанд. Ин вақт барои ҳар як система алоҳида муайян карда мешавад. Баъзе одамон метавонанд тамоми рӯз кор кунанд, дар ҳоле ки дигарон ин корро дар сонияҳо муҳим медонанд. Ман каме дертар ба шумо мегӯям, ки мо дар лоиҳаи худ кадом стандартҳои суръатро ба даст овардаем.
  5. Таҳияи автотест бояд чандир бошад. Тавсия дода намешавад, ки аз санҷиши ягон функсия даст кашем, зеро мо онро қаблан иҷро накардаем ё бо ягон сабаб. utPLSQL барои рушд ҳеҷ гуна маҳдудият ҷорӣ намекунад ва Oracle, аслан, ба шумо имкон медиҳад, ки чизҳои гуногунро амалӣ кунед. Аксари мушкилот ҳалли худро доранд, ин танҳо як масъалаи вақт ва кӯшиш аст.
  6. Ҷойгиршавӣ. Мо якчанд стенд дорем, ки мо бояд санҷишҳоро гузаронем. Дар ҳар як стенд, партови маълумот метавонад дар вақти дилхоҳ нав карда шавад. Лоиҳаро бо санҷишҳои автоматӣ тавре анҷом додан лозим аст, ки шумо метавонед насби пурра ё қисман онро бедард анҷом диҳед.

Ва дар пости дуюм баъд аз чанд рӯз ба шумо мегӯям, ки мо чӣ кор кардем ва чӣ натиҷаҳо ба даст овардем.

Манбаъ: will.com

Илова Эзоҳ