Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Part 1: Web/Android

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: tsab xov xwm no yog txhais ua lus Lavxias ntawm thawj tsab xov xwm "DevOps cov cuab yeej tsis yog rau DevOps xwb. "Lub tsev kuaj automation infrastructure los ntawm kos." Txawm li cas los xij, tag nrho cov duab kos, txuas, cov lus qhia thiab cov ntsiab lus tau khaws cia hauv cov lus qub kom tsis txhob cuam tshuam lub ntsiab lus thaum txhais ua lus Lavxias. Kuv xav kom koj zoo siab kawm!

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Tam sim no, DevOps tshwj xeeb yog ib qho ntawm qhov xav tau tshaj plaws hauv kev lag luam IT. Yog tias koj qhib cov chaw nrhiav haujlwm nrov thiab lim los ntawm cov nyiaj hli, koj yuav pom tias DevOps cov haujlwm ntsig txog yog nyob rau saum cov npe. Txawm li cas los xij, nws yog ib qho tseem ceeb kom nkag siab tias qhov no feem ntau yog hais txog 'Senior' txoj haujlwm, uas txhais tau hais tias tus neeg sib tw muaj kev txawj ntse, kev paub txog technology thiab cov cuab yeej. Qhov no kuj los nrog qib siab ntawm lub luag haujlwm cuam tshuam nrog kev ua haujlwm tsis muaj kev cuam tshuam ntawm kev tsim khoom. Txawm li cas los xij, peb pib hnov ​​​​qab tias DevOps yog dab tsi. Thaum xub thawj, nws tsis yog ib tus neeg tshwj xeeb lossis chav haujlwm. Yog tias peb saib cov ntsiab lus ntawm lo lus no, peb yuav pom ntau lub npe zoo nkauj thiab raug, xws li txheej txheem, kev coj ua, kev coj noj coj ua, pawg tswv yim, thiab lwm yam.

Kuv qhov tshwj xeeb yog kev xeem automation engineer (QA automation engineer), tab sis kuv ntseeg tias nws yuav tsum tsis txhob cuam tshuam nrog kev sau ntawv pib-kuaj lossis tsim cov qauv kev xeem. Hauv 2020, kev paub txog automation infrastructure kuj tseem ceeb heev. Qhov no tso cai rau koj los npaj cov txheej txheem automation koj tus kheej, los ntawm kev sim ua kom tau txais txiaj ntsig rau txhua tus neeg muaj feem cuam tshuam raws li koj lub hom phiaj. Yog li ntawd, DevOps kev txawj ntse yog qhov yuav tsum tau ua kom tiav txoj haujlwm. Thiab tag nrho cov no yog qhov zoo, tab sis, hmoov tsis, muaj teeb meem (spoiler: kab lus no sim ua kom yooj yim qhov teeb meem no). Lub ntsiab lus yog tias DevOps nyuaj. Thiab qhov no yog qhov tseeb, vim tias cov tuam txhab yuav tsis them nyiaj ntau rau qee yam uas yooj yim ua ... Hauv ntiaj teb DevOps, muaj ntau cov cuab yeej, cov ntsiab lus, thiab kev coj ua uas yuav tsum tau ua kom zoo. Qhov no yog qhov nyuaj tshwj xeeb thaum pib ntawm txoj haujlwm thiab nyob ntawm qhov kev paub dhau los.

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos
Tau qhov twg los: http://maximelanciauxbi.blogspot.com/2017/04/devops-tools.html

Ntawm no peb yuav zaum kawg nrog cov lus qhia thiab tsom mus rau lub hom phiaj ntawm tsab xov xwm no. 

Zaj lus no hais txog dab tsi?

Hauv tsab xov xwm no, kuv yuav qhia kuv qhov kev paub dhau los ntawm kev tsim qhov kev sim automation infrastructure. Muaj ntau qhov chaw ntawm cov ntaub ntawv hauv Is Taws Nem txog ntau yam cuab yeej thiab yuav siv lawv li cas, tab sis kuv xav saib lawv hauv cov ntsiab lus ntawm automation. Kuv ntseeg tias ntau tus kws tshaj lij automation tau paub txog qhov xwm txheej thaum tsis muaj leej twg tsuas yog koj khiav cov kev sim tsim lossis saib xyuas lawv. Yog li ntawd, cov kev xeem dhau los dhau los thiab koj yuav tsum siv sijhawm hloov kho lawv. Ib zaug ntxiv, thaum pib ntawm txoj haujlwm, qhov no tuaj yeem yog ib txoj haujlwm nyuaj: ua tib zoo txiav txim siab seb cov cuab yeej twg yuav tsum pab tshem tawm qhov teeb meem, xaiv, teeb tsa thiab tswj lawv li cas. Qee tus neeg sim tig mus rau DevOps (tib neeg) rau kev pab thiab, cia peb ua siab ncaj, txoj hauv kev no ua haujlwm. Feem ntau qhov no yuav yog qhov kev xaiv nkaus xwb vim peb tsis muaj qhov pom kev rau txhua qhov kev vam khom. Tab sis raws li peb paub, DevOps yog cov neeg tsis khoom ntau, vim lawv yuav tsum xav txog tag nrho lub tuam txhab kev tsim kho, kev xa tawm, kev saib xyuas, microservices thiab lwm yam haujlwm zoo sib xws nyob ntawm lub koom haum / pab pawg. Raws li feem ntau cov ntaub ntawv, automation tsis yog qhov tseem ceeb. Hauv qhov xwm txheej zoo li no, peb yuav tsum sim ua txhua yam ua tau ntawm peb feem txij thaum pib txog thaum xaus. Qhov no yuav txo qis kev vam khom, ua kom nrawm nrawm dua, txhim kho peb cov kev txawj ntse thiab tso cai rau peb pom cov duab loj ntawm qhov tshwm sim.

Cov kab lus nthuav tawm cov cuab yeej nrov tshaj plaws thiab nrov tshaj plaws thiab qhia tau hais tias yuav siv lawv li cas los tsim kom tau ib qho automation infrastructure ib kauj ruam. Txhua pab pawg tau sawv cev los ntawm cov cuab yeej uas tau sim los ntawm kev paub txog tus kheej. Tab sis qhov ntawd tsis tau txhais hais tias koj yuav tsum siv tib yam. Cov cuab yeej lawv tus kheej tsis yog ib qho tseem ceeb, lawv tshwm sim thiab dhau los lawm. Peb txoj haujlwm engineering yog kom nkag siab cov ntsiab lus tseem ceeb: vim li cas peb xav tau cov cuab yeej no thiab cov teeb meem ua haujlwm dab tsi peb tuaj yeem daws nrog lawv cov kev pab. Tias yog vim li cas thaum kawg ntawm txhua ntu kuv tso cov ntawv txuas mus rau cov cuab yeej zoo sib xws uas yuav siv tau hauv koj lub koom haum.

Dab tsi tsis yog hauv kab lus no

Kuv rov hais dua ib zaug ntxiv tias tsab xov xwm tsis yog hais txog cov cuab yeej tshwj xeeb, yog li yuav tsis muaj cov kab lus los ntawm cov ntaub ntawv thiab cov lus piav qhia ntawm cov lus txib tshwj xeeb. Tab sis thaum kawg ntawm txhua ntu kuv tso cov ntawv txuas rau kev kawm ntxaws.

Qhov no ua tau vim: 

  • cov ntaub ntawv no yooj yim heev los nrhiav hauv ntau qhov chaw (cov ntaub ntawv, phau ntawv, cov chav kawm video);
  • yog tias peb pib mus tob, peb yuav tau sau 10, 20, 30 ntu ntawm kab lus no (thaum cov phiaj xwm yog 2-3);
  • Kuv tsuas yog tsis xav nkim koj lub sijhawm vim koj yuav xav siv lwm yam cuab yeej kom ua tiav tib lub hom phiaj.

Xyaum ua haujlwm

Kuv xav kom cov ntaub ntawv no muaj txiaj ntsig zoo rau txhua tus nyeem, thiab tsis yog nyeem thiab tsis nco qab xwb. Hauv txhua qhov kev tshawb fawb, kev xyaum yog ib qho tseem ceeb heev. Rau qhov no kuv tau npaj GitHub repository nrog cov lus qhia step-by-step ntawm yuav ua li cas txhua yam los ntawm kos. Tseem muaj cov ntawv ua tom tsev tos koj kom paub tseeb tias koj tsis mindlessly luam cov kab ntawm cov lus txib uas koj tab tom ua.

Npaj

Kauj ruam
technology
cuab yeej

1
Kev khiav hauv zos (npaj web / android demo tests thiab khiav hauv zos) 
Node.js, Selenium, Appium

2
Version tswj systems 
Cia li mus

3
Kev ntim khoom
Docker, Selenium daim phiaj, Selenoid (Web, Android)

4
CI/CD
Gitlab CI

5
Huab platforms
Google Platform Platform

6
Orchestration
Kubernetes

7
Infrastructure li code (IaC)
Terraform, Ansible

Cov qauv ntawm txhua ntu

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.

Tus nqi rau automation infrastructure

Los ntawm txoj kev xav ntawm infrastructure, khiav hauv zos tsis muab ib qho nqi. Koj tsuas yog xyuas tias cov kev xeem khiav ntawm lub tshuab hauv zos hauv zos browsers thiab simulators. Tab sis nyob rau hauv txhua rooj plaub, qhov no yog qhov tsim nyog pib taw tes.

Piv txwv ntawm lub xeev tam sim no ntawm infrastructure

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Txuas mus tshawb nrhiav

Cov cuab yeej zoo sib xws

  • ib hom lus programming koj nyiam ua ke nrog kev xeem Selenium / Appium;
  • tej kev xeem;
  • tej xeem khiav.

2. Version tswj systems (Git)

Cov lus piav qhia luv luv ntawm kev siv tshuab

Nws yuav tsis yog qhov kev tshwm sim loj rau leej twg yog tias kuv hais tias kev tswj hwm version yog ib feem tseem ceeb ntawm kev txhim kho, ob qho tib si hauv pab pawg thiab tus kheej. Raws li ntau qhov chaw, nws muaj kev nyab xeeb los hais tias Git yog tus sawv cev nrov tshaj plaws. Lub kaw lus tswj hwm muaj ntau yam txiaj ntsig, xws li kev sib faib cov lej, khaws cov qauv, rov qab mus rau cov ceg qub, saib xyuas qhov project keeb kwm, thiab thaub qab. Peb yuav tsis tham txog txhua qhov kev nthuav dav, vim kuv paub tseeb tias koj paub zoo thiab siv nws hauv koj txoj haujlwm txhua hnub. Tab sis yog tias dheev tsis tau, ces kuv xav kom ncua nyeem cov kab lus no thiab sau qhov sib txawv no kom sai li sai tau.

Tus nqi rau automation infrastructure

Thiab ntawm no koj tuaj yeem nug cov lus nug tsim nyog: "Vim li cas nws thiaj qhia peb txog Git? Txhua leej txhua tus paub qhov no thiab siv nws ob qho tib si rau kev txhim kho code thiab rau nws tus kheej-test code. " Koj yuav ua tau yog lawm, tab sis hauv tsab xov xwm no peb tab tom tham txog kev tsim kho vaj tse thiab ntu no ua raws li kev saib ua ntej rau ntu 7: "Infrastructure li Code (IaC)". Rau peb, qhov no txhais tau hais tias tag nrho cov kev tsim kho vaj tse, suav nrog kev sim, tau piav qhia nyob rau hauv daim ntawv code, yog li peb tuaj yeem siv cov txheej txheem versioning rau nws thiab tau txais txiaj ntsig zoo xws li kev txhim kho thiab automation code.

Peb yuav saib IaC kom ntxaws ntxiv hauv Kauj Ruam 7, tab sis txawm tias tam sim no koj tuaj yeem pib siv Git hauv zos los ntawm kev tsim lub chaw cia khoom hauv zos. Daim duab loj yuav nthuav dav thaum peb ntxiv ib qho chaw cia khoom nyob rau hauv cov chaw taws teeb.

Piv txwv ntawm lub xeev tam sim no ntawm infrastructure

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Txuas mus tshawb nrhiav

Cov cuab yeej zoo sib xws

3. Containerization (Docker)

Cov lus piav qhia luv luv ntawm kev siv tshuab

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;
  • teeb meem compatibility ntawm versions ntawm browsers, simulators thiab tsav tsheb;
  • tsis muaj qhov chaw sib cais rau browsers / simulators, uas yog qhov tseem ceeb tshwj xeeb rau kev sib tw khiav;
  • nyuaj rau tswj thiab tswj yog tias koj xav tau khiav 10, 50, 100 lossis txawm 1000 browsers tib lub sijhawm.

Tab sis txij li Selenium yog cov cuab yeej siv hluav taws xob nrov tshaj plaws thiab Docker yog cov cuab yeej ntim khoom nrov tshaj plaws, nws yuav tsum tuaj raws li tsis muaj kev xav tsis thoob uas ib tus neeg tau sim ua ke los tsim cov cuab yeej muaj zog los daws cov teeb meem saum toj no. Cia peb xav txog cov kev daws teeb meem zoo li no. 

Selenium daim phiaj hauv docker

Cov cuab yeej no yog qhov nrov tshaj plaws hauv ntiaj teb Selenium rau kev khiav ntau lub browsers ntawm ntau lub tshuab thiab tswj lawv los ntawm lub hauv paus hub. Txhawm rau pib, koj yuav tsum sau npe tsawg kawg 2 ntu: Hub thiab Node(s). Hub yog lub hauv paus ntawm lub hauv paus uas tau txais txhua qhov kev thov los ntawm kev xeem thiab faib lawv mus rau qhov tsim nyog Nodes. Rau txhua Node peb tuaj yeem teeb tsa ib qho kev teeb tsa tshwj xeeb, piv txwv li, los ntawm kev qhia qhov xav tau browser thiab nws cov version. Txawm li cas los xij, peb tseem yuav tsum tau saib xyuas cov neeg tsav tsheb sib xws ntawm tus browser peb tus kheej thiab nruab rau ntawm qhov xav tau Nodes. Vim li no, Selenium grid tsis siv rau hauv nws daim ntawv dawb huv, tshwj tsis yog thaum peb xav tau ua haujlwm nrog browsers uas tsis tuaj yeem nruab rau Linux OS. Rau txhua qhov xwm txheej, qhov kev hloov pauv tau zoo thiab qhov tseeb yuav yog siv Docker dluab los khiav Selenium grid Hub thiab Nodes. Txoj hauv kev no ua kom yooj yim rau kev tswj hwm ntawm node, txij li peb tuaj yeem xaiv cov duab peb xav tau nrog cov sib xws ntawm browsers thiab cov tsav tsheb twb tau teeb tsa.

Txawm hais tias muaj kev tshuaj xyuas tsis zoo txog kev ruaj ntseg, tshwj xeeb tshaj yog thaum khiav ntau ntawm Nodes nyob rau hauv parallel, Selenium daim phiaj tseem yog cov cuab yeej nrov tshaj plaws rau kev khiav Selenium kev xeem nyob rau hauv parallel. Nws yog ib qho tseem ceeb uas yuav tsum nco ntsoov tias ntau yam kev txhim kho thiab kev hloov kho ntawm cov cuab yeej no tau tshwm sim tas li nyob rau hauv qhov chaw qhib, uas tawm tsam ntau yam fwj.

Selenoid rau Web

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. 

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Txuas mus tshawb nrhiav

Cov cuab yeej zoo sib xws

  • 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

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Txuas mus tshawb nrhiav

Cov cuab yeej zoo sib xws

5. Huab platforms

Cov lus piav qhia luv luv ntawm kev siv tshuab

Hauv seem no peb yuav tham txog ib qho kev nyiam hu ua 'public huab'. Txawm hais tias muaj txiaj ntsig zoo heev uas cov tshuab virtualization thiab ntim khoom tau piav qhia saum toj no muab, peb tseem xav tau cov khoom siv suav. Cov tuam txhab yuav cov servers kim lossis xauj cov chaw zov me nyuam, tab sis qhov no nws yog ib qho tsim nyog los ua kev suav (qee zaum tsis muaj tseeb) ntawm peb yuav xav tau ntau npaum li cas, seb peb yuav siv lawv 24/7 thiab rau lub hom phiaj twg. Piv txwv li, kev tsim khoom yuav tsum muaj lub server khiav XNUMX/XNUMX, tab sis peb puas xav tau cov peev txheej zoo sib xws rau kev sim sab nraum lub sijhawm ua haujlwm? Nws kuj yog nyob ntawm hom kev sim ua. Ib qho piv txwv yuav yog qhov kev xeem thauj khoom / kev ntxhov siab uas peb npaj yuav khiav lub sijhawm tsis ua haujlwm kom tau txais txiaj ntsig rau hnub tom ntej. Tab sis qhov tseeb XNUMX/XNUMX neeg rau zaub mov muaj tsis tas rau qhov kawg-rau-kawg automated xeem thiab tshwj xeeb tshaj yog tsis yog rau phau ntawv xeem ib puag ncig. Rau cov xwm txheej zoo li no, nws yuav yog qhov zoo kom tau txais ntau cov peev txheej raws li qhov xav tau ntawm kev thov, siv lawv, thiab tsis them nyiaj thaum lawv tsis xav tau ntxiv lawm. Ntxiv mus, nws yuav zoo heev kom tau txais lawv tam sim ntawd los ntawm kev ua ob peb nas clicks lossis khiav ob peb tsab ntawv. Qhov no yog dab tsi huab pej xeem siv rau. Wb saib lub ntsiab txhais:

"Lub huab huab huab tau txhais tias yog cov kev pabcuam hauv computer muab los ntawm cov neeg muab kev pabcuam thib peb hauv Internet, ua rau lawv muaj rau txhua tus neeg uas xav siv lossis yuav lawv. Tej zaum lawv yuav pub dawb lossis muag raws li qhov xav tau, tso cai rau cov neeg siv khoom tsuas yog them rau ib qho kev siv rau CPU cycles, cia, lossis bandwidth lawv haus. "

Muaj kev xav tias pej xeem huab yog kim. Tab sis lawv lub tswv yim tseem ceeb yog txo cov nqi tuam txhab. Raws li tau hais ua ntej, huab cua pej xeem tso cai rau koj kom tau txais cov peev txheej ntawm kev thov thiab them nyiaj rau lub sijhawm koj siv lawv. Tsis tas li ntawd, qee zaum peb tsis nco qab tias cov neeg ua haujlwm tau txais cov nyiaj hli, thiab cov kws tshaj lij kuj yog cov peev txheej kim. Nws yuav tsum raug coj mus rau hauv tus account tias huab cua pej xeem ua rau kev txhawb nqa kev txhawb nqa yooj yim dua, uas tso cai rau cov neeg ua haujlwm tsom mus rau cov haujlwm tseem ceeb dua. 

Tus nqi rau automation infrastructure

Dab tsi tshwj xeeb peb xav tau rau kev xeem UI thaum kawg? Yeej, cov no yog cov tshuab virtual lossis pawg (peb yuav tham txog Kubernetes hauv ntu tom ntej) rau kev khiav browsers thiab emulators. Qhov ntau browsers thiab emulators peb xav khiav ib txhij, ntau CPU thiab nco xav tau thiab nyiaj ntau peb yuav tsum them rau nws. Yog li, pej xeem huab nyob rau hauv cov ntsiab lus ntawm kev xeem automation tso cai rau peb mus khiav ib tug loj tus naj npawb (100, 200, 1000 ...) ntawm browsers / emulators ntawm kev thov, tau txais kev xeem kom sai li sai tau thiab tsis them nyiaj rau xws li insanely resource-intensive. zog. 

Cov neeg muab kev pabcuam huab nrov tshaj plaws yog Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP). Cov lus qhia yuav ua li cas muab piv txwv ntawm kev siv GCP, tab sis feem ntau nws tsis muaj teeb meem dab tsi koj siv rau kev ua haujlwm automation. Lawv tag nrho muab kwv yees li tib lub functionality. Feem ntau, xaiv ib tus neeg muab kev pabcuam, kev tswj hwm tsom mus rau lub tuam txhab tag nrho cov kev tsim kho vaj tse thiab kev lag luam uas yuav tsum tau ua, uas yog dhau ntawm cov kab lus no. Rau automation engineers, nws yuav nthuav ntau dua los sib piv kev siv huab nrog kev siv huab platforms tshwj xeeb rau kev sim, xws li Sauce Labs, BrowserStack, BitBar, thiab lwm yam. Yog li cia peb ua thiab! Hauv kuv lub tswv yim, Sauce Labs yog qhov kev sim huab cua nto moo tshaj plaws, uas yog vim li cas kuv siv nws rau kev sib piv. 

GCP vs Sauce Labs rau lub hom phiaj automation:

Cia peb xav txog tias peb yuav tsum tau khiav 8 qhov kev xeem hauv lub vev xaib thiab 8 qhov kev xeem hauv Android ib txhij. Rau qhov no peb yuav siv GCP thiab khiav 2 lub tshuab virtual nrog Selenoid. Ntawm thawj peb yuav tsa 8 lub thawv nrog browsers. Ntawm qhov thib ob muaj 8 ntim nrog emulators. Cia peb saib cov nqi:  

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos
Txhawm rau khiav ib lub thawv nrog Chrome, peb xav tau n1-txoj-1 tsheb. Hauv Android nws yuav yog n1-txoj-4 rau ib tug emulator. Qhov tseeb, txoj hauv kev yooj yim dua thiab pheej yig dua yog los teeb tsa cov neeg siv tshwj xeeb rau CPU / Nco, tab sis tam sim no tsis tseem ceeb rau kev sib piv nrog Sauce Labs.

Thiab ntawm no yog cov nqi se rau kev siv Sauce Labs:

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos
Kuv ntseeg tias koj twb pom qhov txawv, tab sis kuv tseem yuav muab ib lub rooj nrog kev suav rau peb txoj haujlwm:

Yuav tsum muaj peev txheej
Lub hli
Cov sijhawm ua haujlwm(8 teev sawv ntxov - 8 teev tsaus ntuj)
Cov sijhawm ua haujlwm+ Preemptable

GCP rau Web
n1-standard-1 x 8 = n1-standard-8
$194.18
23 hnub * 12h * 0.38 = $104.88 
23 hnub * 12h * 0.08 = $22.08

Sauce Labs rau Web
Virtual Cloud8 kev xeem sib npaug
$1.559
-
-

GCP rau Android
n1-standard-4 x 8: n1-standard-16
$776.72
23 hnub * 12h * 1.52 = $419.52 
23 hnub * 12h * 0.32 = $88.32

Sauce Labs rau Android
Cov cuab yeej tiag Cloud 8 qhov kev xeem sib npaug
$1.999
-
-

Raws li koj tuaj yeem pom, qhov sib txawv ntawm tus nqi yog qhov loj, tshwj xeeb tshaj yog tias koj khiav kev xeem tsuas yog thaum lub sijhawm ua haujlwm kaum ob teev. Tab sis koj tuaj yeem txiav cov nqi ntxiv yog tias koj siv cov tshuab ua ntej. Nws yog dab tsi?

Ib qho preemptible VM yog ib qho piv txwv uas koj tuaj yeem tsim thiab khiav ntawm tus nqi qis dua li qhov piv txwv. Txawm li cas los xij, Compute Engine yuav xaus (preempt) cov xwm txheej no yog tias nws xav tau kev nkag mus rau cov peev txheej rau lwm yam haujlwm. Preemptible piv txwv yog ntau tshaj Compute Cav muaj peev xwm, yog li lawv muaj nws txawv nrog kev siv.

Yog tias koj cov apps tsis raug ua txhaum cai thiab tuaj yeem tiv thaiv qhov ua tau ua ntej preemptions, ces cov xwm txheej preemptible tuaj yeem txo koj cov nqi Compute Engine ntau heev. Piv txwv li, batch processing txoj hauj lwm tuaj yeem khiav ntawm qhov xwm txheej ua ntej. Yog tias qee qhov xwm txheej ntawd xaus thaum ua tiav, txoj haujlwm qeeb tab sis tsis nres kiag li. Cov xwm txheej preemptible ua tiav koj cov haujlwm ua haujlwm batch yam tsis tau tso cov haujlwm ntxiv rau koj qhov xwm txheej uas twb muaj lawm thiab tsis tas yuav kom koj them tus nqi tag nrho rau cov xwm txheej ib txwm muaj.

Thiab tseem tsis dhau! Qhov tseeb tiag, kuv paub tseeb tias tsis muaj leej twg ua qhov kev xeem rau 12 teev yam tsis tau so. Thiab yog tias muaj, ces koj tuaj yeem pib thiab nres cov tshuab virtual thaum lawv tsis xav tau. Lub sijhawm siv tiag tiag tuaj yeem txo qis rau 6 teev hauv ib hnub. Tom qab ntawd qhov kev them nyiaj hauv cov ntsiab lus ntawm peb txoj haujlwm yuav txo qis rau $ 11 ib hlis rau 8 browsers. Qhov no tsis yog qhov zoo? Tab sis nrog cov tshuab preemptible peb yuav tsum tau ceev faj thiab npaj rau kev cuam tshuam thiab tsis ruaj khov, txawm tias cov xwm txheej no tuaj yeem muab rau thiab ua haujlwm hauv software. Nws tsim nyog nws!

Tab sis tsis yog kuv hais tias 'tsis txhob siv huab sim ua liaj ua teb'. Lawv muaj ntau qhov zoo. Ua ntej tshaj plaws, qhov no tsis yog lub tshuab virtual nkaus xwb, tab sis kev sim ua kom tiav cov kev daws teeb meem nrog cov txheej txheem ua haujlwm tawm ntawm lub npov: kev nkag mus rau tej thaj chaw deb, cav, screenshots, video kaw, ntau yam browsers thiab lub cev mobile. Hauv ntau qhov xwm txheej, qhov no tuaj yeem yog qhov tseem ceeb ntawm kev xaiv khaub ncaws. Kev sim platforms tshwj xeeb tshaj yog muaj txiaj ntsig zoo rau IOS automation, thaum pej xeem huab tsuas tuaj yeem muab Linux / Windows systems. Tab sis peb yuav tham txog iOS nyob rau hauv cov lus hauv qab no. Kuv pom zoo kom ib txwm saib qhov xwm txheej thiab pib los ntawm cov haujlwm: qee zaum nws pheej yig dua thiab siv tau zoo dua los siv huab cua pej xeem, thiab lwm qhov kev sim platforms yeej tsim nyog rau cov nyiaj siv.

Piv txwv ntawm lub xeev tam sim no ntawm infrastructure

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Txuas mus tshawb nrhiav

Cov cuab yeej zoo sib xws:

6. Orchestration

Cov lus piav qhia luv luv ntawm kev siv tshuab

Kuv muaj xov xwm zoo - peb yuav luag thaum kawg ntawm tsab xov xwm! Tam sim no, peb cov txheej txheem automation muaj cov vev xaib thiab Android kev xeem, uas peb khiav los ntawm GitLab CI ua ke, siv Docker-enabled cov cuab yeej: Selenium grid thiab Selenoid. Ntxiv mus, peb siv cov tshuab virtual tsim los ntawm GCP los tuav cov ntim nrog browsers thiab emulators. Txhawm rau txo cov nqi, peb pib cov tshuab virtual no tsuas yog ntawm kev thov thiab tso tseg lawv thaum kuaj tsis tau ua. Puas muaj lwm yam uas tuaj yeem txhim kho peb cov infrastructure? Cov lus teb yog yog! Ntsib Kubernetes (K8s)!

Ua ntej, cia saib yuav ua li cas cov lus orchestration, pawg, thiab Kubernetes muaj feem cuam tshuam rau ib leeg. Nyob rau theem siab, orchestration yog qhov system uas siv thiab tswj cov ntawv thov. Rau kev xeem automation, xws li ntim cov ntawv thov yog Selenium grid thiab Selenoid. Docker thiab K8s sib koom ua ke. Thawj yog siv rau daim ntawv thov xa mus, qhov thib ob rau orchestration. Nyob rau hauv lem, K8s yog ib pawg. Lub luag haujlwm ntawm pawg yog siv VMs ua Nodes, uas tso cai rau koj los nruab ntau yam haujlwm, cov haujlwm thiab cov kev pabcuam hauv ib lub server (cluster). Yog tias ib qho ntawm Nodes ua tsis tiav, lwm Nodes yuav tuaj tos, uas ua kom tsis muaj kev cuam tshuam ntawm peb daim ntawv thov. Ntxiv rau qhov no, K8s muaj kev ua haujlwm tseem ceeb ntsig txog kev ntsuas, ua tsaug uas peb tau txais cov txiaj ntsig zoo ntawm cov peev txheej raws li kev thauj khoom thiab teeb tsa.

Qhov tseeb, manually deploying Kubernetes los ntawm kos tsis yog ib txoj hauj lwm tseem ceeb heev. Kuv mam li tso ib qhov txuas mus rau lub npe nrov yuav ua li cas qhia "Kubernetes Txoj Kev nyuaj" thiab yog tias koj txaus siab, koj tuaj yeem xyaum nws. Tab sis, hmoov zoo, muaj lwm txoj hauv kev thiab cov cuab yeej siv. Txoj hauv kev yooj yim tshaj plaws yog siv Google Kubernetes Cav (GKE) hauv GCP, uas yuav tso cai rau koj kom tau txais cov pawg npaj ua tiav hauv ob peb nias. Kuv pom zoo kom siv txoj hauv kev no los pib kawm, vim nws yuav tso cai rau koj tsom mus rau kev kawm paub siv K8s rau koj cov dej num es tsis txhob kawm seb cov khoom siv sab hauv yuav tsum tau ua ke li cas. 

Tus nqi rau automation infrastructure

Cia peb saib ob peb yam tseem ceeb uas K8s muab:

  • kev xa tawm daim ntawv thov: siv ntau lub nodes pawg es tsis txhob VMs;
  • dynamic scaling: txo tus nqi ntawm cov peev txheej uas tsuas yog siv raws li qhov xav tau;
  • kho tus kheej: tsis siv neeg rov qab ntawm cov txiv laum huab xeeb (raws li qhov tshwm sim ntawm cov ntim khoom kuj rov qab los);
  • rollout ntawm kev hloov tshiab thiab rollbacks ntawm kev hloov pauv yam tsis muaj downtime: hloov kho cov cuab yeej, browsers thiab emulators tsis cuam tshuam kev ua haujlwm ntawm cov neeg siv tam sim no

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.

Callisto: (Nco ntsoov! Qhov no tsis yog nyob rau hauv thawj tsab xov xwm thiab tsuas yog muaj nyob rau hauv Lavxias teb sab txhais lus)

Raws li kuv tau hais, Selenium yog cov cuab yeej nrov heev, thiab IT kev lag luam tab tom txhim kho sai heev. Thaum kuv tab tom ua haujlwm ntawm kev txhais lus, ib qho kev cog lus tshiab hu ua Callisto tau tshwm sim hauv lub vev xaib (nyob zoo Cypress thiab lwm yam Selenium killers). Nws ua haujlwm ib txwm nyob nrog K8s thiab tso cai rau koj khiav Selenoid ntim hauv cov pods, faib thoob Nodes. Txhua yam ua haujlwm tawm ntawm lub thawv, suav nrog autoscaling. Zoo heev, tab sis yuav tsum tau sim. Kuv twb tau tswj kom xa cov cuab yeej no thiab khiav ntau qhov kev sim. Tab sis nws tseem ntxov dhau los txiav txim siab, tom qab tau txais cov txiaj ntsig ntev ntev, tej zaum kuv yuav ua qhov kev tshuaj xyuas hauv cov ntawv yav tom ntej. Txog tam sim no kuv tsuas yog tso cov txuas rau kev tshawb fawb ywj pheej.  

Piv txwv ntawm lub xeev tam sim no ntawm infrastructure

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Txuas mus tshawb nrhiav

Cov cuab yeej zoo sib xws

7. Infrastructure li Code (IaC)

Cov lus piav qhia luv luv ntawm kev siv tshuab

Thiab tam sim no peb tuaj rau ntu kawg. Feem ntau, cov thev naus laus zis no thiab cov haujlwm muaj feem cuam tshuam tsis yog lub luag haujlwm ntawm automation engineers. Thiab muaj laj thawj rau qhov no. Ua ntej, hauv ntau lub koom haum, cov teeb meem kev tsim kho vaj tse nyob rau hauv kev tswj hwm ntawm DevOps department thiab cov pab pawg txhim kho tsis tshua xav txog dab tsi ua rau cov kav dej ua haujlwm thiab yuav ua li cas txhua yam txuas nrog nws xav tau kev txhawb nqa. Qhov thib ob, cia peb ua siab ncaj, kev coj ua ntawm Infrastructure li Code (IaC) tseem tsis tau txais los ntawm ntau lub tuam txhab. Tab sis nws tau twv yuav raug hu ua ib qho kev nyiam thiab nws yog ib qho tseem ceeb uas yuav tau sim koom nrog cov txheej txheem, cov txheej txheem thiab cov cuab yeej cuam tshuam nrog nws. Los yog tsawg kawg nyob rau hnub tim.

Cia peb pib nrog kev txhawb siab rau kev siv txoj hauv kev no. Peb twb tau tham txog tias kom khiav cov kev xeem hauv GitlabCI, peb yuav xav tau yam tsawg kawg nkaus cov peev txheej los khiav Gitlab Runner. Thiab txhawm rau khiav ntim nrog browsers / emulators, peb yuav tsum tau tshwj tseg VM lossis pawg. Ntxiv nrog rau kev sim cov peev txheej, peb xav tau ntau lub peev xwm los txhawb kev txhim kho, kev tsim kho, ib puag ncig tsim khoom, uas kuj suav nrog cov ntaub ntawv, cov sijhawm siv tsis siv neeg, kev teeb tsa network, kev sib npaug, cov neeg siv txoj cai, thiab lwm yam. Qhov teeb meem tseem ceeb yog qhov yuav tsum tau siv zog los txhawb txhua tus. Muaj ntau txoj hauv kev uas peb tuaj yeem hloov pauv thiab nthuav tawm cov hloov tshiab. Piv txwv li, nyob rau hauv cov ntsiab lus ntawm GCP, peb tuaj yeem siv UI console hauv qhov browser thiab ua txhua yam haujlwm los ntawm kev nyem khawm. Lwm txoj hauv kev yuav yog siv API hu los cuam tshuam nrog huab chaw, lossis siv gcloud hais kom ua kab hluav taws xob los ua qhov kev xav tau. Tab sis nrog ib tug loj tus naj npawb ntawm cov chaw sib txawv thiab infrastructure, nws yuav nyuaj los yog txawm tsis yooj yim sua ua txhua yam kev khiav hauj lwm manually. Tsis tas li ntawd, tag nrho cov kev coj ua no yog tswj tsis tau. Peb tsis tuaj yeem xa lawv mus rau kev tshuaj xyuas ua ntej ua tiav, siv cov txheej txheem tswj hwm, thiab nrawm nrawm rov qab cov kev hloov pauv uas coj mus rau qhov xwm txheej. Txhawm rau daws cov teeb meem zoo li no, cov kws tsim khoom tsim thiab tsim cov ntawv sau tsis siv neeg bash / plhaub, uas tsis zoo dua li cov txheej txheem dhau los, vim tias lawv tsis yooj yim nyeem, nkag siab, tswj thiab hloov kho hauv cov txheej txheem txheej txheem.

Hauv tsab xov xwm no thiab yuav qhia li cas, kuv siv 2 cov cuab yeej cuam tshuam nrog IaC xyaum. Cov no yog Terraform thiab Ansible. Qee tus neeg ntseeg tias nws tsis muaj txiaj ntsig los siv lawv tib lub sijhawm, vim tias lawv cov haujlwm zoo sib xws thiab lawv hloov pauv tau. Tab sis qhov tseeb yog tias thaum xub thawj lawv tau muab cov haujlwm sib txawv kiag li. Thiab qhov tseeb tias cov cuab yeej no yuav tsum ua kom sib ntxiv tau lees paub ntawm kev nthuav qhia sib koom los ntawm cov neeg tsim khoom sawv cev rau HashiCorp thiab RedHat. Qhov sib txawv ntawm lub tswv yim yog tias Terraform yog ib qho khoom siv los tswj cov servers lawv tus kheej. Thaum Ansible yog lub cuab yeej tswj kev teeb tsa uas nws txoj haujlwm yog los nruab, teeb tsa thiab tswj software ntawm cov servers no.

Lwm qhov tseem ceeb qhov txawv ntawm cov cuab yeej no yog coding style. Tsis zoo li bash thiab Ansible, Terraform siv cov lus tshaj tawm raws li kev piav qhia ntawm lub xeev xav tau kawg kom ua tiav raws li kev ua tiav. Piv txwv li, yog tias peb yuav tsim 10 VMs thiab siv cov kev hloov pauv los ntawm Terraform, ces peb yuav tau txais 10 VMs. Yog tias peb khiav tsab ntawv dua, tsis muaj dab tsi yuav tshwm sim txij li peb twb muaj 10 VMs, thiab Terraform paub txog qhov no vim nws khaws cov xwm txheej tam sim no ntawm cov txheej txheem hauv lub xeev cov ntaub ntawv. Tab sis Ansible siv cov txheej txheem txheej txheem thiab, yog tias koj hais kom nws tsim 10 VMs, tom qab ntawd thawj zaug peb yuav tau txais 10 VMs, zoo ib yam li Terraform. Tab sis tom qab rov pib dua peb yuav twb muaj 20 VMs. Qhov no yog qhov sib txawv tseem ceeb. Hauv cov txheej txheem txheej txheem, peb tsis khaws lub xeev tam sim no thiab tsuas yog piav qhia txog cov kauj ruam uas yuav tsum tau ua. Tau kawg, peb tuaj yeem tswj tau ntau yam xwm txheej, ntxiv ntau qhov kev kuaj xyuas rau qhov muaj nyob ntawm cov peev txheej thiab lub xeev tam sim no, tab sis tsis muaj qhov cuam tshuam rau peb lub sijhawm thiab siv zog los tswj qhov kev xav no. Tsis tas li ntawd, qhov no ua rau muaj kev pheej hmoo ntawm kev ua yuam kev. 

Ua kom tiav tag nrho cov saum toj no, peb tuaj yeem xaus tias Terraform thiab cov ntawv tshaj tawm yog cov cuab yeej tsim nyog rau kev muab cov servers. Tab sis nws yog qhov zoo dua los muab txoj haujlwm ntawm kev tswj hwm kev teeb tsa rau Ansible. Nrog rau qhov tawm ntawm txoj kev, cia peb saib cov ntaub ntawv siv hauv cov ntsiab lus ntawm automation.

Tus nqi rau automation infrastructure

Qhov tseem ceeb tshaj plaws kom nkag siab ntawm no yog qhov kev sim automation infrastructure yuav tsum raug suav tias yog ib feem ntawm tag nrho cov tuam txhab infrastructure. Qhov no txhais tau tias txhua qhov kev coj ua IaC yuav tsum tau siv thoob ntiaj teb rau cov peev txheej ntawm tag nrho lub koom haum. Leej twg yog lub luag haujlwm rau qhov no nyob ntawm koj cov txheej txheem. Pab pawg DevOps tau ntsib ntau dua hauv cov teeb meem no, lawv pom tag nrho cov duab ntawm qhov tshwm sim. Txawm li cas los xij, QA engineers muaj kev koom tes ntau dua hauv cov txheej txheem ntawm lub tsev automation thiab cov qauv ntawm cov kav dej, uas tso cai rau lawv pom zoo dua txhua qhov kev hloov pauv uas yuav tsum tau ua thiab lub sijhawm rau kev txhim kho. Qhov kev xaiv zoo tshaj plaws yog ua haujlwm ua ke, sib pauv kev paub thiab cov tswv yim kom ua tiav qhov kev xav tau. 

Nov yog qee qhov piv txwv ntawm kev siv Terraform thiab Ansible hauv cov ntsiab lus ntawm kev xeem automation thiab cov cuab yeej peb tau tham ua ntej:

1. Piav qhia txog cov yam ntxwv tsim nyog thiab cov kev txwv ntawm VMs thiab pawg siv Terraform.

2. Siv Ansible, teeb tsa cov cuab yeej tsim nyog rau kev sim: docker, Selenoid, Selenium Grid thiab rub tawm qhov xav tau ntawm browsers / emulators.

3. Siv Terraform, piav qhia cov yam ntxwv ntawm VM uas GitLab Runner yuav raug tso tawm.

4. Nruab GitLab Runner thiab cov cuab yeej tsim nyog nrog siv Ansible, teeb tsa thiab teeb tsa.

Piv txwv ntawm lub xeev tam sim no ntawm infrastructure

Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Txuas mus xyuas:

Cov cuab yeej zoo sib xws

Cia peb suav daws!

Kauj ruam
technology
cuab yeej
Tus nqi rau automation infrastructure

1
Hauv zos khiav
Node.js, Selenium, Appium

  • Cov cuab yeej nrov tshaj plaws rau lub vev xaib thiab txawb
  • Txhawb ntau hom lus thiab platforms (xws li Node.js)

2
Version tswj systems 
Cia li mus

  • Cov txiaj ntsig zoo sib xws nrog kev txhim kho code

3
Kev ntim khoom
Docker, Selenium daim phiaj, Selenoid (Web, Android)

  • Khiav kev xeem nyob rau hauv parallel
  • Ib puag ncig cais
  • Yooj yim, hloov pauv hloov kho tshiab
  • Dynamically nres cov peev txheej uas tsis siv
  • Yooj yim teeb tsa

4
CI/CD
Gitlab CI

  • Kev sim ib feem ntawm cov kav dej
  • Cov lus teb ceev ceev
  • Kev pom rau tag nrho lub tuam txhab / pab pawg

5
Huab platforms
Google Platform Platform

  • Cov peev txheej ntawm kev thov (peb them tsuas yog thaum xav tau)
  • Yooj yim los tswj thiab hloov kho
  • Kev pom thiab kev tswj hwm ntawm txhua qhov peev txheej

6
Orchestration
Kubernetes
Nyob rau hauv cov ntsiab lus ntawm ntim nrog browsers / emulators hauv pods:

  • Scaling/auto scaling
  • Kev kho tus kheej
  • Hloov tshiab thiab rollbacks yam tsis muaj kev cuam tshuam

7
Infrastructure li code (IaC)
Terraform, Ansible

  • Cov txiaj ntsig zoo sib xws nrog kev txhim kho infrastructure
  • Tag nrho cov txiaj ntsig ntawm code versioning
  • Yooj yim los hloov thiab tswj
  • Ua haujlwm siab

Mind map diagrams: evolution of infrastructure

Kauj ruam 1: Hauv zos
Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Kauj ruam 2: VCS
Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Kauj ruam 3: Containerization 
Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Kauj ruam 4: CI/CD 
Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Kauj ruam 5: Huab Platforms
Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Kauj ruam 6: Orchestration
Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

qib 7:iac
Cov cuab yeej DevOps tsis yog rau DevOps xwb. Tus txheej txheem ntawm kev tsim ib qho kev xeem automation infrastructure los ntawm kos

Yuav ua li cas yog tom ntej no?

Yog li, qhov no yog qhov kawg ntawm tsab xov xwm. Tab sis nyob rau hauv xaus, kuv xav tsim ib co kev pom zoo nrog koj.

Los ntawm koj sab
Raws li tau hais thaum pib, kuv xav kom tsab xov xwm yuav siv tau thiab pab koj siv cov kev paub uas tau txais hauv kev ua haujlwm tiag tiag. kuv ntxiv lawm txuas mus rau phau ntawv qhia tswv yim.

Tab sis txawm tias tom qab ntawd, tsis txhob tso tseg, xyaum, kawm txog kev sib txuas thiab cov phau ntawv, nrhiav seb nws ua haujlwm li cas hauv koj lub tuam txhab, nrhiav qhov chaw uas tuaj yeem txhim kho thiab koom nrog. Hmoov zoo!

Los ntawm kuv sab

Los ntawm lub npe koj tuaj yeem pom tias qhov no tsuas yog thawj ntu xwb. Txawm tias muaj tseeb hais tias nws tau tig los ua loj heev, cov ntsiab lus tseem ceeb tseem tsis tau hais txog ntawm no. Hauv ntu thib ob, kuv npaj yuav saib automation infrastructure hauv cov ntsiab lus ntawm IOS. Vim Apple cov kev txwv ntawm kev khiav iOS simulators tsuas yog ntawm macOS systems, peb cov kev daws teeb meem tau nqaim. Piv txwv li, peb tsis tuaj yeem siv Docker los khiav lub simulator lossis pej xeem huab los khiav cov tshuab virtual. Tab sis qhov no tsis txhais hais tias tsis muaj lwm txoj hauv kev. Kuv yuav sim ua kom koj mus txog hnub nrog cov kev daws teeb meem thiab cov cuab yeej niaj hnub!

Tsis tas li ntawd, kuv tsis tau hais txog cov ncauj lus loj heev ntsig txog kev saib xyuas. Hauv Tshooj 3, Kuv yuav mus saib cov cuab yeej saib xyuas kev lag luam nrov tshaj plaws thiab cov ntaub ntawv thiab kev ntsuas dab tsi los xav txog.

Thiab thaum kawg. Nyob rau hauv lub neej yav tom ntej, kuv npaj yuav tso tawm ib qho kev kawm video txog kev tsim kho vaj tse thiab cov cuab yeej nrov. Tam sim no, muaj ob peb chav kawm thiab cov lus qhuab qhia ntawm DevOps hauv Is Taws Nem, tab sis txhua yam ntaub ntawv tau nthuav tawm hauv cov ntsiab lus ntawm kev txhim kho, tsis yog kev sim automation. Ntawm qhov teeb meem no, kuv xav tau kev tawm tswv yim tiag tiag seb qhov kev kawm no puas yuav nthuav thiab muaj txiaj ntsig rau zej zog ntawm cov neeg sim thiab cov kws ua haujlwm automation. Ua tsaug ua ntej!

Tau qhov twg los: www.hab.com

Ntxiv ib saib