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

Қисми аввал - дар ин ҷо.

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

Вазъиятро тасаввур кунед. Шумо бо вазифаи таҳияи функсияҳои нав рӯ ба рӯ мешавед. Шумо аз пешгузаштагони худ пешрафтҳо доред. Агар фарз кунем, ки шумо ӯҳдадориҳои ахлоқӣ надоред, шумо чӣ кор мекардед?

Аксар вақт, ҳама пешрафтҳои кӯҳна фаромӯш мешаванд ва ҳама чиз аз нав оғоз меёбад. Ҳеҷ кас намехоҳад, ки коди ягон каси дигарро кобед, аммо агар шумо вақт дошта бошед, чаро ба сохтани системаи шахсии худ шурӯъ накунед? Ин як равиши маъмулист ва он асосан дуруст аст. Аммо дар лоихаи худ мо ин корро хато кардем. Мо системаи санҷиши автоматии ояндаро ба пешрафтҳои санҷишҳои воҳиди utPLSQL аз пешгузаштагони худ асос додем ва сипас дар якчанд самтҳои мувозӣ кор кардем.

  1. Барқарор кардани санҷишҳои воҳиди кӯҳна. Барқароркунӣ маънои мутобиқ кардани санҷишҳоро ба ҳолати мавҷудаи системаи вафодорӣ ва мутобиқ кардани санҷишҳо ба стандартҳои utPLSQL дорад.
  2. Ҳалли масъала бо фаҳмидани он ки маҳз чӣ, кадом усулҳо ва равандҳо бо автотестҳо фаро гирифта шудаанд. Шумо бояд ин маълумотро дар сари худ нигоҳ доред, ё бевосита дар асоси рамзи автотест хулоса бароред. Бинобар ин, мо тасмим гирифтем, ки феҳрист эҷод кунем. Мо ба ҳар як санҷиши автоматӣ рамзи мнемоникии беназир таъин кардем, тавсиф ва танзимотро сабт кардем (масалан, дар кадом шароит онро оғоз кардан лозим аст ё агар оғози санҷиш ноком шавад, чӣ мешавад). Аслан, мо метамаълумотро дар бораи автотестҳо пур кардем ва он метадатаро дар ҷадвалҳои схемаи стандартии utPLSQL ҷойгир кардем.
  3. Муайян кардани стратегияи густариш, яъне. интихоби функсияҳое, ки бояд тавассути санҷишҳои автоматӣ тафтиш карда шаванд. Мо тасмим гирифтем, ки ба се чиз диққат диҳем: такмилдиҳии система, ҳодисаҳои истеҳсолӣ ва равандҳои асосии система. Ҳамин тариқ, мо дар баробари баровардан, сифати баландтари онро таъмин карда, ҳамзамон доираи регрессияро васеъ мекунем ва эътимоднокии системаро дар ҷойҳои муҳим таъмин мекунем. Аввалин чунин мушкилӣ раванди тақсими тахфифҳо ва мукофотпулӣ дар чек буд.
  4. Табиист, ки мо ба таҳияи автотестҳои нав шурӯъ кардем. Яке аз аввалин вазифаҳои нашршуда арзёбии иҷрои намунаҳои пешакӣ муайяншудаи системаи вафодорӣ буд. Лоиҳаи мо дорои як блоки пурсишҳои қатъии SQL мебошад, ки муштариёнро дар асоси шароит интихоб мекунанд. Масалан, рӯйхати ҳамаи муштариёнеро, ки охирин харидашон дар як шаҳри мушаххас сурат гирифтааст, ё рӯйхати муштариёнеро, ки маблағи миёнаи харидашон аз арзиши муайян зиёд аст, гиред. Пас аз санҷишҳои хаттӣ, мо намунаҳои пешакӣ муайяншударо тафтиш кардем, параметрҳои иҷроиро сабт кардем ва илова бар ин мо озмоиши сарборӣ кардем.
  5. Кор бо автотестҳо бояд қулай бошад. Ду амали маъмултарин иҷро кардани санҷишҳои автоматӣ ва эҷоди маълумоти санҷишӣ мебошанд. Ҳамин тавр дар системаи мо ду модули ёрирасон пайдо шуд: модули оғозёбӣ ва модули тавлиди маълумот.

    Оғозкунанда ҳамчун як тартиби универсалӣ бо як параметри вуруди матн муаррифӣ карда мешавад. Ҳамчун параметр, шумо метавонед рамзи мнемоникии автоматӣ, номи бастаҳо, номи санҷиш, танзимоти автоматӣ ё калимаи калидии ҳифзшударо гузаронед. Тартиб ҳамаи санҷишҳои автоматиро, ки ба шартҳо мувофиқанд, интихоб ва иҷро мекунад.

    Модули тавлиди додаҳо дар шакли баста пешниҳод карда мешавад, ки дар он барои ҳар як объекти системаи санҷидашуда (ҷадвал дар пойгоҳи додаҳо) тартиби махсусе сохта шудааст, ки ба он маълумот дохил мекунад. Дар ин тартиб, арзишҳои пешфарз ба қадри имкон пур карда мешаванд, ки эҷоди объектҳоро бо клики ангушт таъмин мекунад. Ва барои осонии истифода, шаблонҳо барои маълумоти тавлидшуда сохта шудаанд. Масалан, бо телефони санҷишӣ ва хариди анҷомдода муштарии синну соли муайян эҷод кунед.

  6. Автотестҳо бояд дар вақте оғоз ва иҷро шаванд, ки барои системаи шумо қобили қабул бошад. Аз ин рӯ, ифтитоҳи шабонарӯзӣ ташкил карда шуд, ки дар асоси он ҳисобот дар бораи натиҷаҳо таҳия карда мешавад ва ба тамоми дастаи рушд тавассути почтаи корпоративӣ фиристода мешавад. Пас аз барқарор кардани автотестҳои кӯҳна ва эҷоди санҷишҳои нав, вақти умумии кор 30 дақиқа буд. Ин спектакль ба хама маъкул шуд, зеро намоиш берун аз вакти кор сурат гирифт.

    Аммо ба мо лозим омад, ки суръати корро оптимизация кунем. Системаи вафодорӣ дар истеҳсолот шабона нав карда мешавад. Дар доираи яке аз нашрҳо, мо маҷбур шудем, ки шабона тағироти фаврӣ кунем. Дар соати сеи шаб ним соат мунтазир шудани нати-чахои автотестхо шахеи масъулро шод нагардонд (саломи оташин ба Алексей Васюков!) ва пагохй дар хакки системам мо бисьёр суханони нек гуфта шуданд. Аммо дар натича нормаи 5-дакикаи кор мукаррар карда шуд.

    Барои суръат бахшидан ба иҷроиш, мо ду усулро истифода бурдем: автотестҳо дар се риштаи мувозӣ ба кор шурӯъ карданд, хушбахтона ин аз сабаби меъмории системаи вафодории мо хеле қулай аст. Ва мо аз равиш даст кашидаем, ки дар он автотест барои худ маълумоти санҷиширо эҷод намекунад, балки кӯшиш мекунад, ки дар система чизи мувофиқро пайдо кунад. Пас аз ворид кардани тағирот, вақти умумии кор то 3-4 дақиқа кам карда шуд.

  7. Лоиҳаи дорои санҷишҳои автоматӣ бояд дар стендҳои гуногун ҷойгир карда шавад. Дар оғози сафари мо кӯшишҳо барои навиштани файлҳои партияи худ буданд, аммо маълум шуд, ки насби автоматии худнавис даҳшати комил аст ва мо ба ҳалли саноатӣ рӯ овардем. Аз сабаби он, ки лоиҳа дорои бисёр кодҳои мустақим (пеш аз ҳама, мо рамзи автотестро нигоҳ медорем) ва маълумоти хеле кам (маълумоти асосӣ метамаълумот дар бораи автотестҳо мебошад), татбиқ дар лоиҳаи Liquibase хеле содда баромад.

    Ин китобхонаи кушодаасос, аз пойгоҳи додаҳо барои пайгирӣ, идора ва иҷрои тағиротҳои схемаи пойгоҳи додаҳо мебошад. Тавассути сатри фармон ё чаҳорчӯба ба монанди Apache Maven идора карда мешавад. Принсипи кори Liquibase хеле содда аст. Мо лоиҳае дорем, ки ба таври муайян ташкил карда шудааст, ки аз тағирот ё скриптҳое иборат аст, ки бояд ба сервери мавриди ҳадаф интиқол дода шаванд ва файлҳои назоратӣ, ки муайян мекунанд, ки ин тағиротҳо бо кадом пайдарпаӣ ва бо кадом параметрҳо насб карда шаванд.

    Дар сатҳи DBMS ҷадвали махсусе сохта мешавад, ки дар он Liquibase сабти рӯйхатро нигоҳ медорад. Ҳар як тағирот дорои хэши ҳисобшуда мебошад, ки ҳар дафъа байни лоиҳа ва ҳолати дар пойгоҳи додаҳо муқоиса карда мешавад. Бо шарофати Liquibase, мо метавонем ба осонӣ тағиротро ба системаи худ дар ҳама гуна схема ворид кунем. Автотестҳо ҳоло дар схемаҳои санҷиш ва озодкунӣ, инчунин дар контейнерҳо (схемаҳои шахсии таҳиягарон) оғоз карда мешаванд.

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

Пас, биёед дар бораи натиҷаҳои истифодаи системаи санҷиши воҳиди мо сӯҳбат кунем.

  1. Албатта, пеш аз ҳама, мо боварӣ дорем, ки мо ба таҳияи нармафзори беҳтар шурӯъ кардем. Автотестҳо ҳамарӯза оғоз карда мешаванд ва ҳар як нашр даҳҳо хатогиҳо пайдо мешаванд. Гузашта аз ин, баъзе аз ин хатогиҳо танҳо ба таври ғайримустақим бо функсияе алоқаманданд, ки мо воқеан тағир додан мехостем. Шубҳаҳои ҷиддӣ вуҷуд доранд, ки ин хатогиҳо тавассути санҷиши дастӣ пайдо шудаанд.
  2. Коллектив акнун боварй дорад, ки функсиона-ти мушаххас дуруст кор мекунад... Ин пеш аз хама ба процессхои мухими мо дахл дорад. Масалан, дар давоми шаш моҳи охир мо дар тақсими тахфифҳо ва мукофотпулӣ аз рӯи квитансияҳо, сарфи назар аз тағйироти релизҳо мушкилот надоштем, гарчанде ки дар давраҳои қаблӣ хатогиҳо бо баъзе зуд-зуд рух медоданд.
  3. Мо тавонистем, ки шумораи такрори санҷишҳоро кам кунем. Аз сабаби он, ки автотестҳо барои функсияҳои нав навишта шудаанд, таҳлилгарон ва озмоишгарони нопурра рамзи сифати баландтар мегиранд, зеро аллакай тафтиш карда шудааст.
  4. Баъзе пешрафтҳо дар санҷиши автоматӣ аз ҷониби таҳиягарон истифода мешаванд. Масалан, маълумотҳои санҷишӣ дар контейнерҳо бо истифода аз модули тавлиди объект сохта мешаванд.
  5. Муҳим аст, ки мо аз ҷониби таҳиягарон «қабул» кардани системаи автоматии санҷишро таҳия кардем. Фаҳмида мешавад, ки ин муҳим ва муфид аст. Аммо аз таҷрибаи худам гуфта метавонам, ки ин аз қазия дур аст. Автотестҳо бояд навишта шаванд, онҳо бояд дастгирӣ ва таҳия карда шаванд, натиҷаҳо бояд таҳлил карда шаванд ва аксар вақт ин хароҷоти вақт ба он намеарзад. Ба истеҳсолот рафтан ва дар он ҷо ҳалли мушкилот осонтар аст. Дар ин ҷо, таҳиягарон саф ороста, аз мо хоҳиш мекунанд, ки функсияҳои онҳоро бо автотестҳо фаро гиранд.

Ин чӣ аст?

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

Биёед дар бораи нақшаҳои рушди лоиҳаи санҷиши автоматӣ сӯҳбат кунем.

Албатта, то даме, ки системаи вафодории Sportmaster зинда аст ва инкишофро идома медиҳад, инчунин имкон дорад, ки автотестҳоро қариб беохир таҳия кард. Аз ин ру, самти асосии тараккиёт васеъ намудани майдони фарогирии он мебошад.

Бо зиёд шудани шумораи автотестҳо, вақти умумии кори онҳо мунтазам зиёд мешавад ва мо бояд боз ба масъалаи иҷроиш баргардем. Эҳтимол, ҳалли он зиёд кардани шумораи риштаҳои параллелӣ хоҳад буд.

Аммо ин роххои равшани тараккиётанд. Агар мо дар бораи чизи ғайриоддӣ гап занем, мо инҳоро таъкид мекунем:

  1. Дар айни замон, идоракунии автотест дар сатҳи DBMS анҷом дода мешавад, яъне. Барои кори муваффақ дониши PL/SQL лозим аст. Агар лозим бошад, идоракунии система (масалан, оғоз ё эҷод кардани метамаълумот), шумо метавонед як намуди панели идоракуниро бо истифода аз Ҷенкинс ё чизи шабеҳ эҷод кунед.
  2. Нишондихандахои микдорй ва сифатй ба хама маъкул аст. Барои санҷиши автоматикунонидашуда чунин нишондиҳандаи универсалӣ фарогирии код ё метрикаи фарогирии код мебошад. Бо истифода аз ин нишондиҳанда, мо метавонем муайян кунем, ки чанд фоизи коди системаи санҷиши мо тавассути автотестҳо фаро гирифта шудааст. Аз версияи 12.2 сар карда, Oracle қобилияти ҳисоб кардани ин метрикаро таъмин мекунад ва истифодаи бастаи стандартии DBMS_PLSQL_CODE_COVERAGE-ро пешниҳод мекунад.

    Системаи автотестҳои мо ҳамагӣ зиёда аз як сол аст ва шояд ҳоло вақти арзёбии фарогирии мост. Дар лоиҳаи охирини ман (на лоиҳаи Sportmaster) ин ҳодиса рӯй дод. Пас аз як соли кор дар автотестҳо, роҳбарият вазифа гузошт, ки мо чанд фоизи кодро дар бар мегирем. Бо фарогирии зиёда аз 1%, роҳбарият хушбахт хоҳад буд. Мо, таҳиягарон, интизор мерафтем, ки тақрибан 10% натиҷа мегирем. Мо фарогирии кодро насб кардем, чен кардем ва 20% гирифтем. Барои таҷлил, мо барои гирифтани ҷоиза рафтем, аммо чӣ гуна мо барои дарёфти он ва ба куҷо рафтем, ин қиссаи тамоман дигар аст.

  3. Автотестҳо метавонанд хидматҳои вебро тафтиш кунанд. Oracle ба мо имкон медиҳад, ки ин корро хеле хуб иҷро кунем ва мо дигар ба як қатор мушкилот дучор нахоҳем шуд.
  4. Ва, албатта, системаи санҷиши автоматии мо метавонад ба лоиҳаи дигар татбиқ карда шавад. Ҳалли мо универсалӣ аст ва танҳо истифодаи Oracle-ро талаб мекунад. Ман шунидам, ки дигар лоиҳаҳои Sportmaster ба санҷиши автоматӣ таваҷҷӯҳ доранд ва шояд мо ба онҳо равем.

натиҷаҳои

Биёед ҷамъбаст кунем. Дар лоиҳаи системаи вафодорӣ дар Sportmaster мо тавонистем як системаи автоматии санҷишро татбиқ кунем. Он ба ҳалли utPLSQL аз Стивен Фейерштейн асос ёфтааст. Дар атрофи utPLSQL рамзи автотест ва модулҳои ёрирасони худнависӣ мавҷуданд: модули оғозёбӣ, модули тавлиди маълумот ва ғайра. Автотестҳо ҳамарӯза оғоз мешаванд ва муҳимтар аз ҳама, онҳо кор мекунанд ва муфиданд. Мо боварӣ дорем, ки мо ба баровардани нармафзори баландсифат шурӯъ кардем. Дар айни замон, ҳалли натиҷавӣ универсалӣ буда, метавонад ба ҳама гуна лоиҳа, ки дар он ҷо ташкили санҷиши автоматикунонидашуда дар DBMS Oracle зарур аст, озодона татбиқ карда шавад.

PS Ин мақола чандон мушаххас нест: матни зиёде вуҷуд дорад ва амалан намунаҳои техникӣ вуҷуд надоранд. Агар мавзӯъ умуман ҷолиб бошад, пас мо омодаем онро идома диҳем ва бо идомаи он баргардем, ки дар он ҷо мо ба шумо нақл мекунем, ки дар шаш моҳи охир чӣ тағир ёфтааст ва мисолҳои рамзӣ пешниҳод мекунем.

Агар нуктаҳое, ки дар оянда бояд таъкид шаванд, ё саволҳое, ки ифшоро талаб мекунанд, шарҳҳо нависед.

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Оё мо минбаъд дар ин бора нависем?

  • Бале албатта

  • Не ташаккур

12 корбар овоз доданд. 4 корбар худдорӣ карданд.

Манбаъ: will.com

Илова Эзоҳ