Chav ntsuas hauv DBMS - peb ua li cas hauv Sportmaster, ntu ob

First part - no.

Chav ntsuas hauv DBMS - peb ua li cas hauv Sportmaster, ntu ob

Xav txog qhov xwm txheej. Koj tau ntsib nrog txoj haujlwm ntawm kev tsim cov haujlwm tshiab. Koj muaj kev txhim kho los ntawm koj cov neeg ua ntej. Yog tias peb xav tias koj tsis muaj lub luag haujlwm ncaj ncees, koj yuav ua li cas?

Feem ntau, txhua qhov kev txhim kho qub tsis nco qab thiab txhua yam pib dua. Tsis muaj leej twg nyiam khawb rau lwm tus tus lej, tab sis yog tias koj muaj sijhawm, vim li cas ho tsis pib tsim koj tus kheej qhov system? Qhov no yog ib txoj hauv kev zoo, thiab nws yog qhov tseeb. Tab sis nyob rau hauv peb qhov project peb ua nws tsis ncaj ncees lawm. Peb ua raws li lub neej yav tom ntej tsis siv neeg ntsuas qhov system ntawm kev txhim kho hauv chav ntsuas ntawm utPLSQL los ntawm peb cov neeg ua ntej, thiab tom qab ntawd mus ua haujlwm hauv ntau cov lus qhia sib npaug.

  1. Txhim kho cov kev sim qub qub. Rov qab txhais tau tias hloov cov kev sim rau lub xeev uas twb muaj lawm ntawm cov kev ntseeg siab thiab hloov cov kev sim rau utPLSQL cov qauv.
  2. Kev daws qhov teeb meem nrog kev nkag siab ntawm qhov tseeb, cov txheej txheem thiab cov txheej txheem twg yog them nrog autotests. Koj yuav tsum khaws cov ntaub ntawv no rau hauv koj lub taub hau, lossis kos cov lus xaus ncaj qha los ntawm autotest code. Yog li ntawd, peb txiav txim siab los tsim ib lub catalog. Peb tau muab ib qho cim mnemonic code rau txhua qhov autotest, tsim cov lus piav qhia thiab cov chaw kaw tseg (piv txwv li, nyob rau hauv cov xwm txheej twg nws yuav tsum tau pib, lossis yuav ua li cas yog tias qhov kev sim pib ua tsis tiav). Qhov tseem ceeb, peb populated cov metadata txog cov autotests thiab muab cov metadata rau hauv cov qauv utPLSQL schema rooj.
  3. Defining the expansion strategy, i.e. kev xaiv ntawm kev ua haujlwm uas yuav raug kuaj xyuas los ntawm kev xeem automated. Peb tau txiav txim siab los saib xyuas peb yam: kev txhim kho cov txheej txheem tshiab, kev tsim khoom tsim, thiab cov txheej txheem tseem ceeb. Yog li, peb tab tom txhim kho nyob rau tib lub sijhawm nrog kev tso tawm, ua kom nws cov khoom zoo dua qub, ib txhij nthuav dav ntawm kev thim rov qab thiab ua kom muaj kev ntseeg siab hauv qhov chaw tseem ceeb. Thawj qhov kev tsis txaus ntseeg no yog cov txheej txheem ntawm kev faib cov nyiaj cheb thiab nyiaj tshwj xeeb ntawm daim tshev.
  4. Lawm, peb pib tsim autotests tshiab. Ib qho ntawm thawj txoj haujlwm tshaj tawm yog los ntsuas qhov kev ua tau zoo ntawm cov qauv ua ntej ntawm qhov kev ntseeg siab. Peb qhov project muaj qhov thaiv ntawm SQL queries ruaj khov uas xaiv cov neeg siv khoom raws li cov xwm txheej. Piv txwv li, tau txais ib daim ntawv teev npe ntawm txhua tus neeg siv khoom uas nws qhov kev yuav khoom zaum kawg yog nyob rau hauv ib lub nroog tshwj xeeb, lossis cov npe ntawm cov neeg siv khoom uas nws qhov nyiaj nruab nrab yuav yog siab dua ib qho nqi. Muaj kev sau ntawv autotests, peb tau kuaj xyuas cov qauv ua ntej, sau cov ntsuas ntsuas kev ua tau zoo, thiab ntxiv rau peb tau kuaj xyuas.
  5. Ua haujlwm nrog autotests yuav tsum yooj yim. Ob qhov kev ua feem ntau yog khiav autotests thiab tsim cov ntaub ntawv xeem. Qhov no yog li cas ob lub koom haum pab tau tshwm sim hauv peb qhov system: lub tso tawm module thiab cov ntaub ntawv tsim qauv.

    Lub launcher yog sawv cev raws li ib tug txheej txheem universal nrog ib tug ntawv input parameter. Raws li qhov ntsuas, koj tuaj yeem dhau qhov autotest mnemonic code, pob lub npe, xeem lub npe, autotest teeb, lossis lo lus tseem ceeb. Cov txheej txheem xaiv thiab khiav tag nrho cov autotests uas txaus siab rau cov xwm txheej.

    Cov ntaub ntawv tiam module tau nthuav tawm nyob rau hauv daim ntawv ntawm ib pob uas rau txhua yam khoom ntawm lub system nyob rau hauv kev sim (ib lub rooj nyob rau hauv lub database), ib tug tshwj xeeb txheej txheem tau tsim uas inserts cov ntaub ntawv muaj. Nyob rau hauv cov txheej txheem no, lub neej ntawd qhov tseem ceeb yog sau kom ntau li ntau tau, uas ua kom cov creation ntawm cov khoom cia ntawm nias ntawm ib tug ntiv tes. Thiab kom yooj yim ntawm kev siv, cov qauv rau cov ntaub ntawv tsim tawm tau tsim. Piv txwv li, tsim ib tus neeg siv khoom ntawm ib lub hnub nyoog nrog lub xov tooj kuaj thiab ua tiav kev yuav khoom.

  6. Autotests yuav tsum pib thiab ua haujlwm nyob rau lub sijhawm uas tsim nyog rau koj lub cev. Yog li ntawd, ib qho kev tshaj tawm hmo ntuj txhua hnub tau teeb tsa, raws li cov txiaj ntsig ntawm cov ntawv tshaj tawm ntawm cov txiaj ntsig tau tsim thiab xa mus rau tag nrho pab pawg txhim kho los ntawm kev xa ntawv. Tom qab rov kho cov qub autotests thiab tsim cov tshiab, tag nrho lub sijhawm ua haujlwm yog 30 feeb. Qhov kev ua tau zoo no haum rau txhua tus, txij li qhov kev tshaj tawm tau tshwm sim sab nraum lub sijhawm ua haujlwm.

    Tab sis peb yuav tsum ua hauj lwm rau optimizing qhov ceev ntawm kev ua hauj lwm. Lub loyalty system nyob rau hauv ntau lawm yog hloov kho thaum hmo ntuj. Raws li ib feem ntawm ib qho ntawm kev tshaj tawm, peb yuav tsum tau hloov kho sai thaum hmo ntuj. Tos ib nrab ib teev rau cov txiaj ntsig ntawm autotests ntawm peb thaum sawv ntxov tsis ua rau tus neeg lub luag haujlwm rau kev tso tawm zoo siab (ua tsaug rau Alexey Vasyukov!), thiab tag kis sawv ntxov ntau cov lus zoo tau hais rau peb lub cev. Tab sis vim li ntawd, 5-feeb tus qauv rau kev ua haujlwm tau tsim.

    Txhawm rau kom ua tau zoo, peb tau siv ob txoj hauv kev: autotests pib khiav hauv peb txoj kab sib txuas, hmoov zoo qhov no yog qhov yooj yim heev vim yog kev tsim qauv ntawm peb txoj kev ntseeg siab. Thiab peb tau tso tseg txoj hauv kev uas autotest tsis tsim cov ntaub ntawv xeem rau nws tus kheej, tab sis sim nrhiav qee yam tsim nyog hauv qhov system. Tom qab ua qhov kev hloov pauv, tag nrho lub sijhawm ua haujlwm raug txo mus rau 3-4 feeb.

  7. Ib qhov project nrog kev ntsuas tsis siv neeg yuav tsum tau muab tso rau ntawm ntau qhov chaw. Thaum pib ntawm peb txoj kev taug kev, muaj kev sim sau peb tus kheej cov ntaub ntawv batch, tab sis nws tau pom tseeb tias kev teeb tsa tus kheej sau tau ua tiav txaus ntshai, thiab peb tig mus rau kev daws teeb meem. Vim tias qhov project muaj ntau tus lej ncaj qha (ua ntej ntawm tag nrho cov, peb khaws cov lej autotest) thiab cov ntaub ntawv me me (cov ntaub ntawv tseem ceeb yog metadata txog autotests), kev siv hauv Liquibase project tau ua kom yooj yim heev.

    Nws yog ib qho qhib-qhov chaw, database-yooj yim tsev qiv ntawv rau kev taug qab, tswj, thiab tswj cov ntaub ntawv hloov pauv schema. Tswj los ntawm kab hais kom ua lossis cov txheej txheem xws li Apache Maven. Lub hauv paus ntsiab lus ntawm kev ua haujlwm ntawm Liquibase yog qhov yooj yim heev. Peb muaj ib txoj haujlwm tsim nyob rau hauv ib txoj kev, uas muaj cov kev hloov pauv lossis cov ntawv sau uas yuav tsum tau muab dov tawm mus rau lub hom phiaj server, thiab tswj cov ntaub ntawv uas txiav txim siab nyob rau hauv dab tsi ua ntu zus thiab nrog cov kev hloov pauv no yuav tsum tau nruab.

    Nyob rau theem DBMS, ib lub rooj tshwj xeeb yog tsim nyob rau hauv uas Liquibase khaws cov ntaub ntawv rollover. Txhua qhov kev hloov pauv muaj qhov suav hash, uas muab piv rau txhua lub sijhawm ntawm qhov project thiab lub xeev hauv cov ntaub ntawv. Ua tsaug rau Liquibase, peb tuaj yeem yooj yim yob tawm cov kev hloov pauv rau peb lub cev rau txhua lub voj voog. Autotests tau pib tam sim no ntawm kev sim thiab tso tawm circuits, nrog rau cov ntim khoom (tus tsim tawm tus kheej circuits).

Chav ntsuas hauv DBMS - peb ua li cas hauv Sportmaster, ntu ob

Yog li, cia peb tham txog cov txiaj ntsig ntawm kev siv peb lub ntsuas ntsuas ntsuas.

  1. Tau kawg, ua ntej ntawm tag nrho cov, peb ntseeg hais tias peb tau pib tsim software zoo dua. Autotests tau pib txhua hnub thiab ntau qhov yuam kev tau pom txhua qhov kev tso tawm. Ntxiv mus, qee qhov yuam kev no tsuas yog cuam tshuam ncaj qha rau kev ua haujlwm uas peb xav hloov tiag tiag. Muaj kev tsis ntseeg siab tias cov kev ua yuam kev no tau pom los ntawm kev ntsuas phau ntawv.
  2. Pab neeg tam sim no muaj kev ntseeg siab tias kev ua haujlwm tshwj xeeb ua haujlwm kom raug... Ua ntej tshaj, qhov no cuam tshuam rau peb cov txheej txheem tseem ceeb. Piv txwv li, dhau rau lub hlis dhau los peb tsis muaj teeb meem nrog kev faib cov nyiaj cheb thiab nyiaj tshwj xeeb ntawm cov ntawv txais nyiaj, txawm tias muaj kev hloov pauv, txawm hais tias nyob rau lub sijhawm dhau los ua yuam kev tshwm sim nrog qee zaus.
  3. Peb tau tswj kom txo tus naj npawb ntawm cov kev sim iterations. Vim qhov tseeb tias autotests tau sau rau kev ua haujlwm tshiab, cov kws tshuaj ntsuam thiab cov neeg kuaj ib nrab sijhawm tau txais cov lej zoo dua, vim tias twb tau kuaj lawm.
  4. Qee qhov kev txhim kho hauv kev ntsuas tsis siv neeg yog siv los ntawm cov neeg tsim khoom. Piv txwv li, cov ntaub ntawv xeem ntawm cov thawv yog tsim los ntawm cov khoom tsim module.
  5. Nws yog ib qho tseem ceeb uas peb tau tsim ib qho "kev lees paub" ntawm qhov kev sim ntsuas qhov system ntawm ib feem ntawm cov neeg tsim khoom. Muaj kev nkag siab tias qhov no tseem ceeb thiab muaj txiaj ntsig. Tab sis los ntawm kuv tus kheej kev paub kuv tuaj yeem hais tias qhov no nyob deb ntawm rooj plaub. Autotests yuav tsum tau sau, lawv yuav tsum tau txais kev txhawb nqa thiab tsim, cov txiaj ntsig yuav tsum tau txheeb xyuas, thiab feem ntau cov nqi no tsuas yog tsis tsim nyog. Nws yooj yim dua mus rau kev tsim khoom thiab daws teeb meem nyob ntawd. Ntawm no, cov neeg tsim tawm kab thiab hais kom peb npog lawv cov haujlwm nrog autotests.

Dab tsi ntxiv

Chav ntsuas hauv DBMS - peb ua li cas hauv Sportmaster, ntu ob

Cia peb tham txog cov phiaj xwm kev txhim kho rau qhov project automated testing project.

Tau kawg, tsuav yog Sportmaster qhov kev ntseeg siab tseem muaj sia nyob thiab txuas ntxiv txhim kho, nws tseem tuaj yeem tsim autotests yuav luag tsis muaj qhov kawg. Yog li ntawd, cov kev taw qhia tseem ceeb ntawm txoj kev loj hlob yog nthuav cov kev pab them nqi kho mob.

Raws li tus naj npawb ntawm autotests nce, lawv lub sijhawm ua haujlwm tag nrho yuav nce ntxiv, thiab peb yuav rov qab mus rau qhov teeb meem ntawm kev ua haujlwm. Feem ntau, qhov kev daws teeb meem yuav yog txhawm rau nce tus lej ntawm cov kab sib txuas.

Tab sis cov no yog qhov pom tseeb ntawm txoj kev loj hlob. Yog tias peb tham txog qee yam tsis tseem ceeb, peb hais txog cov hauv qab no:

  1. Tam sim no, autotest tswj tau ua nyob rau theem DBMS, i.e. Kev paub txog PL / SQL yog qhov xav tau rau kev ua haujlwm tiav. Yog tias tsim nyog, kev tswj hwm qhov system (piv txwv li, tso tawm lossis tsim cov metadata), koj tuaj yeem tsim qee yam kev tswj hwm vaj huam sib luag siv Jenkins lossis qee yam zoo sib xws.
  2. Txhua tus nyiam qhov ntsuas qhov ntau thiab zoo. Rau kev xeem automated, xws li qhov ntsuas thoob ntiaj teb yog Code Coverage lossis code coverage metric. Siv qhov ntsuas no, peb tuaj yeem txiav txim siab qhov feem pua ​​​​ntawm cov cai ntawm peb lub cev nyob rau hauv kev xeem yog them los ntawm autotests. Pib los ntawm version 12.2, Oracle muab lub peev xwm los xam qhov ntsuas no thiab muab kev siv cov txheej txheem DBMS_PLSQL_CODE_COVERAGE pob.

    Peb lub tshuab autotest tsuas yog dhau ib xyoos xwb thiab tej zaum tam sim no yog lub sijhawm los ntsuas peb qhov kev pab cuam. Hauv kuv qhov project kawg (tsis yog Sportmaster project) qhov no yog qhov tshwm sim. Ib xyoos tom qab ua haujlwm ntawm autotests, kev tswj hwm tau teeb tsa txoj haujlwm ntawm kev txheeb xyuas qhov feem pua ​​​​ntawm cov lej peb npog. Nrog kev pab them nqi ntau dua 1%, kev tswj hwm yuav zoo siab. Peb, cov neeg tsim khoom, xav tias yuav muaj li ntawm 10%. Peb tau teeb tsa cov cai tswj hwm, ntsuas nws, thiab tau txais 20%. Ua kev zoo siab, peb tau mus rau qhov khoom plig, tab sis peb mus qhov twg thiab qhov twg peb mus tom qab yog ib zaj dab neeg sib txawv kiag li.

  3. Autotests tuaj yeem tshawb xyuas cov kev pabcuam hauv web. Oracle tso cai rau peb ua qhov no zoo heev, thiab peb yuav tsis ntsib ntau yam teeb meem ntxiv lawm.
  4. Thiab, ntawm chav kawm, peb qhov kev ntsuas kev siv tshuab tuaj yeem siv rau lwm qhov project. Kev daws peb tau txais yog universal thiab tsuas yog yuav tsum tau siv Oracle. Kuv tau hnov ​​​​tias lwm cov haujlwm Sportmaster txaus siab rau kev sim tsis siv neeg thiab tej zaum peb yuav mus rau lawv.

tshawb pom

Cia peb sau tseg. Ntawm qhov project loyalty system nyob rau hauv Sportmaster, peb tau tswj kom siv ib tug automated xeem system. Nws yog raws li kev daws teeb meem utPLSQL los ntawm Stephen Feuerstein. Nyob ib ncig ntawm utPLSQL muaj autotest code thiab auxiliary self-written modules: launch module, data generation module thiab lwm yam. Autotests tau pib txhua hnub thiab, qhov tseem ceeb tshaj, lawv ua haujlwm thiab muaj txiaj ntsig. Peb cia siab tias peb tau pib tso cov software zoo dua. Nyob rau tib lub sijhawm, cov kev daws teeb meem uas tau tshwm sim yog thoob ntiaj teb thiab tuaj yeem siv dawb rau txhua qhov haujlwm uas nws tsim nyog los teeb tsa kev ntsuas kev ntsuas ntawm Oracle DBMS.

PS Cov kab lus no tsis meej heev: muaj ntau cov ntawv nyeem thiab xyaum tsis muaj cov qauv kev qhia. Yog hais tias lub ncauj lus feem ntau nthuav, ces peb npaj siab mus txuas ntxiv thiab rov qab los nrog kev txuas ntxiv, qhov twg peb yuav qhia koj txog qhov hloov pauv li cas rau lub hlis dhau los thiab muab cov qauv piv txwv.

Sau cov lus yog tias muaj cov ntsiab lus uas yuav tsum tau hais txog yav tom ntej, lossis cov lus nug uas yuav tsum tau nthuav tawm.

Tsuas yog cov neeg siv sau npe tuaj yeem koom nrog hauv daim ntawv ntsuam xyuas. Kos npe rau hauvthov.

Peb puas yuav sau ntxiv txog qhov no?

  • Yog, paub meej

  • Tsis ua tsaug

12 cov neeg siv pov npav. 4 cov neeg siv tau txwv.

Tau qhov twg los: www.hab.com

Ntxiv ib saib