Txhawm rau kom cov lus piav qhia meej, txhua ntu tau piav qhia raws li cov qauv hauv qab no:
luv luv piav qhia txog technology,
tus nqi rau automation infrastructure,
kev piav qhia ntawm lub xeev tam sim no ntawm cov infrastructure,
txuas mus kawm,
cov cuab yeej zoo sib xws.
1. Khiav kev xeem hauv zos
Cov lus piav qhia luv luv ntawm kev siv tshuab
Qhov no tsuas yog ib kauj ruam npaj los khiav qhov kev xeem demo hauv zos thiab xyuas kom meej tias lawv dhau. Hauv qhov ua tau zoo, Node.js siv, tab sis cov lus programming thiab platform kuj tsis tseem ceeb thiab koj tuaj yeem siv cov uas siv hauv koj lub tuam txhab.
Txawm li cas los xij, raws li cov cuab yeej automation, kuv pom zoo kom siv Selenium WebDriver rau lub vev xaib platforms thiab Appium rau Android platform, feem, txij li hauv cov kauj ruam tom ntej peb yuav siv Docker cov duab uas tau tsim los ua haujlwm tshwj xeeb nrog cov cuab yeej no. Ntxiv mus, xa mus rau cov kev xav tau ntawm txoj haujlwm, cov cuab yeej no yog qhov xav tau tshaj plaws hauv kev ua lag luam.
Raws li koj tuaj yeem pom, peb tsuas yog xav txog web thiab Android kev xeem. Hmoov tsis zoo, iOS yog ib zaj dab neeg sib txawv kiag li (ua tsaug Apple). Kuv npaj yuav nthuav tawm IOS txog cov kev daws teeb meem thiab kev coj ua hauv ntu tom ntej.
Txhawm rau ua kom pom tias kev ntim khoom tau hloov pauv cov cai ntawm qhov kev ua si li cas, cia peb rov qab mus rau lub sijhawm ob peb xyoos. Tom qab ntawd, tib neeg yuav thiab siv cov tshuab server los khiav cov ntawv thov. Tab sis nyob rau hauv feem ntau, cov kev pab cuam pib yuav tsum tau tsis paub ua ntej. Yog li ntawd, cov tuam txhab tau siv nyiaj los ntawm kev yuav khoom kim, muaj zog servers, tab sis qee qhov peev txheej no tsis tau siv tag nrho.
Cov theem tom ntej ntawm evolution yog virtual machines (VMs), uas daws qhov teeb meem ntawm nkim nyiaj ntawm cov khoom siv tsis siv. Cov thev naus laus zis no ua rau nws muaj peev xwm khiav daim ntawv thov ntawm nws tus kheej ntawm ib leeg nyob rau hauv tib lub server, faib qhov chaw cais tag nrho. Tab sis, hmoov tsis, txhua lub tshuab muaj nws qhov tsis zoo. Kev khiav VM yuav tsum muaj kev khiav hauj lwm tag nrho, uas siv CPU, RAM, cia thiab, nyob ntawm OS, cov nqi ntawv tso cai yuav tsum raug coj mus rau hauv tus account. Cov yam ntxwv no cuam tshuam rau kev thauj khoom ceev thiab ua rau kev txav mus los nyuaj.
Thiab tam sim no peb tuaj rau containerization. Ib zaug ntxiv, cov thev naus laus zis no daws qhov teeb meem yav dhau los, vim tias cov thawv ntim tsis siv tag nrho OS, uas tso cov peev txheej ntau thiab muab cov kev daws teeb meem ceev thiab hloov pauv tau yooj yim.
Tau kawg, containerization technology tsis muaj dab tsi tshiab thiab tau pib ua ntej hauv 70s lig. Nyob rau lub sijhawm ntawd, ntau qhov kev tshawb fawb, kev tsim kho, thiab kev sim ua tiav. Tab sis nws yog Docker uas tau hloov kho cov thev naus laus zis no thiab ua rau nws yooj yim rau cov neeg coob coob. Niaj hnub no, thaum peb tham txog cov thawv, feem ntau peb txhais tau tias Docker. Thaum peb tham txog Docker ntim, peb txhais tau tias Linux ntim. Peb tuaj yeem siv Windows thiab macOS systems los khiav cov thawv, tab sis nws yog ib qho tseem ceeb kom nkag siab tias qhov no muaj txheej txheej ntxiv tshwm. Piv txwv li, Docker ntawm Mac ntsiag to khiav ntim hauv lub teeb yuag Linux VM. Peb yuav rov qab mus rau lub ntsiab lus no thaum peb sib tham txog kev khiav Android emulators hauv ntim, yog li ntawm no yog qhov tseem ceeb heev uas yuav tsum tau tham kom ntxaws ntxiv.
Tus nqi rau automation infrastructure
Peb pom tias kev ntim khoom thiab Docker txias. Cia peb saib qhov no hauv cov ntsiab lus ntawm automation, vim tias txhua lub cuab yeej lossis thev naus laus zis yuav tsum daws qhov teeb meem. Cia peb piav qhia txog cov teeb meem pom tseeb ntawm kev xeem automation hauv cov ntsiab lus ntawm UI xeem:
ib tug loj tus naj npawb ntawm dependencies thaum txhim kho Selenium thiab tshwj xeeb tshaj yog Appium;
Cov cuab yeej no yog qhov ua tiav hauv ntiaj teb ntawm Selenium vim nws ua haujlwm tawm ntawm lub thawv thiab tau ua rau lub neej ntawm ntau tus kws ua haujlwm automation yooj yim dua. Ua ntej tshaj plaws, qhov no tsis yog lwm qhov kev hloov kho ntawm Selenium daim phiaj. Hloov chaw, cov neeg tsim tawm tau tsim ib qho tshiab ntawm Selenium Hub hauv Golang, uas, ua ke nrog cov duab Docker sib sib zog nqus rau ntau lub browsers, muab lub zog rau kev txhim kho kev sim automation. Ntxiv mus, nyob rau hauv cov ntaub ntawv ntawm Selenium Grid, peb yuav tsum txiav txim siab tag nrho cov yuav tsum tau browsers thiab lawv versions ua ntej, uas tsis yog ib qho teeb meem thaum ua hauj lwm nrog ib tug browser xwb. Tab sis thaum nws los txog rau ntau qhov kev txhawb nqa browsers, Selenoid yog tus lej ib qho kev daws teeb meem ua tsaug rau nws 'browser ntawm kev thov' feature. Txhua yam uas yuav tsum tau ntawm peb yog rub tawm cov duab tsim nyog nrog browsers ua ntej thiab hloov kho cov ntaub ntawv teeb tsa uas Selenoid cuam tshuam. Tom qab Selenoid tau txais kev thov los ntawm cov kev xeem, nws yuav cia li tso lub thawv uas xav tau nrog rau qhov browser xav tau. Thaum qhov kev xeem tiav, Selenoid yuav so lub thawv, yog li tso cov peev txheej rau kev thov yav tom ntej. Txoj hauv kev no tshem tawm tag nrho cov teeb meem paub zoo ntawm 'node degradation' uas peb feem ntau ntsib hauv Selenium daim phiaj.
Tab sis, alas, Selenoid tseem tsis yog lub mos txwv nyiaj. Peb tau txais 'browser ntawm kev thov' feature, tab sis 'peev txheej ntawm kev thov' feature tseem tsis muaj. Txhawm rau siv Selenoid, peb yuav tsum xa nws mus rau ntawm lub cev kho vajtse lossis ntawm VM, uas txhais tau tias peb yuav tsum paub ua ntej tias yuav tsum tau faib ntau npaum li cas. Kuv twv qhov no tsis yog qhov teeb meem rau cov haujlwm me me uas khiav 10, 20 lossis txawm tias 30 browsers sib npaug. Tab sis yuav ua li cas yog tias peb xav tau 100, 500, 1000 thiab ntau dua? Nws tsis muaj txiaj ntsig los tswj thiab them nyiaj rau ntau yam kev pab txhua lub sijhawm. Hauv ntu 5 thiab 6 ntawm tsab xov xwm no, peb yuav tham txog cov kev daws teeb meem uas tso cai rau koj los ntsuas qhov ntsuas, yog li txo cov nqi tuam txhab.
Selenoid rau Android
Tom qab ua tiav ntawm Selenoid ua lub vev xaib automation cuab yeej, tib neeg xav tau qee yam zoo sib xws rau Android. Thiab nws tshwm sim - Selenoid tau tso tawm nrog kev txhawb nqa Android. Los ntawm cov neeg siv qib siab ntawm qhov pom, lub hauv paus ntsiab lus ntawm kev ua haujlwm zoo ib yam li lub vev xaib automation. Qhov txawv tsuas yog tias tsis yog browser ntim, Selenoid khiav Android emulator ntim. Hauv kuv lub tswv yim, qhov no yog tam sim no lub cuab yeej muaj zog tshaj plaws pub dawb rau kev khiav Android kev xeem sib npaug.
Kuv yeej tsis nyiam tham txog qhov tsis zoo ntawm cov cuab yeej no, vim kuv nyiam nws heev. Tab sis tseem, muaj qhov tsis zoo tib yam uas siv rau lub vev xaib automation thiab cuam tshuam nrog kev ntsuas. Ntxiv rau qhov no, peb yuav tsum tau tham txog ib qho kev txwv ntxiv uas tuaj yeem ua rau xav tsis thoob yog tias peb tab tom teeb tsa lub cuab yeej thawj zaug. Txhawm rau khiav cov duab hauv Android, peb xav tau lub tshuab lub cev lossis VM nrog kev txhawb nqa virtualization. Hauv phau ntawv qhia yuav ua li cas, kuv qhia yuav ua li cas thiaj li pab tau qhov no ntawm Linux VM. Txawm li cas los xij, yog tias koj yog ib tus neeg siv macOS thiab xav xa Selenoid hauv zos, qhov no yuav tsis tuaj yeem khiav Android xeem. Tab sis koj yeej ib txwm khiav Linux VM hauv zos nrog 'nested virtualisation' teeb tsa thiab xa Selenoid sab hauv.
Piv txwv ntawm lub xeev tam sim no ntawm infrastructure
Hauv cov ntsiab lus ntawm tsab xov xwm no, peb yuav ntxiv 2 cov cuab yeej los qhia txog kev tsim kho vaj tse. Cov no yog Selenium daim phiaj rau kev xeem lub vev xaib thiab Selenoid rau Android xeem. Hauv GitHub cov lus qhia, Kuv tseem yuav qhia koj yuav ua li cas siv Selenoid los khiav cov kev xeem hauv lub vev xaib.
Muaj lwm cov cuab yeej ntim khoom, tab sis Docker yog qhov nrov tshaj plaws. Yog tias koj xav sim lwm yam, nco ntsoov tias cov cuab yeej peb tau them rau kev sim Selenium nyob rau hauv tib lub sijhawm yuav tsis ua haujlwm tawm ntawm lub thawv.
Raws li twb tau hais lawm, muaj ntau qhov kev hloov kho ntawm Selenium grid, piv txwv li, Zalenium.
4. CI/CD
Cov lus piav qhia luv luv ntawm kev siv tshuab
Kev coj ua ntawm kev sib koom ua ke tsis tu ncua yog qhov nrov heev hauv kev txhim kho thiab yog sib npaug nrog cov qauv tswj hwm. Txawm li cas los xij, kuv xav tias muaj kev tsis meej pem hauv cov lus siv. Hauv kab lus no kuv xav piav qhia txog 3 qhov kev hloov kho ntawm cov thev naus laus zis no los ntawm kuv qhov kev xav. Hauv Is Taws Nem koj yuav pom ntau cov ntawv uas muaj kev txhais lus sib txawv, thiab nws yog qhov qub tiag tiag yog tias koj lub tswv yim txawv. Qhov tseem ceeb tshaj plaws yog tias koj nyob rau tib nplooj ntawv nrog koj cov npoj yaig.
Yog li, muaj 3 nqe lus: CI - Nruam kev sib koom ua ke, CD - Nruam xa tawm thiab dua CD - Kev xa mus tas li. (Hauv qab no kuv yuav siv cov lus no ua lus Askiv). Txhua qhov kev hloov kho ntxiv ob peb kauj ruam ntxiv rau koj txoj kev loj hlob kav. Tab sis lo lus Nruam (txuas ntxiv) yog qhov tseem ceeb tshaj plaws. Nyob rau hauv cov ntsiab lus no, peb txhais tau hais tias ib yam dab tsi tshwm sim los ntawm qhov pib mus rau qhov kawg, tsis muaj kev cuam tshuam lossis kev cuam tshuam ntawm phau ntawv. Cia peb saib CI & CD thiab CD hauv cov ntsiab lus no.
Kev koom ua ke tsis tu ncua qhov no yog thawj kauj ruam ntawm evolution. Tom qab xa cov lej tshiab rau tus neeg rau zaub mov, peb cia siab tias yuav tau txais kev tawm tswv yim sai tias peb cov kev hloov pauv tau zoo. Feem ntau, CI suav nrog cov cuab yeej ntsuas cov lej zoo li qub thiab ntsuas chav tsev / sab hauv API.
Kev Xa Xa Mus Ntxiv yog ib theem siab tshaj qhov uas peb khiav integration/UI tests. Txawm li cas los xij, nyob rau theem no peb tsis tau txais txiaj ntsig sai li nrog CI. Ua ntej, hom kev xeem no siv sijhawm ntev dua kom tiav. Qhov thib ob, ua ntej tso tawm, peb yuav tsum xa peb cov kev hloov pauv mus rau qhov chaw sim / theem pib. Ntxiv mus, yog tias peb tab tom tham txog kev txhim kho mobile, tom qab ntawd ib kauj ruam ntxiv tshwm los tsim kev tsim ntawm peb daim ntawv thov.
Nruam Kev Xaiv xav tias peb cia li tso peb cov kev hloov pauv rau kev tsim khoom yog tias txhua qhov kev lees paub tau dhau los ntawm cov theem dhau los. Ntxiv rau qhov no, tom qab lub sijhawm tso tawm, koj tuaj yeem teeb tsa ntau theem, xws li khiav cov pa luam yeeb ntawm kev tsim khoom thiab sau cov kev ntsuas kev txaus siab. Kev xa mus tas li tsuas yog ua tau nrog kev pab them nqi zoo los ntawm kev xeem tsis siv neeg. Yog tias yuav tsum muaj kev cuam tshuam los ntawm phau ntawv, suav nrog kev sim, ces qhov no tsis yog lawm Nruam (nruam). Tom qab ntawd peb tuaj yeem hais tias peb lub raj xa dej tsuas yog ua raws li kev coj ua ntawm Kev xa khoom mus tas li.
Tus nqi rau automation infrastructure
Hauv seem no, kuv yuav tsum tau qhia meej tias thaum peb tham txog qhov kawg-rau-kawg UI xeem, nws txhais tau hais tias peb yuav tsum xa peb cov kev hloov pauv thiab cov kev pabcuam cuam tshuam los kuaj ib puag ncig. Kev sib koom ua ke tsis tu ncua - cov txheej txheem tsis muaj feem xyuam rau txoj haujlwm no thiab peb yuav tsum tau saib xyuas kev siv yam tsawg kawg kev xa tawm mus tas li. Kev xa mus tas li kuj ua rau muaj kev nkag siab zoo hauv cov ntsiab lus ntawm UI xeem yog tias peb yuav khiav lawv hauv kev tsim khoom.
Thiab ua ntej peb saib cov duab piv txwv ntawm kev hloov pauv ntawm architecture, kuv xav hais ob peb lo lus hais txog GitLab CI. Tsis zoo li lwm cov cuab yeej CI / CD, GitLab muab cov chaw khaws cia chaw taws teeb thiab ntau lwm yam ntxiv. Yog li, GitLab ntau dua CI. Nws suav nrog kev tswj hwm qhov chaws, kev tswj hwm Agile, CI / CD cov kav dej, cov cuab yeej txiav thiab cov ntsuas ntsuas tawm ntawm lub thawv. GitLab architecture muaj Gitlab CI / CD thiab GitLab Runner. Nov yog cov lus piav qhia luv luv los ntawm lub vev xaib official:
Gitlab CI / CD yog lub vev xaib thov nrog API uas khaws nws lub xeev hauv cov ntaub ntawv, tswj cov haujlwm / tsim thiab muab cov neeg siv cuam tshuam. GitLab Runner yog ib daim ntawv thov uas cov txheej txheem tsim. Nws tuaj yeem muab faib ua ke thiab ua haujlwm nrog GitLab CI / CD los ntawm API. Rau kev xeem khiav koj xav tau ob qho tib si Gitlab piv txwv thiab Runner.
Piv txwv ntawm lub xeev tam sim no ntawm infrastructure
Tab sis K8s tseem tsis yog mos txwv nyiaj. Txhawm rau nkag siab txhua qhov zoo thiab kev txwv hauv cov ntsiab lus ntawm cov cuab yeej peb tab tom xav txog (Selenium grid, Selenoid), peb yuav tham luv luv txog cov qauv ntawm K8s. Pawg muaj ob hom Nodes: Master Nodes thiab Workers Nodes. Master Nodes yog lub luag haujlwm rau kev tswj hwm, xa tawm thiab teem caij txiav txim siab. Cov neeg ua haujlwm nodes yog qhov uas cov ntawv thov raug khiav. Cov nodes kuj muaj lub thawv ntim ib puag ncig. Hauv peb qhov xwm txheej, qhov no yog Docker, uas yog lub luag haujlwm rau kev ua haujlwm ntawm lub thawv. Tab sis kuj muaj lwm txoj kev daws teeb meem, piv txwv li thawv. Nws yog ib qho tseem ceeb kom nkag siab tias kev ntsuas los yog kev kho tus kheej tsis siv ncaj qha rau cov ntim khoom. Qhov no yog siv los ntawm kev ntxiv / txo tus naj npawb ntawm cov pods, uas nyob rau hauv lem muaj ntim (feem ntau yog ib lub thawv rau ib lub pod, tab sis nyob ntawm seb txoj hauj lwm yuav muaj ntau dua). Lub high-theem hierarchy muaj cov neeg ua hauj lwm nodes, nyob rau hauv uas muaj pods, nyob rau hauv uas cov thawv yog tsa.
Qhov kev ntsuas qhov ntsuas yog qhov tseem ceeb thiab tuaj yeem siv rau ob leeg hauv ib pawg ntawm pawg-pool thiab pods hauv ib qho. Muaj 2 hom kev scaling uas siv rau ob qho tib si nodes thiab pods. Thawj hom yog kab rov tav - scaling tshwm sim los ntawm kev nce tus naj npawb ntawm cov nodes / pods. Hom no zoo dua. Qhov thib ob hom yog, raws li, ntsug. Scaling yog nqa tawm los ntawm kev nce qhov loj ntawm nodes / pods, thiab tsis yog lawv tus lej.
Tam sim no cia saib peb cov cuab yeej hauv cov ntsiab lus ntawm cov ntsiab lus saum toj no.
Selenium daim phiaj
Raws li tau hais ua ntej, Selenium grid yog cov cuab yeej nrov heev, thiab nws tsis xav tsis thoob tias nws tau ntim khoom. Yog li ntawd, nws tuaj yeem tsis xav tsis thoob tias Selenium daim phiaj tuaj yeem xa mus rau hauv K8s. Ib qho piv txwv ntawm yuav ua li cas thiaj nrhiav tau nyob rau hauv lub chaw khaws ntaub ntawv K8s. Raws li ib txwm muaj, kuv xa cov ntawv txuas rau qhov kawg ntawm ntu. Tsis tas li ntawd, cov lus qhia qhia yuav ua li cas ua qhov no hauv Terraform. Kuj tseem muaj cov lus qhia txog yuav ua li cas ntsuas tus naj npawb ntawm cov pods uas muaj cov ntim browser. Tab sis qhov tsis siv neeg scaling muaj nuj nqi nyob rau hauv cov ntsiab lus ntawm K8s tseem tsis yog ib txoj hauj lwm pom tseeb kiag li. Thaum kuv pib kawm, kuv tsis tau pom ib qho kev taw qhia lossis kev pom zoo. Tom qab ob peb qhov kev tshawb fawb thiab kev sim nrog kev txhawb nqa ntawm pab pawg DevOps, peb tau xaiv txoj hauv kev ntawm kev tsa cov thawv nrog qhov tsim nyog browsers hauv ib lub plhaub, uas nyob hauv ib tus neeg ua haujlwm. Txoj kev no tso cai rau peb siv lub tswv yim ntawm kab rov tav scaling ntawm nodes los ntawm kev nce lawv tus lej. Kuv vam tias qhov no yuav hloov pauv mus rau yav tom ntej thiab peb yuav pom ntau thiab ntau cov lus piav qhia ntawm txoj hauv kev zoo dua thiab cov kev daws teeb meem npaj txhij, tshwj xeeb tshaj yog tom qab tso tawm Selenium grid 4 nrog kev hloov pauv sab hauv.
Selenoid:
Selenoid xa tawm hauv K8s tam sim no yog qhov kev poob siab loj tshaj plaws. Lawv tsis sib haum. Hauv txoj kev xav, peb tuaj yeem tsa lub thawv Selenoid hauv lub plhaub, tab sis thaum Selenoid pib tso cov thawv nrog cov browsers, lawv tseem yuav nyob hauv tib lub pod. Qhov no ua rau scaling tsis yooj yim sua thiab, vim li ntawd, kev ua haujlwm ntawm Selenoid hauv pawg yuav tsis txawv ntawm kev ua haujlwm hauv lub tshuab virtual. Kawg ntawm zaj dab neeg.
hli:
Paub txog lub fwj dej no thaum ua haujlwm nrog Selenoid, cov neeg tsim khoom tau tso tawm lub cuab yeej muaj zog dua hu ua Moon. Cov cuab yeej no yog thawj zaug tsim los ua haujlwm nrog Kubernetes thiab, vim li ntawd, autoscaling feature tuaj yeem siv thiab yuav tsum tau siv. Ntxiv mus, kuv xav hais tias tam sim no nws yog qhov tsuas yog ib lub cuab yeej hauv Selenium ntiaj teb, uas muaj haiv neeg K8s pawg txhawb nqa tawm ntawm lub thawv (tsis muaj ntxiv lawm, saib cov cuab yeej tom ntej ). Cov yam ntxwv tseem ceeb ntawm Moon uas muab kev txhawb nqa no yog:
Tsis muaj teb chaws kiag li. Selenoid khaws cia hauv cov ntaub ntawv nco txog tam sim no tab tom ua haujlwm browser. Yog tias vim li cas nws cov txheej txheem sib tsoo - tom qab ntawd txhua qhov kev sib tw khiav tau ploj. Moon contrarily tsis muaj lub xeev sab hauv thiab tuaj yeem rov ua dua hla cov chaw zov me nyuam. Cov kev sib tham hauv browser tseem muaj sia nyob txawm tias ib lossis ntau qhov rov qab mus.
Yog li, Moon yog ib qho kev daws teeb meem zoo, tab sis muaj ib qho teeb meem: nws tsis yog dawb. Tus nqi nyob ntawm seb muaj pes tsawg zaus. Koj tsuas tuaj yeem khiav 0-4 zaug pub dawb, uas tsis muaj txiaj ntsig tshwj xeeb. Tab sis, pib los ntawm kev sib kho thib tsib, koj yuav tau them $ 5 rau txhua qhov. Qhov xwm txheej yuav txawv ntawm lub tuam txhab mus rau lub tuam txhab, tab sis nyob rau hauv peb cov ntaub ntawv, siv Moon yog pointless. Raws li kuv tau piav qhia saum toj no, peb tuaj yeem khiav VMs nrog Selenium Grid ntawm kev thov lossis nce cov Nodes hauv pawg. Txog kwv yees li ib lub raj xa dej, peb tso tawm 500 browsers thiab nres tag nrho cov peev txheej tom qab kev sim ua tiav. Yog tias peb siv Moon, peb yuav tau them ntxiv 500 x 5 = $ 2500 toj ib hlis, txawm li cas los xij peb khiav kev xeem ntau npaum li cas. Ib zaug ntxiv, kuv tsis tau hais tias tsis txhob siv Moon. Rau koj cov dej num, qhov no tuaj yeem yog qhov kev daws teeb meem tseem ceeb, piv txwv li, yog tias koj muaj ntau txoj haujlwm / pab pawg hauv koj lub koom haum thiab koj xav tau ib pawg loj loj rau txhua tus. Raws li ib txwm muaj, kuv tso qhov txuas thaum kawg thiab pom zoo ua txhua qhov tsim nyog suav nrog hauv cov ntsiab lus ntawm koj txoj haujlwm.