{"id":78676,"date":"2020-04-21T07:42:22","date_gmt":"2020-04-21T05:42:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya"},"modified":"2020-04-21T07:42:22","modified_gmt":"2020-04-21T05:42:22","slug":"devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","title":{"rendered":"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps'i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Osa 1: Web \/ Android<\/h1>\n<p>\n <u>M\u00e4rkus<\/u>: <i>see artikkel on originaali venekeelse t\u00f5lge\u00a0<\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@altunin.alexey.a\/devops-tools-are-not-only-for-devops-building-test-automation-infrastructure-from-scratch-18e351dde938?source=friends_link&amp;sk=54dcbf6ab96c5592d093b50e441f942e\"><i>\u00abDevOps t\u00f6\u00f6riistad pole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri loomine nullist.\u00bb<\/i><\/a><\/noindex><i> Siiski on k\u00f5ik illustratsioonid, lingid, tsitaadid ja terminid s\u00e4ilitatud originaalkeeles, et v\u00e4ltida t\u00e4henduse moonutamist venekeelsel t\u00f5lkel. Soovin teile head \u00f5ppimist!<\/i><\/p>\n<p><img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/3d2ffb8331713a18755213cafac02144.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n Praegu on DevOps eriala \u00fcks n\u00f5utumaid IT-sektoris. Kui avate populaarsed t\u00f6\u00f6otsingu saidid ja seadistate palga filtrid, siis n\u00e4ete, et DevOpsiga seotud ametikohad on loendi alguses. Kuid on oluline m\u00f5ista, et see kehtib peamiselt \u2018Senior\u2019 positsioonide kohta, mis eeldab, et kandidaadil on k\u00f5rge oskuste tase ja teadmised tehnoloogiatest ning t\u00f6\u00f6riistadest. Sellega kaasneb ka k\u00f5rge vastutus, mis on seotud tootmise sujuva toimimisega. Siiski oleme unustamas, mis DevOps tegelikult on. Algusest peale ei olnud see mingi konkreetne inimene v\u00f5i osakond. Kui otsida selle termini m\u00e4\u00e4ratlemisi, leiame palju kauneid ja \u00f5igeid nimis\u00f5nu, nagu metoodika, praktikad, kultuuriline filosoofia, kontseptide kogum ja nii edasi.<\/p>\n<p>Minu spetsialiseerumine on testimise automatiseerimise insener (QA automation engineer), kuid ma usun, et see ei tohiks piirda end ainult automaatsete testide kirjutamise v\u00f5i testimisraamistike arhitektuuri v\u00e4ljat\u00f6\u00f6tamisega. Alates 2020. aastast on automatiseerimise infrastruktuuri tundmine samuti vajalik. See v\u00f5imaldab iseseisvalt korraldada automatiseerimisprotsessi, alustades testide k\u00e4itamisest ja l\u00f5petades tulemuste edastamisega k\u00f5igile asjaosalistele vastavalt seatud eesm\u00e4rkidele. Seet\u00f5ttu on DevOps'i oskused selle t\u00f6\u00f6 t\u00e4itmiseks h\u00e4davajalikud. Ja see k\u00f5ik on hea, kuid kahjuks on \u00fcks probleem (<i>spoiler: k\u00e4esolev artikel p\u00fc\u00fcab seda probleemi lihtsustada<\/i>). Probleem seisneb selles, et DevOps on keeruline. Ja see on ilmne, sest ettev\u00f5tted ei maksa palju selle eest, mis on lihtne teha... DevOps'i maailmas on palju t\u00f6\u00f6riistu, termineid ja praktikaid, millega tutvuda. Eriti raske on see karj\u00e4\u00e4ri alguses ning s\u00f5ltub kogunenud tehnilisest kogemusest.<\/p>\n<p><img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/20712bd4acf881d5346b87f5a2b359d2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAllikas: <noindex><a rel=\"nofollow\" href=\"http:\/\/maximelanciauxbi.blogspot.com\/2017\/04\/devops-tools.html\"> http:\/\/maximelanciauxbi.blogspot.com\/2017\/04\/devops-tools.html<\/a><\/noindex><\/p>\n<p>Siinkohal l\u00f5petame sissejuhatava osa ja keskendume artikli eesm\u00e4rgile.\u00a0<\/p>\n<h3>Millest see artikkel r\u00e4\u00e4gib<\/h3>\n<p>\nSelles artiklis jagan oma kogemusi testimisautomaatika infrastruktuuri loomisel. Internetis on palju teabeallikaid erinevate t\u00f6\u00f6riistade ja nende kasutamise kohta, kuid sooviksin neid k\u00e4sitleda rangelt automaatika kontekstis. Usun, et paljude automatiseerimise inseneride jaoks on tuttav olukord, kus v\u00e4lja t\u00f6\u00f6tatud teste ei k\u00e4ita keegi peale enda ning nende hooldamine j\u00e4\u00e4b t\u00e4helepanuta. Tulemuseks on see, et testid muutuvad aegunuks ja tuleb kulutada aega nende ajakohastamisele. Alustava karj\u00e4\u00e4ri jooksul v\u00f5ib see olla suhteliselt keeruline \u00fclesanne: \u00f5igesti otsustada, millised t\u00f6\u00f6riistad peaksid aitama selle probleemi lahendamisel, kuidas neid valida, seadistada ja hallata. M\u00f5ned testijad p\u00f6\u00f6rduvad abi saamiseks DevOps'i (inimeste) poole ja olgem ausad, see l\u00e4henemine t\u00f6\u00f6tab. Paljudel juhtudel v\u00f5ib see olla ainus valik, kuna meil puudub \u00fclevaade k\u00f5igist s\u00f5ltuvustest. Kuid nagu teame, on DevOps v\u00e4ga h\u00f5ivatud, kuna nad peavad m\u00f5tlema kogu ettev\u00f5tte infrastruktuurile, juurutamisele, j\u00e4lgimisele, mikroteenustele ja muudele sarnastele \u00fclesannetele, s\u00f5ltuvalt organisatsioonist\/tiimist. Nagu tavaliselt, ei ole automatiseerimine prioriteet. Sellisel juhul peame proovima teha k\u00f5ik endast oleneva algusest l\u00f5puni. See v\u00e4hendab s\u00f5ltuvusi, kiirendab t\u00f6\u00f6voogu, t\u00e4iustab meie oskusi ja v\u00f5imaldab n\u00e4ha laiemat pilti toimuvast.<\/p>\n<p>Artiklis on toodud k\u00f5ige n\u00f5udlikumad ja populaarsed t\u00f6\u00f6riistad ning selgitatud, kuidas neid kasutada samm-sammult automatiseerimise infrastruktuuri loomiseks. Igas r\u00fchmas on esitatud t\u00f6\u00f6riistad, mida on testitud isikliku kogemuse p\u00f5hjal. Kuid see ei t\u00e4henda, et peaksite kasutama samu t\u00f6\u00f6riistu. T\u00f6\u00f6riistade enda t\u00e4htsus ei ole oluline, need tulevad ja l\u00e4hevad. Meie inseneride \u00fclesanne on m\u00f5ista p\u00f5hialuseid: miks meil on vaja seda t\u00f6\u00f6riistade r\u00fchma ja milliseid t\u00f6\u00f6\u00fclesandeid saame nende abil lahendada. Seet\u00f5ttu j\u00e4tan iga jaotise l\u00f5pus linke sarnastele t\u00f6\u00f6riistadele, mida teie organisatsioonis v\u00f5ib-olla kasutatakse.<\/p>\n<h3>Mida see artikkel ei k\u00e4sitle<\/h3>\n<p>\nKordan veel kord, et artikkel ei k\u00e4sitle konkreetseid t\u00f6\u00f6riistu, seet\u00f5ttu ei tule siin koodil\u00f5ike dokumentatsioonist ega konkreetsete k\u00e4skude selgitusi. Kuid iga jaotise l\u00f5pus j\u00e4tan lingid p\u00f5hjalikuks tutvumiseks.<\/p>\n<p>See on tehtud p\u00f5hjusel, et:\u00a0<\/p>\n<ul>\n<li>seda materjali on v\u00e4ga lihtne leida erinevates allikates (dokumentatsioon, raamatud, videokursused);<\/li>\n<li>kui me hakkame s\u00fcvitsi minema, peame kirjutama 10, 20, 30 osa sellest artiklist (kuigi plaanis on 2-3);<\/li>\n<li>Ma ei soovi teie aega raisata, kuna te v\u00f5ite soovida kasutada teisi t\u00f6\u00f6riistu samade eesm\u00e4rkide saavutamiseks.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Praktika<\/h3>\n<p>\nSoovin, et see materjal oleks igale lugejale kasulik, mitte lihtsalt loetud ja unustatud. Igas \u00f5ppes on praktika v\u00e4ga oluline osa. Selleks olen valmistanud<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> GitHubi reposti, kus on samm-sammuline juhend, kuidas k\u00f5ike nullist teha<\/a><\/noindex>. Samuti ootab teid kodut\u00f6\u00f6, et olla kindel, et te ei kopeerinud lihtsameelselt k\u00e4ivitatavaid k\u00e4sku. <\/p>\n<h3>Plaani<\/h3>\n<p><\/p>\n<p><strong>Samm<\/strong><br \/>\n<strong>Tehnoloogia<\/strong><br \/>\n<strong>T\u00f6\u00f6riistad<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nKohalik k\u00e4itamine (valmistage veeb \/ android demo testid ja k\u00e4itage neid kohalikult)\u00a0<br \/>\nNode.js, Selenium, Appium<\/p>\n<p><strong>2<\/strong><br \/>\nVersioonihalduss\u00fcsteemid\u00a0<br \/>\nGit<\/p>\n<p><strong>3<\/strong><br \/>\nKonteineriseerimine<br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<\/p>\n<p><strong>4<\/strong><br \/>\nCI \/ CD<br \/>\nGitlab CI<\/p>\n<p><strong>5<\/strong><br \/>\nPilveteenused<br \/>\nGoogle Cloud Platform<\/p>\n<p><strong>6<\/strong><br \/>\nOrkestreerimine<br \/>\nKubernetes<\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktuur kui kood (IaC)<br \/>\nTerraform, Ansible<\/p>\n<p><\/p>\n<h3>Iga jaotise struktuur<\/h3>\n<p>\nKuna jutustuse selge visualiseerimise s\u00e4ilitamiseks on iga jaotis kirjeldatud j\u00e4rgmise plaani kohaselt:<\/p>\n<ul>\n<li>tehnoloogia l\u00fchikirjeldus,<\/li>\n<li>v\u00e4\u00e4rtus automatiseerimisinfrastruktuuri jaoks,<\/li>\n<li>olekuillustratsioon infrastruktuuri jaoks,<\/li>\n<li>\u00f5ppimise lingid,<\/li>\n<li>sarnased t\u00f6\u00f6riistad.<\/li>\n<\/ul>\n<p><\/p>\n<h2>1. Kohalik testide k\u00e4itamine<\/h2>\n<p><\/p>\n<h3>Tehnoloogia l\u00fchikirjeldus<\/h3>\n<p>\nSee on vaid ettevalmistav samm, et k\u00e4ivitada demonstreerivaid teste kohalikke ja kontrollida, et need edukalt l\u00e4bivad. Praktikas kasutatakse Node.js-i, kuid programmeerimiskeel ja platvorm ei ole olulised ning v\u00f5ib kasutada ka neid, mida teie ettev\u00f5ttes kasutatakse.\u00a0<\/p>\n<p>Kuid automaatimist\u00f6\u00f6riistadena soovitan kasutada Selenium WebDriveri web-platvormide jaoks ja Appiumi Android-platvormide jaoks, sest j\u00e4rgmistel sammudel kasutame Docker-pilte, mis on kohandatud nende t\u00f6\u00f6riistadega t\u00f6\u00f6tamiseks. Veelgi enam, viidates t\u00f6\u00f6kuulutuste n\u00f5uetele, on need t\u00f6\u00f6riistad turul k\u00f5ige n\u00f5udlikumad.<\/p>\n<p>Kuidas te v\u00f5isite m\u00e4rgata, vaatleme ainult web- ja Android-teste. Kahjuks on IOS t\u00e4iesti erinev lugu (ait\u00e4h Apple). Plaanin demonstreerida IOS-i lahendusi ja praktikaid j\u00e4rgnevates osades.<\/p>\n<h3>V\u00e4\u00e4rtus automaatimise infrastruktuurile<\/h3>\n<p>\nInfrastruktuuri seisukohalt ei paku kohalik k\u00e4ivitamine mingit v\u00e4\u00e4rtust. Sa kontrollid ainult, et testid t\u00f6\u00f6tavad kohalikul masinal kohalikes brauserites ja simulatsioonides. Kuid igal juhul on see vajalik l\u00e4htepunkt.<\/p>\n<h3>Praeguse infrastruktuuri seisundi illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/504f28744e29938f66be41c32d9a7dc6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Uurimiseks m\u00f5eldud lingid<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/selenium.dev\/\">Selenium<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/appium.io\/docs\/en\/about-appium\/getting-started\/\">Appium<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developer.android.com\/studio\/run\/emulator\">Android Emulator<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/tree\/master\/javascript\/node\/selenium-webdriver\/example\">Selenium JS GitHub'i n\u00e4ited<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appium\/appium\/tree\/master\/sample-code\/javascript-wd\">Appium JS GitHub'i n\u00e4ited<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Sarnased t\u00f6\u00f6tajad<\/h3>\n<p><\/p>\n<ul>\n<li>igasugune programmeerimiskeel,\u00a0 mis sulle meeldib, koos Selenium\/Appium - testidega;<\/li>\n<li>iga test;<\/li>\n<li>iga testijooksja.<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. Versioonihalduss\u00fcsteemid (Git)<\/h2>\n<p><\/p>\n<h3>Tehnoloogia l\u00fchikirjeldus<\/h3>\n<p>\n Ei ole kellelegi uudiseks, kui \u00fctlen, et versioonihalduss\u00fcsteem on \u00e4\u00e4rmiselt oluline osa arendamisest nii meeskonnas kui ka individuaalselt. Erinevatele allikatele toetudes v\u00f5ib kindlalt \u00f6elda, et Git on selle vallas k\u00f5ige populaarsem esindaja. Versioonihalduss\u00fcsteem pakub mitmeid eeliseid, nagu koodi jagamine, versioonide hoidmine, taastumine varasematele harudele, projekti ajaloo j\u00e4lgimine ja varukoopiad. Me ei hakka iga punkti detailselt arutama, kuna olen kindel, et olete sellega h\u00e4sti tuttav ja kasutate seda oma igap\u00e4evases t\u00f6\u00f6s. Kuid kui te ei ole, siis soovitan teil seda artiklit lugemist peatada ja seda t\u00fchimikku v\u00f5imalikult kiiresti t\u00e4ita.<\/p>\n<h3>V\u00e4\u00e4rtus automaatimise infrastruktuurile<\/h3>\n<p>\n Siin v\u00f5ite esitada m\u00f5istliku k\u00fcsimuse: \u201eMiks ta r\u00e4\u00e4gib meile Gitist? K\u00f5ik teavad ja kasutavad seda nii arenduskoodi kui ka automaattestide jaoks.\u201d Te oleksite t\u00e4iesti \u00f5iged, kuid selles artiklis r\u00e4\u00e4gime infrastruktuurist ja see jaotis m\u00e4ngib rolli eelvaateks jaotisele 7: \u201eInfrastruktuur kui kood (IaC)\u201d. Meie jaoks t\u00e4hendab see, et kogu infrastruktuur, sealhulgas testimise infrastruktuur, kirjeldatakse koodina, seega v\u00f5ime sellele rakendada versioonihalduss\u00fcsteeme ja saada sarnaseid eeliseid nagu arenduskoodi ja automatiseerimise puhul.<\/p>\n<p>Vaadake IaC-d \u00fcksikasjalikumalt sammul 7, kuid juba praegu saate alustada Giti kasutamist kohalikult, luues kohaliku repositooriumi. \u00dcldine pilt laieneb, kui lisame infrastruktuurile kaugrepositooriumi.<\/p>\n<h3>Praeguse infrastruktuuri seisundi illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/f17c1d2b2f18aa814c44f7c443e49416.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Uurimiseks m\u00f5eldud lingid<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.atlassian.com\/git\/tutorials\/what-is-version-control\">Mis on versioonihaldus<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/\">Git<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/git-scm.com\/book\/en\/v2\/Getting-Started-About-Version-Control\">Alustamine \u2014 Versioonihalduse kohta<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Sarnased t\u00f6\u00f6tajad<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/subversion.apache.org\/\">SVN<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.mercurial-scm.org\/guide\">Mercurial<\/a><\/noindex>\u00a0<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/azure.microsoft.com\/en-us\/services\/devops\/server\/\">Microsoft TFS (n\u00fc\u00fcd on see Azure DevOps Services'i osa)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h2>3. Konteinerimise (Docker) teema<\/h2>\n<p><\/p>\n<h3>Tehnoloogia l\u00fchikirjeldus<\/h3>\n<p>\n Kuidas konteineriseerimine on m\u00e4ngu reegleid muutnud, saame aru, kui vaatame tagasi m\u00f5ned k\u00fcmned aastad. Tookord ostsid ja kasutasid inimesed servereid rakenduste k\u00e4imiseks. Enamasti ei olnud aga vajalikud ressursid rakenduste k\u00e4itamiseks ette teada. See viis selleni, et ettev\u00f5tted kulutasid raha kallite v\u00f5imsate serverite ostmiseks, kuid osa neist ressurssidest j\u00e4i kasutamata.<\/p>\n<p>Evolutsiooni j\u00e4rgmine etapp olid virtuaalsed masinad (VM), mis lahendasid probleemid, mis olid seotud kasutamata ressursside kulutamisega. See tehnoloogia v\u00f5imaldas rakenduste k\u00e4itamist \u00fcksteisest iseseisvalt \u00fches serveris, eraldades t\u00e4ielikult isoleeritud ruumi. Kahjuks on aga igal tehnoloogial oma puudused. VM k\u00e4itamine n\u00f5uab t\u00e4is funktsionaalset operatsioonis\u00fcsteemi, mis kasutab CPU-d, RAM-i, salvestusruumi ja s\u00f5ltuvalt operatsioonis\u00fcsteemist tuleb arvestada ka litsentsikuludega. Need tegurid m\u00f5jutavad laadimisaega ja muudavad portatiivsuse keerulisemaks.<\/p>\n<p>N\u00fc\u00fcd oleme j\u00f5udnud konteineriseerimise juurde. See tehnoloogia lahendas taas eelmise probleemi, kuna konteinerid ei kasuta t\u00e4isfunktsionaalset operatsioonis\u00fcsteemi, mis vabastab suure hulga ressursse ning pakub kiiret ja paindlikku lahendust kandmiseks.<\/p>\n<p>Loomulikult ei ole konteineriseerimise tehnoloogia midagi uut, see esitati esmakordselt 70. aastate l\u00f5pus. Sel ajal tehtud palju uurimusi ja katseid. Kuid just Docker kohandas selle tehnoloogia ja tegi selle massidele h\u00f5lpsasti k\u00e4ttesaadavaks. T\u00e4nap\u00e4eval, kui r\u00e4\u00e4gime konteineritest, m\u00f5tleme enamasti Dockerile. R\u00e4\u00e4kides Docker-konteineritest, m\u00f5tleme Linuxi konteineritele. Saame kasutada Windowsi ja macOS s\u00fcsteeme konteinerite k\u00e4itamiseks, kuid oluline on m\u00f5ista, et sel juhul tekib t\u00e4iendav kiht. N\u00e4iteks k\u00e4ivitab Docker Macis m\u00e4rkamatult konteinerid kergkaalu Linuxi virtuaalmasina sees. Me tuleme sellele teemal tagasi, kui arutame Androidi emulaatorite k\u00e4itamise \u00fcle konteinerites, kuna siin on oluline n\u00fcanss, mida tuleb \u00fcksikasjalikumalt arutada.<\/p>\n<h3>V\u00e4\u00e4rtus automaatimise infrastruktuurile<\/h3>\n<p>\n Oleme leidnud, et konteineriseerimine ja Docker on suurep\u00e4rased. Vaatame seda automatiseerimise kontekstis, sest iga t\u00f6\u00f6riist v\u00f5i tehnoloogia peaks lahendama mingi probleemi. M\u00e4\u00e4ratlegem automaatika testimise ilmsed probleemid UI-testide kontekstis:<\/p>\n<ul>\n<li>suured s\u00f5ltuvused Seleniumi ja eriti Appiumi installimisel;<\/li>\n<li>\u00fchilduvusprobleemid brauserite, simulaatorite ja draiverite versioonide vahel;<\/li>\n<li>puudub isoleeritud ruum brauserite\/simulaatorite jaoks, mis on eriti kriitiline, kui k\u00e4itada paralleelselt;<\/li>\n<li>raske hallata ja toetada, kui on vaja k\u00e4ivitada 10, 50, 100 v\u00f5i isegi 1000 brauserit korraga.<\/li>\n<\/ul>\n<p>\nKuna Selenium on k\u00f5ige populaarsem automatiseerimist\u00f6\u00f6riist ja Docker k\u00f5ige populaarsem konteineriseerimise t\u00f6\u00f6riist, ei peaks olema \u00fcllatus, et keegi p\u00fc\u00fcdis neid \u00fchendada, et luua v\u00f5imas t\u00f6\u00f6riist eespool mainitud probleemide lahendamiseks. Uurime neid lahendusi l\u00e4hemalt.\u00a0<\/p>\n<p><u>Selenium grid in docker<\/u><\/p>\n<p>See t\u00f6\u00f6riist on maailma k\u00f5ige populaarsem Selenium, mis v\u00f5imaldab mitme brauseri k\u00e4itamist mitmel masinal ning nende haldamist keskpunktist. K\u00e4ivitamiseks on vajalik registreerida v\u00e4hemalt 2 osa: Hub ja Node(d). Hub on keskne s\u00f5lm, mis saab k\u00f5ik p\u00e4ringud testidelt ja jaotab need vastavatesse Nodes-se. Iga Node'i jaoks saame seadistada konkreetse konfiguratsiooni, n\u00e4iteks m\u00e4\u00e4rata vajaliku brauseri ja selle versiooni. Kuid meil on endiselt vaja ise hoolitseda brauserite \u00fchilduvate draiverite eest ning installida need vajalikesse Nodes-se. Seet\u00f5ttu ei kasutata Selenium grid'i puhtal kujul, v\u00e4lja arvatud juhtudel, kui peame t\u00f6\u00f6tama brauseritega, mida ei saa Linuxi operatsioonis\u00fcsteemis installida. K\u00f5ikidel muudel juhtudel on palju paindlikum ja \u00f5igem lahendus kasutada Docker-pilte Selenium grid Hub'i ja Nodes'e k\u00e4itamiseks. See l\u00e4henemine lihtsustab oluliselt s\u00f5lmede haldamist, kuna saame valida vajaliku pildi, kus on juba installitud \u00fchilduvad brauserite ja draiverite versioonid.<\/p>\n<p>Hoolimata negatiivsetest arvustustest stabiilsuse kohta, eriti suurte Nodes'ide samaaegsel k\u00e4ivitamisel, j\u00e4\u00e4b Selenium grid siiski k\u00f5ige populaarsemaks t\u00f6\u00f6riistaks Selenium-testide paralleelseks k\u00e4ivitamiseks. On oluline m\u00e4rkida, et avatud l\u00e4htekoodiga lahendustes ilmuvad pidevalt erinevad t\u00e4iustused ja modifikatsioonid, mis aitavad lahendada erinevaid kitsaskohti.<\/p>\n<p><u>Selenoid for Web<\/u><\/p>\n<p>See komponent on murranguline Seleniumi maailmas, kuna see t\u00f6\u00f6tab otse v\u00e4lja kastist ja on teinud paljude automatiseerimise inseneride elu oluliselt lihtsamaks. Esiteks, see ei ole lihtsalt veel \u00fcks modifikatsioon Selenium gridist. Selle asemel on arendajad loonud t\u00e4iesti uue versiooni Selenium Hubist Golangi keeles, mis koos kergete Docker-piltidega erinevate brauserite jaoks on andnud impulsi testimise automatiseerimise arengule. Veelgi enam, Selenium Gridis peame me ette m\u00e4\u00e4rama k\u00f5ik vajalikud brauserid ja nende versioonid, mis ei ole probleem, kui t\u00f6\u00f6tame ainult \u00fche brauseriga. Kuid kui jutt k\u00e4ib mitmest toetatavast brauserist, siis Selenoid on number \u00fcks lahendus, t\u00e4nu funktsioonile 'brauser n\u00f5udmisel'. K\u00f5ik, mida meilt n\u00f5utakse, on vajalikud pildid brauseritega eelnevalt \u00fcles laadida ja uuendada konfiguratsioonifaili, millega Selenoid suhtleb. Kui Selenoid saab testidest p\u00e4ring, k\u00e4ivitab ta automaatselt vajaliku konteineri soovitud brauseriga. Kui test on l\u00f5pule viidud, Selenoid vabastab konteineri, andes j\u00e4rgnevaid p\u00e4ringute ressursse vabaks. See l\u00e4henemine k\u00f5rvaldab t\u00e4ielikult tuntud probleemi 's\u00f5lmede dementeerimisest', millega me sageli Selenium gridis kokku puutume.<\/p>\n<p>Kahjuks ei ole Selenoid siiski h\u00f5bedane kuul. Saime funktsiooni 'brauserid n\u00f5udmise j\u00e4rgi', kuid funktsioon 'ressursid n\u00f5udmise j\u00e4rgi' pole veel saadaval. Selenoid'i kasutamiseks peame selle kastma f\u00fc\u00fcsilisse riistvarasse v\u00f5i virtuaalmasinasse, mis t\u00e4hendab, et peame eelnevalt teadma, kui palju ressursse on vaja eraldada. Ma arvan, et see ei ole probleem v\u00e4ikeste projektide puhul, mis k\u00e4ivitavad samal ajal 10, 20 v\u00f5i isegi 30 brauserit. Aga mis siis, kui me vajame 100, 500, 1000 ja rohkem? Pole mingit m\u00f5tet pidevalt hoida ja maksta nii suure hulga ressursside eest. Artikli osades 5 ja 6 arutame lahendusi, mis v\u00f5imaldavad skaleeruda, v\u00e4hendades sellega oluliselt ettev\u00f5tte kulusid.<\/p>\n<p><u>Selenoid for Android<\/u><\/p>\n<p>P\u00e4rast Selenoid'i edukat kasutamist veebiautomaatika t\u00f6\u00f6riistana soovisid inimesed midagi sarnast Androidile. Ja see juhtus \u2013 Selenoid ilmus Androidi toe kaudu. Kasutaja k\u00f5rgetasemelise vaatepunktist on t\u00f6\u00f6p\u00f5him\u00f5te sarnane veebiautomaatsusele. Ainus erinevus on see, et veebibrauserite konteinerite asemel k\u00e4ivitab Selenoid Android-emulaatorite konteinerid. Minu arvates on see praegu k\u00f5ige v\u00f5imsam tasuta t\u00f6\u00f6riist Androidi testide paralleelseks k\u00e4ivitamiseks.<\/p>\n<p>Mulle ei meeldiks \u00fcldse r\u00e4\u00e4kida selle t\u00f6\u00f6riista negatiivsetest k\u00fclgedest, kuna see t\u00f5esti meeldib mulle. Kuid siiski on siin kohal need samad puudused, mis on seotud web-automaatikaga, seonduvad skaleerimisega. Lisaks sellele tuleb r\u00e4\u00e4kida veel \u00fchest piirangust, mis v\u00f5ib osutuda \u00fcllatuseks, eriti kui seadistame t\u00f6\u00f6riista esmakordselt. Android-piltide k\u00e4ivitamiseks on meil vajalik f\u00fc\u00fcsiline masin v\u00f5i VM koos sisemiste virtualiseerimise toetusega. Praktikas juhendan, kuidas seda Linuxi VM-is aktiveerida. Siiski, kui olete macOS kasutaja ja soovite Selenoidit kohapeal juurutada, siis Android-testide k\u00e4itamine sellel on v\u00f5imatu. Kuid alati v\u00f5ite kohapeal k\u00e4ivitada Linuxi VM-i koos seadistatud sisemise virtualiseerimisega ja juurutada Selenoid seal.<\/p>\n<h3>Praeguse infrastruktuuri seisundi illustreerimine<\/h3>\n<p>\n Selles artiklis lisame 2 t\u00f6\u00f6riista infrastruktuuri illustreerimiseks. Need on Selenium grid web-testide jaoks ja Selenoid Android-testide jaoks. GitHubis olevas juhendis n\u00e4itan samuti, kuidas kasutada Selenoidit web-testide k\u00e4itamiseks.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/1202ae79eba9cffc965f3a5b2648c755.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Uurimiseks m\u00f5eldud lingid<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/resources\/what-container\">Docker: mis konteiner on<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/get-started\">Docker: alusta<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/containerjournal.com\/topics\/container-ecosystems\/5-container-alternatives-to-docker\/\">5 konteineri alternatiivi Dockerile<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/wiki\/Grid2\">Selenium Grid<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/docker-selenium\">Selenium docker<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/aerokube.com\/selenoid\/latest\/\">Selenoid<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/aerokube\/selenoid\">Selenoid Github<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/developer.android.com\/studio\/run\/emulator-acceleration#vm-linux\">KVM seadistus Android emulaatoritele<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Docker-Deep-Dive-Nigel-Poulton-ebook\/dp\/B01LXWQUFF\/ref=pd_sim_351_1\/147-1129855-1615632?_encoding=UTF8&amp;pd_rd_i=B01LXWQUFF&amp;pd_rd_r=f8dcd666-e707-4f85-99c6-24ecec56ea74&amp;pd_rd_w=rMnHL&amp;pd_rd_wg=u17vC&amp;pf_rd_p=bab57536-7c8f-4781-a8ed-3e270b9cd303&amp;pf_rd_r=KN6EXNGBWJ6B9QNJE4M2&amp;psc=1&amp;refRID=KN6EXNGBWJ6B9QNJE4M2\">Docker Deep Dive raamat<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Sarnased t\u00f6\u00f6tajad<\/h3>\n<p><\/p>\n<ul>\n<li>On olemas ka teisi konteinerimiseks m\u00f5eldud t\u00f6\u00f6riistu, kuid Docker on neist k\u00f5ige populaarsem. Kui soovite proovida midagi muud, pidage meeles, et need t\u00f6\u00f6riistad, mida me k\u00e4sitlesime Seleniumi testide paralleelse k\u00e4itamise jaoks, ei t\u00f6\u00f6ta otse v\u00e4lja pakkumisel.\u00a0\u00a0<\/li>\n<li>Nagu juba mainitud, on olemas palju Selenium grid'i modifikatsioone, n\u00e4iteks<noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.zalando.com\/zalenium\/\"> Zalenium<\/a><\/noindex>. <\/li>\n<\/ul>\n<p><\/p>\n<h2>4. CI \/ CD<\/h2>\n<p><\/p>\n<h3>Tehnoloogia l\u00fchikirjeldus<\/h3>\n<p>\n J\u00e4tkuva integreerimise praktika on arenduses \u00fcsna populaarne ja seondub versioonihalduss\u00fcsteemidega. Sellegipoolest tunnen, et terminoloogia osas on segadust. Selles l\u00f5igus soovin ma kirjeldada kolme selle tehnoloogia modifikatsiooni oma vaatenurgast. Internetist leiate palju artikleid erinevate t\u00f5lgendustega, ja on t\u00e4iesti normaalne, kui teie arvamus erineb. Peamine on, et oleksite oma kolleegidega \u00fchel lainel.<\/p>\n<p>Nii et on olemas kolm terminit: CI - Continuous Integration (j\u00e4tkuv integreerimine), CD - Continuous Delivery (j\u00e4tkuv kohaletoimetamine) ja j\u00e4lle CD - Continuous Deployment (j\u00e4tkuv juurutamine). (<i>Edasi kasutan neid termineid inglise keeles<\/i>). Iga muudatus lisab teie arendusprotsessile mitmeid t\u00e4iendavaid etappe. Kuid s\u00f5na <u>pidev<\/u> on k\u00f5ige olulisem. Selles kontekstis t\u00e4hendab see midagi, mis toimub algusest l\u00f5puni, katkestusteta v\u00f5i k\u00e4sitsi sekkumiseta. Vaatame CI &#038; CD-d ja CD-d selles kontekstis.<\/p>\n<ul>\n<li><strong>Pidev Integratsioon \u2013<\/strong> on evolutsiooni esimene samm. Uue koodi serverisse saatmise j\u00e4rel ootame kiiret tagasisidet selle kohta, et meie muudatused on korras. Tavaliselt h\u00f5lmab CI staatilise koodi anal\u00fc\u00fcsi t\u00f6\u00f6riistade ja moodulitestide\/ sisemiste API testide k\u00e4ivitamist. See v\u00f5imaldab meil saada teavet meie koodi kohta juba m\u00f5ne sekundi\/ minuti jooksul.<\/li>\n<li><strong>J\u00e4tkuv kohaletoimetamine<\/strong> on rohkem arenenud etapp, kus k\u00e4ivitame integratsiooni\/UI-testid. Kuid sel hetkel ei saa me tulemusi nii kiiresti, kui CI puhul. Esiteks, need testide t\u00fc\u00fcbid vajavad rohkem aega l\u00e4bimiseks. Teiseks, enne k\u00e4ivitamist peame oma muudatused deployima testimis-\/staging- keskkonda. Veelgi enam, kui r\u00e4\u00e4gime mobiilsete rakenduste arendamisest, tuleb lisaloodud etapp rakenduse kogumise jaoks.<\/li>\n<li><strong>J\u00e4tkuv juurutamine<\/strong> t\u00e4hendab, et me vabastame automaatselt (release) oma muudatused tootmisse, kui k\u00f5ik vastuv\u00f5tute testid on eelnevates etappides l\u00e4bitud. Lisaks sellele saab p\u00e4rast release'i etappi seadistada erinevaid etappe, nagu smoke-testide k\u00e4ivitamine tootmises ja huvipakkuvate m\u00f5\u00f5dikute kogumine. J\u00e4tkuv juurutamine on v\u00f5imalik vaid hea automatiseeritud testide katvuse korral. Kui on vajalikud mingid k\u00e4sitsi sekkumised, sealhulgas testimine, siis see ei ole enam <u>J\u00e4tkuv<\/u> (continuous). Siis saame r\u00e4\u00e4kida, et meie torujuhe vastab ainult J\u00e4tkuva Edastamise praktikale.<\/li>\n<\/ul>\n<p><\/p>\n<h3>V\u00e4\u00e4rtus automaatimise infrastruktuurile<\/h3>\n<p>\n Selles jaotises pean selgitama, et kui r\u00e4\u00e4gime l\u00f5pp- kuni-l\u00f5pp UI-testimisest, siis see t\u00e4hendab, et peame oma muudatused ja seotud teenused h\u00e4\u00e4lestama testkeskkondadesse. J\u00e4tkuv integreerimine ei ole selle \u00fclesande puhul rakendatav ja peame tagama, et rakendame v\u00e4hemalt j\u00e4tkava kohaletoimetamise praktikaid. J\u00e4tkuv juurutamine on samuti m\u00f5ttekas UI-testimise kontekstis, kui kavatseme neid k\u00e4itada tootmises.<\/p>\n<p>Ja enne kui vaatame arhitektuuri muudatuste illustratsiooni, tahan \u00f6elda paar s\u00f5na GitLab CI-st. Erinevalt teistest CI\/CD-t\u00f6\u00f6riistadest pakub GitLab kaugrepositooriumi ja palju muid lisafunktsioone. Seega on GitLab rohkem kui lihtsalt CI. See sisaldab valmis lahendusena l\u00e4htekoodi haldust, Agile juhtimist, CI\/CD pipelines, logimise t\u00f6\u00f6riistu ja m\u00f5\u00f5dikute kogumist. GitLabi arhitektuur koosneb GitLab CI\/CD-st ja GitLab Runnerist. T\u00f5in v\u00e4lja l\u00fchikese kirjelduse ametlikult veebilehelt:<\/p>\n<blockquote><p>Gitlab CI\/CD on veebirakendus koos API-ga, mis salvestab oma seisundi andmebaasi, haldab projekte\/ehitusi ja pakub kasutajaliidest. GitLab Runner on rakendus, mis t\u00f6\u00f6tleb ehitusi. Seda saab juurutada eraldi ja see t\u00f6\u00f6tab GitLab CI\/CD-ga API kaudu. Testide k\u00e4itamiseks on vajalik nii GitLabi instants kui ka Runner.<\/p><\/blockquote>\n<p><\/p>\n<h3>Praeguse infrastruktuuri seisundi illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/a05ece39b6c6a9aaec4177d4b5242722.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Uurimiseks m\u00f5eldud lingid<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/continuousIntegration.html\">Martin Fowler: J\u00e4tkuv integreerimine<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.gitlab.com\/ee\/ci\/\">GitLab CI\/CD<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Continuous-Integration-Improving-Software-Reducing\/dp\/0321336380\">J\u00e4tkuva integreerimise raamat<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Continuous-Delivery-Deployment-Automation-Addison-Wesley-ebook-dp-B003YMNVC0\/dp\/B003YMNVC0\/ref=mt_kindle?_encoding=UTF8&amp;me=&amp;qid=\">J\u00e4tkuva kohaletoimetamise raamat<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Sarnased t\u00f6\u00f6tajad<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/jenkins.io\/\">Jenkins<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.jetbrains.com\/teamcity\/\">TeamCity<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/travis-ci.com\/\">Travis<\/a><\/noindex>\u00a0<\/li>\n<li>Ja paljusid teisi<\/li>\n<\/ul>\n<p><\/p>\n<h2>5. Pilveteenused<\/h2>\n<p><\/p>\n<h3>Tehnoloogia l\u00fchikirjeldus<\/h3>\n<p>\n Selles osas r\u00e4\u00e4gime populaarsest suundumusest, mida nimetatakse 'avalikeks pilvedeks'. Vaatamata tohutule kasule, mida pakuvad \u00fclaltoodud virtualiseerimise ja konteineriseerimise tehnoloogiad, on meil endiselt vaja arvutusresources. Ettev\u00f5tted soetavad kallid serverid v\u00f5i rendivad andmekeskuseid, kuid sel juhul on vajalik teha arvutusi (m\u00f5nikord ebareaalsed) selle kohta, kui palju ressursse me vajame, kas me kasutame neid 24\/7 ja milleks. N\u00e4iteks on tootmisprotsessiks vajalik pidevalt t\u00f6\u00f6tav server, kuid kas meil on selliseid ressursse vaja ka testimiseks v\u00e4ljaspool t\u00f6\u00f6aega? See s\u00f5ltub ka teostatud testimise t\u00fc\u00fcbist. N\u00e4iteks koormus-\/stressitestid, mida plaanime teha v\u00e4ljaspool t\u00f6\u00f6aega, et saada tulemused j\u00e4rgmiseks p\u00e4evaks. Kuid kindlasti ei vajata serverite \u00f6\u00f6p\u00e4evaringset k\u00e4ttesaadavust end-to-end automaatsete testide jaoks ja eriti k\u00e4sitsi testimise keskkondade jaoks. Selliste olukordade jaoks oleks hea saada t\u00e4pselt nii palju ressursse, kui on vajalik n\u00f5udmisel, kasutada neid ja l\u00f5petada maksmine, kui neid enam ei vajata. Veelgi rohkem oleks suurep\u00e4rane saada neid koheselt, tehes paar hiirekl\u00f5psu v\u00f5i k\u00e4ivitades m\u00f5ned skriptid. Selleks kasutatakseki avalikke pilvi. Vaatame m\u00e4\u00e4ratlust:<\/p>\n<blockquote><p>Avaliku pilve all m\u00f5istetakse kolmandate osapoolte pakutavaid arvutusteenuseid, mis on kergesti k\u00e4ttesaadavad \u00fcle avaliku Interneti ning mis on avatud k\u00f5igile, kes soovivad neid kasutada v\u00f5i osta. Need v\u00f5ivad olla tasuta v\u00f5i m\u00fc\u00fcdud vastavalt vajadusele, v\u00f5imaldades klientidel maksta ainult tarbitud CPU ts\u00fcklite, salvestuse v\u00f5i ribalaiuse eest.<\/p><\/blockquote>\n<p>\n On arvamus, et avalikud pilved on kallid. Kuid nende p\u00f5hieesm\u00e4rk on v\u00e4hendada ettev\u00f5tte kulusid. Nagu juba mainitud, v\u00f5imaldavad avalikud pilved saada ressursse n\u00f5udmisel ja maksta ainult nende kasutamise eest. Samuti unustame tihti, et t\u00f6\u00f6tajad saavad palka ja spetsialistid on samuti kallis ressurss. Tuleb arvestada, et avalikud pilved h\u00f5lbustavad infrastruktuuri haldamist, lubades inseneridel keskenduda olulistele \u00fclesannetele.\u00a0<\/p>\n<h3>V\u00e4\u00e4rtus automaatimise infrastruktuurile<\/h3>\n<p>\n Millised konkreetsed ressursid on meil vajalikud end-to-end UI-testimiseks? Peamiselt on need virtuaalmasinad v\u00f5i klastrid (r\u00e4\u00e4gime Kubernetesest j\u00e4rgmisel teemal) brauserid ja emulaatorid k\u00e4itamiseks. Mida rohkem brausereid ja emulaatoreid soovime samaaegselt k\u00e4itada, seda rohkem CPU-d ja m\u00e4lu on vajalik ning seda rohkem peame selle eest maksma. Nii on avalikud pilveplatvormid automaatsete testide kontekstis v\u00f5imaldavad meil k\u00e4itada suurt hulka (100, 200, 1000 \u2026) brausereid\/emulaatoreid n\u00f5udmisel, saada testimistulemusi v\u00f5imalikult kiiresti ja l\u00f5petada maksmine nende hullumeelselt ressursimahukate j\u00f5udluste eest.\u00a0<\/p>\n<p>K\u00f5ige populaarsemad pilveteenuse pakkujad on Amazon Web Services (AWS), Microsoft Azure ja Google Cloud Platform (GCP). Praktikas on GCP kasutamise n\u00e4idised esitatud juhendis, kuid \u00fcldiselt ei ole oluline, millist te kasutate automatiseerimise jaoks. K\u00f5ik pakuvad ligikaudu samu funktsioone. Tavaliselt keskendub teenusepakkuja valimise juhend ettev\u00f5tte kogu infrastruktuurile ja \u00e4rin\u00f5uetele, mis j\u00e4\u00e4b selle artikli raames v\u00e4lja. Automatiseerimise inseneridele oleks huvitavam v\u00f5rrelda pilveteenuse pakkujate kasutamist pilveplatvormide kasutamisega, mis on konkreetselt suunatud testimise eesm\u00e4rkidele, nagu Sauce Labs, BrowserStack, BitBar jne. Niisiis, teeme seda! Minu arvates on Sauce Labs k\u00f5ige tuntum pilvetestimise farm, seega valisin selle v\u00f5rdluseks.\u00a0<\/p>\n<p><u>GCP vs Sauce Labs automatiseerimise eesm\u00e4rkidel:<\/u><\/p>\n<p>Kujutame ette, et meil on vaja samaaegselt k\u00e4ivitada 8 veebitestimist ja 8 Androidi testi. Selleks kasutame GCP-d ja k\u00e4ivitame 2 virtuaalmasinat Selenoidiga. Esimesel t\u00f5stame 8 konteinerit, kus on brauserid. Teisel \u2013 8 konteinerit emulaatoritega. Vaadakem hindasid:\u00a0\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/e4688fd2e6e5593d2e1c22fc57f59484.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n \u00dche Chrome'i konteineri k\u00e4ivitamiseks vajame <strong>n1-standard-1 <\/strong>masinat. Androidi puhul on see <strong>n1-standard-4 <\/strong>\u00fche emulaatori jaoks. Tegelikult on paindlikum ja odavam viis m\u00e4\u00e4rata kindlaid kasutaja v\u00e4\u00e4rtusi CPU\/Memory, kuid hetkel ei ole see Sauce Labsiga v\u00f5rreldes oluline.<\/p>\n<p>Siin on Sauce Labsi kasutustasud:<\/p>\n<p><img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/1367d2b59bbef9603b4b4be166e8d721.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nArvan, et olete juba hinnavahet m\u00e4rganud, kuid esitan siiski tabeli arvutustega meie \u00fclesande jaoks:<\/p>\n<p><strong>N\u00f5utavad ressursid<\/strong><br \/>\n<strong>Kuu hind<\/strong><br \/>\n<strong>T\u00f6\u00f6aeg<\/strong><strong>(8.00 - 20.00)<\/strong><br \/>\n<strong>T\u00f6\u00f6aeg<\/strong><strong>+ Eemaldatav<\/strong><\/p>\n<p><strong>GCP veebi jaoks<\/strong><br \/>\nn1-standard-1 x 8 = n1-standard-8<br \/>\n$194.18<br \/>\n23 p\u00e4eva * 12h * 0.38 = 104.88$\u00a0<br \/>\n23 p\u00e4eva * 12h * 0.08 = 22.08$<\/p>\n<p><strong>Sauce Labs veebi jaoks<\/strong><br \/>\nVirtuaalne Cloud8 paralleelsed testid<br \/>\n$1.559<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p><strong>GCP Androidi jaoks<\/strong><br \/>\nn1-standard-4 x 8: n1-standard-16<br \/>\n$776.72<br \/>\n23 p\u00e4eva * 12h * 1.52 = 419.52$\u00a0<br \/>\n23 p\u00e4eva * 12h * 0.32 = 88.32$<\/p>\n<p><strong>Sauce Labs Androidi jaoks<\/strong><br \/>\nReaalsete seadmete pilv 8 paralleelsed testid<br \/>\n$1.999<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>\nNagu n\u00e4ha, on hinnavahe tohutu, eriti kui teste k\u00e4ivitada ainult t\u00f6\u00f6ajal. Kuid kulusid on v\u00f5imalik veelgi v\u00e4hendada, kui kasutada eemaldatavaid masinaid. Mis need on?<\/p>\n<blockquote><p>Eemaldatav VM on instants, mille saate luua ja k\u00e4itada palju madalama hinnaga kui tavalised instantsid. Siiski v\u00f5ib arvutitehnika need instantsid l\u00f5petada (eemaldada), kui tal on teiste \u00fclesannete jaoks nende ressursside kasutamiseks vajalikke ressursse. Eemaldatavad instantsid on \u00fcleliigne Compute Engine'i maht, seega nende k\u00e4ttesaadavus varieerub kasutuse j\u00e4rgi.<\/p>\n<p>Kui teie rakendused on vigade suhtes taluvad ja suudavad taluda v\u00f5imalikke instantside peatamisi, v\u00f5ivad peatatavad instantsid oluliselt v\u00e4hendada teie Compute Engine'i kulusid. N\u00e4iteks v\u00f5ivad partiit\u00f6\u00f6tlemise \u00fclesanded toimida peatatavates instantsides. Kui m\u00f5ned neist instantsidest t\u00f6\u00f6tlemise ajal l\u00f5petavad, aeglustub t\u00f6\u00f6, kuid ei peatu t\u00e4ielikult. Peatatavad instantsid t\u00e4idavad teie partiit\u00f6\u00f6tlemise \u00fclesandeid, ilma et need lisaks koormust teie olemasolevatele instantsidele ja ilma, et peaksite maksma t\u00e4ishinda t\u00e4iendavate normaalsed instantside eest.<\/p><\/blockquote>\n<p>\n Ja see pole veel l\u00f5pp! T\u00f5eliselt olen kindel, et keegi ei k\u00e4ivita teste 12 tundi j\u00e4rjest ilma pausita. Ja kui see on t\u00f5si, siis v\u00f5ite automaatselt k\u00e4ivitada ja peatada virtuaalmasinad, kui neid ei vajata. Tegelik kasutusaeg v\u00f5ib langeda kuni 6 tunnini p\u00e4evas. Siis v\u00f5ib maksmine meie \u00fclesande kontekstis langeda isegi 11 dollarini kuus 8 brauseri eest. Kas see ei ole suurep\u00e4rane? Kuid peatavate masinatega peame olema ettevaatlikud ja valmis katkestusteks ning ebastabiilseks toimimiseks, kuigi neid olukordi saab programmiliselt ette n\u00e4ha ja k\u00e4sitleda. See on seda v\u00e4\u00e4rt!<\/p>\n<p>Aga ma ei \u00fctle kunagi \u2018\u00e4rge kasutage pilvetesteerimise farmisid\u2019. Neil on mitmeid eeliseid. Esiteks, see ei ole lihtsalt virtuaalne masin, vaid t\u00f5eline lahendus testimise automatiseerimiseks, mis sisaldab palju funktsioone: kaugjuurdep\u00e4\u00e4s, logid, ekraanipildid, videote salvestamine, erinevad brauserid ja f\u00fc\u00fcsilised mobiilseadmed. Paljudes olukordades v\u00f5ib see olla asendamatu ja luksuslik alternatiiv. Eriti kasulikud on testimisplatvormid IOS-automatiseerimise jaoks, kus avalikud pilved pakuvad sageli ainult Linuxi\/Windowsi s\u00fcsteeme. Kuid IOS-ist r\u00e4\u00e4gime j\u00e4rgmistes artiklites. Soovitan alati hinnata olukorda ja l\u00e4htuda \u00fclesannetest: m\u00f5nes on odavam ja efektiivsem kasutada avalikke pilvi, teistes aga on testimisplatvormid kindlasti oma rahaga v\u00e4\u00e4rt.<\/p>\n<h3>Praeguse infrastruktuuri seisundi illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/f68770c9e27677b9d762af574726c90e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Uurimiseks m\u00f5eldud lingid<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/gcp\/\">GCP<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/docs\/instances\/preemptible\">GCP: Preemptible<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/vm-instance-pricing\">GCP: VM hind<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/saucelabs.com\/pricing\">SauceLabs<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.inovex.de\/blog\/comparing-cloud-providers\/\">Pilveteenuste v\u00f5rdlemine<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Sarnased t\u00f6\u00f6riistad:<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/\">AWS<\/a><\/noindex>\u00a0<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/azure.microsoft.com\/en-us\/\">Azure<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h2>6. Orkestreerimine<\/h2>\n<p><\/p>\n<h3>Tehnoloogia l\u00fchikirjeldus<\/h3>\n<p>\n Mul on head uudised \u2013 me oleme peaaegu artikli l\u00f5puni j\u00f5udnud! Praegu koosneb meie automatiseerimise infrastruktuur veebist ja Androidi testidest, mida me k\u00e4itame paralleelselt GitLab CI kaudu, kasutades Dockerit toetavaid t\u00f6\u00f6riistu: Selenium grid ja Selenoid. Veelgi enam, me kasutame GCP kaudu loodud virtuaalmasinaid, et k\u00e4ivitada nendes konteinerid brauserite ja emulaatoritega. Kulude v\u00e4hendamiseks k\u00e4ivitame neid virtuaalmasinaid ainult n\u00f5udmisel ja peatame, kui testimist ei toimu. Kas on midagi veel, mis v\u00f5iks meie infrastruktuuri parandada? Vastus on \u2013 jah! Tere tulemast Kubernetesesse (K8s)!<\/p>\n<p>Alustuseks vaatame, kuidas on seotud s\u00f5nad orkestreerimine, klaster ja Kubernetes. K\u00f5rgeimal tasemel on orkestreerimine s\u00fcsteem, mis juurutab ja haldab rakendusi. Selliste konteineriseeritud rakenduste testimise automatiseerimiseks on Selenium grid ja Selenoid. Docker ja K8s t\u00e4iendavad \u00fcksteist. Esimene on m\u00f5eldud rakenduste juurutamiseks, teine \u200b\u200baga orkestreerimiseks. Omalt poolt on K8s klaster. Klastri \u00fclesanne on kasutada VMs Node`idena, mis v\u00f5imaldab installida erinevat funktsionaalsust, programme ja teenuseid \u00fche serveri (klastri) raames. Kui m\u00f5ni Node eba\u00f5nnestub, haaravad teised Nodes vahetult \u00fcle, tagades meie rakenduse katkestusteta t\u00f6\u00f6. Lisaks sellele omab K8s olulist funktsionaalsust, mis on seotud skaleerimise (scaling) v\u00f5imalustega, mille kaudu saame automaatselt optimaalse ressursside arvu, tuginedes koormusele ja kehtestatud piirangutele.<\/p>\n<p>T\u00f5tt \u00f6eldes on Kubernetes'i k\u00e4sitsi seadistamine nullist t\u00e4iesti keeruline \u00fclesanne. J\u00e4tan lingi tuntud praktilisele juhendile \"Kubernetes The Hard Way\", ja kui teid huvitab, v\u00f5ite harjutada. Kuid \u00f5nneks on olemas alternatiivsed viisid ja t\u00f6\u00f6riistad. Lihtsaim neist on Google Kubernetes Engine (GKE) GCP-s, mis v\u00f5imaldab teil m\u00f5ne kliki j\u00e4rel saada valmis klastrit. Alg\u00f5ppeks soovitan just seda l\u00e4henemist, sest see lubab teil keskenduda K8s kasutamise \u00f5ppimisele oma \u00fclesannete jaoks, mitte uurida, kuidas sisekomponendid omavahel integreeritud peaksid olema.\u00a0<\/p>\n<h3>V\u00e4\u00e4rtus automaatimise infrastruktuurile<\/h3>\n<p>\nVaatame m\u00f5ningaid t\u00e4htsaid funktsioone, mida K8s pakub:<\/p>\n<ul>\n<li>rakenduse juurutamine: multi-node klastrite kasutamine, mitte virtuaalmasinate;<\/li>\n<li>d\u00fcnaamiline skaleerimine: v\u00e4hendab kulutusi ressurssidele, mis on aktiivsed ainult n\u00f5udmisel;<\/li>\n<li>iseparanemine (Self-healing): automaatne pods'i taastamine (mille kaudu taastuvad ka konteinerid);<\/li>\n<li>uuenduste ja muudatuste tagasiv\u00f5tmine ilma seisakuteta: t\u00f6\u00f6riistade, brauserite ja emulaatorite uuendamine ei katkesta praeguste kasutajate t\u00f6\u00f6d<\/li>\n<\/ul>\n<p>\n Kuid K8s ei ole siiski h\u00f5bekuul. K\u00f5ikide eeliste ja piirangute m\u00f5istmiseks antud kontekstis (Selenium grid, Selenoid) arutame l\u00fchidalt K8s struktuuri. Klaster sisaldab kahte t\u00fc\u00fcpi node'e: Master Node'id ja Worker Node'id. Master Node'id vastutavad haldamise, juurutamise ja jaotuseotsuste eest. Worker Node'id on need, kus rakendused on k\u00e4ivitatud. Node'id sisaldavad ka konteinerite k\u00e4itamiskeskkonda. Meie juhul on see Docker, mis vastutab konteineritega seotud operatsioonide eest. Kuid on ka alternatiivseid lahendusi, n\u00e4iteks<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containerd\/containerd\"> containerd<\/a><\/noindex>. On oluline m\u00f5ista, et skaleerimine v\u00f5i isekorrekteerimine ei kehti konteinerite kohta otseselt. Seda rakendatakse pod'ide arvu lisamise\/v\u00e4hendamise kaudu, mis omakorda sisaldavad konteinerite (tavaliselt on \u00fcks konteiner pod'is, kuid s\u00f5ltuvalt \u00fclesandest v\u00f5ib neid olla rohkem). K\u00f5rgetasemeline hierarhia koosneb worker node'idest, mille sees on pod'id, mille sees on k\u00e4ivitatud konteinerid.<\/p>\n<p>Skaalafunktsioon on p\u00f5hifunktsioon, mida saab rakendada nii cluster node-pool'i nodes'itele kui ka node'i pods'idele. On olemas kaks t\u00fc\u00fcpi skaleerimist, mis kehtivad nii nodes'ite kui ka pods'ite kohta. Esimene t\u00fc\u00fcp on horisontaalne \u2013 skaleerimine toimub nodes'ite\/pods'ite arvu suurendamise teel. See t\u00fc\u00fcp on eelistatavam. Teine t\u00fc\u00fcp on vastavalt vertikaalne. Skaleerimine toimub nodes'ite\/pods'ite suuruste suurendamise kaudu, mitte nende arvu kaudu.<\/p>\n<p>Vaadakem n\u00fc\u00fcd meie t\u00f6\u00f6riistu eelnevalt mainitud m\u00f5tteteemade kontekstis.<\/p>\n<p><u>Selenium grid<\/u><\/p>\n<p>Nagu eelnevalt mainitud, on Selenium grid v\u00e4ga populaarne t\u00f6\u00f6riist ning pole \u00fcllatav, et see on konteineriseeritud. Seet\u00f5ttu ei ole \u00fcllatav, et Selenium grid'i saab k\u00e4ivitada K8s-is. N\u00e4idet selle kohta, kuidas seda teha, saab leida ametlikust K8s-repositooriumist. Nagu tavaks, lisan viidatud lingid sektsiooni l\u00f5ppu. Lisaks sellele on praktilises juhendis n\u00e4idatud, kuidas seda teha Terraformi abil. Samuti on olemas juhised, kuidas skaaleerida pod'e, mis sisaldavad brauserikonteinereid. Kuid automaatne skaleerimine K8s-i kontekstis on endiselt keeruline \u00fclesanne. Kui ma tundsin huvi, ei leidnud ma praktilisi juhendeid ega soovitusi. P\u00e4rast mitmeid uuringuid ja eksperimente DevOps meeskonna toel valisime l\u00e4henemise konteinerite t\u00f5stmiseks, kus on vajalikud brauserid \u00fches pod'is, mis asub \u00fches t\u00f6\u00f6taja node'is. Selline l\u00e4henemine v\u00f5imaldab rakendada horisontaalse skaleerimise strateegiat node'ide arvu suurendamisega. Loodan, et tulevikus olukord paraneb ning n\u00e4eme \u00fcha rohkem parimaid l\u00e4henemisi ja valmislahendusi, eriti p\u00e4rast Selenium grid 4 v\u00e4ljaandmist, millel on muudetud sisearhitektuur.<\/p>\n<p><u>Selenoid<\/u>:<\/p>\n<p>Praegu on Selenoid'i kasutamine K8s-is suurim pettumus. Nad ei ole \u00fchilduvad. Teoreetiliselt saame seadistada Selenoid-konteineri pod'i sees, kuid kui Selenoid hakkab k\u00e4ivitama konteinerite brausereid, j\u00e4\u00e4vad need ikkagi samasse pod'i. See muudab skaleerimise v\u00f5imatuks ja seet\u00f5ttu ei erine Selenoid'i t\u00f6\u00f6 klastris milleski sellest, kuidas see toimib virtuaalses masinas. Loo l\u00f5pp.<\/p>\n<p><u>Moon<\/u>:<\/p>\n<p>Teades seda kitsaskohta Selenoid'iga t\u00f6\u00f6tamisel, on arendajad loonud v\u00f5imsama t\u00f6\u00f6riista nimega Moon. See t\u00f6\u00f6riist oli algselt m\u00f5eldud kasutamiseks Kubernetesega ning seet\u00f5ttu saab ja tuleb kasutada automaatse skaleerimise funktsiooni. Rohkemgi veel, v\u00f5iksin \u00f6elda, et hetkel on see <u>ainus<\/u> t\u00f6\u00f6riist Seleniumi maailmas, mis pakub kohe algusest peale native K8s klastritoetust (<i>ei, vt j\u00e4rgmist t\u00f6\u00f6riista <\/i>). Peamine omadus, mis Moon'il selle toe tagab, on:\u00a0<\/p>\n<blockquote><p>Completely stateless. Selenoid salvestab m\u00e4lu kaudu informatsiooni praegu t\u00f6\u00f6tavate brauseriseansside kohta. Kui mingil p\u00f5hjusel selle protsess kokku kukub, kaovad k\u00f5ik t\u00f6\u00f6tavad seansid. Moonil seevastu pole sisemist olekut ja seda saab replitseerida andmekeskustes. Brauseriseansid j\u00e4\u00e4vad eluj\u00f5uliseks isegi siis, kui \u00fcks v\u00f5i mitu replikat kukuvad.<\/p><\/blockquote>\n<p>Nii, Moon on suurep\u00e4rane lahendus, kuid on \u00fcks probleem \u2013 see ei ole tasuta. Hind s\u00f5ltub sessioonide arvust. Tasuta on v\u00f5imalik k\u00e4ivitada vaid 0-4 sessiooni, mis ei ole eriti kasulik. Kuid alates viiendast sessioonist tuleb iga\u00fche eest maksta 5 $. Olukord v\u00f5ib ettev\u00f5tteti erineda, kuid meie puhul on Moon kasutamine m\u00f5ttetu. Nagu ma juba eespool selgitasin, saame k\u00e4ivitada VMs Selenium Gridiga n\u00f5udmisel v\u00f5i suurendada Nodes'i arvu klastris. \u00dche pipeline'i kohta k\u00e4ivitame umbes 500 brauserit ja peatame k\u00f5ik ressursid p\u00e4rast testide l\u00f5ppu. Kui me kasutaksime Mooni, peaksime maksma lisaks 500 x 5 = 2500 $ kuus, olenemata sellest, kui sageli me teste k\u00e4ivitame. Ja j\u00e4lle, ma ei \u00fctle, et '\u00e4rge kasutage Mooni'. Teie \u00fclesannete puhul v\u00f5ib see olla asendamatu lahendus, n\u00e4iteks juhul, kui teil on organisatsioonis palju projekte\/tiime ja vajate suurt jagatud klastrit k\u00f5igi jaoks. Nagu alati, j\u00e4tan allapoole lingi ja soovitan teha k\u00f5ik vajalikud arvutused teie \u00fclesande kontekstis.<\/p>\n<p><u>Callisto<\/u>: (<i><strong>T\u00e4helepanu! Seda ei leidunud originaalis ja see on ainult vene t\u00f5lkes.<\/strong><\/i>)<\/p>\n<p>Nagu ma \u00fctlesin, on Selenium v\u00e4ga populaarne t\u00f6\u00f6riist ja IT-sektor areneb v\u00e4ga kiiresti. Samal ajal, kui ma t\u00f5lkega tegelesin, ilmus v\u00f5rku uus paljut\u00f5otav t\u00f6\u00f6riist Callisto (tere, Cypress ja teised Seleniumi konkurendid). See t\u00f6\u00f6tab natiivsete K8s-iga ja v\u00f5imaldab Selenoid-konteinereid k\u00e4itada pods, jaotatuna Node'ide vahel. K\u00f5ik t\u00f6\u00f6tab kohe v\u00e4lja kastist, sealhulgas automaatne skaleerimine. Fantastiline, kuid seda tuleb testida. Olen juba suutnud selle t\u00f6\u00f6riista k\u00e4ivitada ja teha m\u00f5ned eksperimendid. Kuid j\u00e4reldusi on vara teha, p\u00e4rast tulemuste saamist pikas perspektiivis plaanin kindlasti kirjutada \u00fclevaate j\u00e4rgnevates artiklites. Praegu j\u00e4tan siia vaid lingid iseseisvaks uurimiseks.\u00a0\u00a0<\/p>\n<h3>Praeguse infrastruktuuri seisundi illustreerimine<\/p>\n<h3><img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/c9c2ffd21df2a261947df809dcec7108.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Uurimiseks m\u00f5eldud lingid<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/\">Kubernetes: seadistus<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kelseyhightower\/kubernetes-the-hard-way\">Kubernetes: raske tee<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/examples\/tree\/master\/staging\/selenium\">Kubernetes: Selenium<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/kubernetes-engine\">GCP: Kubernetes engine<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/aerokube.com\/moon\/latest\/\">Moon<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Kubernetes-Book-Version-November-2018-ebook\/dp\/B072TS9ZQZ\/ref=pd_sim_351_1\/147-1129855-1615632?_encoding=UTF8&amp;pd_rd_i=B072TS9ZQZ&amp;pd_rd_r=489f0d27-dd2c-4e33-b23c-a420affcba5d&amp;pd_rd_w=HLjs5&amp;pd_rd_wg=eGbU7&amp;pf_rd_p=bab57536-7c8f-4781-a8ed-3e270b9cd303&amp;pf_rd_r=G71DN3V8127KHPXQ6JFN&amp;psc=1&amp;refRID=G71DN3V8127KHPXQ6JFN\">Kubernetesi raamat<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=MmdGyqNqs9w\">Jagatud automatiseerimine Kubernetesega<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/SeleniumHQ\/selenium\/wiki\/Selenium-Grid-4\">Selenium Grid 4<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wrike\/callisto\">Callisto GitHub<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/software-testing.ru\/events\/review\/3317-wrike-techclub\">Wrike TechClub (Callisto)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Sarnased t\u00f6\u00f6tajad<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/get-started\/swarm-deploy\/\">Docker swarm<\/a><\/noindex>\u00a0<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mesosphere.github.io\/marathon\/\">Marathon<\/a><\/noindex>\u00a0<\/li>\n<\/ul>\n<p><\/p>\n<h2>7. Infrastruktuur kui kood (IaC)<\/h2>\n<p><\/p>\n<h3>Tehnoloogia l\u00fchikirjeldus<\/h3>\n<p>\n Ja ja oleme j\u00f5udnud viimase jao juurde. \u00dcldiselt ei kuulu see tehnoloogia ja sellega seotud \u00fclesanded automaatika inseneride vastutusalasse. Sellel on omad p\u00f5hjused. Esiteks, paljudes organisatsioonides on infrastruktuurik\u00fcsimused DevOps osakonna kontrolli all ja arendusmeeskond ei muretse eriti selle p\u00e4rast, kuidas pipeline t\u00f6\u00f6tab ja kuidas k\u00f5ike, mis sellega seotud, toetada. Teiseks, olgem ausad, praktikad \"Infrastruktuur kui kood (IaC)\" ei ole veel paljudes ettev\u00f5tetes rakendatud. Kuid kindlasti on see saanud populaarseks suunaks ja on oluline p\u00fc\u00fcda olla seotud sellega seotud protsesside, l\u00e4henemiste ja t\u00f6\u00f6riistadega. V\u00f5i v\u00e4hemalt olla kursis arengutega.<\/p>\n<p>Alustame motivatsiooni arutamisega, miks selline l\u00e4henemine on vajalik. Oleme juba arutanud, et GitlabCI testide k\u00e4ivitamiseks vajame v\u00e4hemalt ressursse Gitlab Runner\u2019i k\u00e4ivitamiseks. Brauserite\/emulaatorite konteinerite k\u00e4ivitamiseks peame reserveerima VM v\u00f5i klastrit. Lisaks testimisressurssidele on meil vaja m\u00e4rkimisv\u00e4\u00e4rset hulka v\u00f5imekust, et toetada arenduse, staging\u2019i ja tootmisprotsesside keskkondi, mis h\u00f5lmavad ka andmebaase, automaatseid ajakavu, v\u00f5rgukonfiguratsioone, koormuse tasakaalustajat, kasutajate \u00f5igusi jne. Peamine probleem seisneb k\u00f5igi nende elementide toetamiseks vajalikes pingutustes. On mitmeid viise, kuidas saame muudatusi teha ja uuendusi rakendada. N\u00e4iteks GCP kontekstis saame kasutada brauseri kasutajaliidest ja t\u00e4ita k\u00f5ik toimingud nuppude klikkimise kaudu. Alternatiivne meetod v\u00f5ib olla API-kutsede kasutamine pilveelementidega suhtlemiseks v\u00f5i gcloud k\u00e4sureautomi kasutamine vajalike toimingute teostamiseks. Kuid t\u00f5eliselt suure hulga erinevate elementide ja infrastruktuuri komponentidega muutub k\u00f5ikide toimingute k\u00e4sitsi tegemine keeruliseks v\u00f5i isegi v\u00f5imatuks. Veelgi enam, k\u00f5ik need k\u00e4sitsi teostatavad toimingud on kontrollimata. Me ei saa neid enne t\u00e4itmist \u00fcle vaadata, versioonihalduss\u00fcsteemi kasutada ega kiiresti tagasi kerida muudatusi, mis viisid probleemini. Selliste probleemide lahendamiseks on insenerid loonud ja loovad automaatseid bash\/shell skripte, mis ei ole palju parem eelmistest meetoditest, kuna neid pole eriti lihtne kiiresti lugeda, m\u00f5ista, hallata ja protseduurilises stiilis muuta.<\/p>\n<p>Selles artiklis ja praktilises juhendis kasutan kahte t\u00f6\u00f6riista, mis kuuluvad IaC praktikasse. Need on Terraform ja Ansible. M\u00f5ned arvavad, et ei ole m\u00f5tet neid samal ajal kasutada, kuna nende funktsioonid on sarnased ja nad on omavahel asendatavad. Kuid asi on selles, et algselt on nende eesm\u00e4rgid t\u00e4iesti erinevad. Ja t\u00f5siasi, et need t\u00f6\u00f6riistad peavad \u00fcksteist t\u00e4iendama, kinnitati \u00fchises esitluses, mille tegid HashiCorpi ja RedHati esindavad arendajad. Kontseptuaalne erinevus seisneb selles, et Terraform on serverite haldamiseks m\u00f5eldud provisioningu t\u00f6\u00f6riist. Ansible aga on konfigureerimise haldamise t\u00f6\u00f6riist, mille \u00fclesanne on nendele serveritele tarkvara installimine, seadistamine ja haldamine.<\/p>\n<p>Teiste t\u00f6\u00f6riistade peamine erip\u00e4ra on koodi kirjutamise stiil. Erinevalt bash'ist ja Ansible'ist kasutab Terraform deklaratiivset l\u00e4henemist, mis p\u00f5hineb soovitud l\u00f5ppseisundi kirjelduse loomisel. N\u00e4iteks kui plaanime luua 10 virtuaalmasinat ja rakendada muudatusi l\u00e4bi Terraformi, siis saame 10 virtuaalmasinat. Kui skripti uuesti k\u00e4ivitada, ei juhtu midagi, kuna meil on juba 10 virtuaalmasinat ja Terraform teab sellest, kuna hoiab infrastruktuuri praegust olekut state-failis. Ansible aga kasutab protseduurilist l\u00e4henemist ja kui palume tal luua 10 virtuaalmasinat, siis esimesel k\u00e4ivitamisel saame 10 virtuaalmasinat, just nagu Terraformiga. Kuid p\u00e4rast korduvat k\u00e4ivitamist on meil juba 20 virtuaalmasinat. See ongi oluline erinevus. Protseduurilises stiilis ei hoia me praegust olekut ja kirjeldame lihtsalt sammude j\u00e4rjekorda, mis tuleb t\u00e4ita. Loomulikult saame k\u00e4sitleda erinevaid olukordi, lisada kontrollid ressursside olemasolu ja praeguse oleku kohta, kuid pole m\u00f5tet raisata meie aega ja pingutada selle loogika kontrollimisel. Lisaks suurendab see riski eksida.\u00a0<\/p>\n<p>Kokkuv\u00f5ttes v\u00f5ib \u00f6elda, et serverite provisionimiseks on k\u00f5ige sobivam t\u00f6\u00f6riist Terraform ja deklaratiivne s\u00fcntaks. Konfiguratsioonide haldamise \u00fclesanded on aga parem delegeerida Ansible'ile. Tutvume n\u00fc\u00fcd automaatika kontekstis kasutamise n\u00e4idetega.<\/p>\n<h3>V\u00e4\u00e4rtus automaatimise infrastruktuurile<\/h3>\n<p>\n Siin on oluline m\u00f5ista, et testimise automatiseerimise infrastruktuur peab olema osa ettev\u00f5tte kogu infrastruktuurist. See t\u00e4hendab, et k\u00f5ik IaC-praktikad peaksid olema rakendatud globaalselt kogu organisatsiooni ressurssidele. Kes selle eest vastutab, s\u00f5ltub teie protsessidest. DevOps meeskond on selles osas kogenum, nad n\u00e4evad kogu toimuvat pilti. Siiski on QA-insenerid rohkem kaasatud automatiseerimise ehitamisse ja pipeline'i struktuuri, mis v\u00f5imaldab neil paremini n\u00e4ha vajalikke muudatusi ja t\u00e4iustamise v\u00f5imalusi. Parim lahendus on koost\u00f6\u00f6, teadmiste ja ideede jagamine soovitud tulemuse saavutamiseks.\u00a0<\/p>\n<p>Tulen v\u00e4lja m\u00f5ned n\u00e4ited Terraformi ja Ansible'i kasutamisest testimise automatiseerimise kontekstis ning t\u00f6\u00f6riistadest, millest oleme varem r\u00e4\u00e4kinud:<\/p>\n<p>1. Kirjeldada Terraformi kaudu vajalikud omadused ja parameetrid VM-idele ja klastritele.<\/p>\n<p>2. Installida Ansible'i abil testimiseks vajalikud t\u00f6\u00f6riistad: docker, Selenoid, Selenium Grid ning laadida alla vajalikud brauserite\/emulaatorite versioonid.<\/p>\n<p>3. Kirjeldada Terraformi kaudu VM-i omadused, kus t\u00f6\u00f6tab GitLab Runner.<\/p>\n<p>4. Installida Ansible'i abil GitLab Runner ja vajalikud seotud t\u00f6\u00f6riistad, seada konfiguratsioonid ja seaded.<\/p>\n<h3>Praeguse infrastruktuuri seisundi illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/5d793a800a4ef62e181e6cb3a3f0544e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Uurimislingid:<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.terraform.io\/\">Terraform<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\/\">Ansible<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.hashicorp.com\/resources\/ansible-terraform-better-together\">Ansible ja Terraform koos on paremad<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/a-comprehensive-guide-to-terraform-b3d32832baca\">Kasutusjuhend Terraformile<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/why-we-use-terraform-and-not-chef-puppet-ansible-saltstack-or-cloudformation-7989dad2865c\">Miks kasutame Terraformi, mitte Chef'i, Puppet'i, Ansible'i, SaltStack'i v\u00f5i CloudFormation'i<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/solutions\/infrastructure-as-code\">GCP: IaC<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Sarnased t\u00f6\u00f6tajad<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.chef.io\/\">Chef<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/puppet.com\/\">Puppet<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/saltstack.com\/\">SaltStack<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.vagrantup.com\/\">Vagrant<\/a><\/noindex><\/li>\n<\/ul>\n<h2>Teeme kokkuv\u00f5tte!<\/h2>\n<p><\/p>\n<p><strong>Samm<\/strong><br \/>\n<strong>Tehnoloogia<\/strong><br \/>\n<strong>T\u00f6\u00f6riistad<\/strong><br \/>\n<strong>V\u00e4\u00e4rtus automaatimise infrastruktuurile<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nKohalik k\u00e4itamine<br \/>\nNode.js, Selenium, Appium<\/p>\n<ul>\n<li>K\u00f5ige populaarsemad t\u00f6\u00f6riistad veebilehtede ja mobiilsete rakenduste jaoks<\/li>\n<li>Toetab mitmeid keeli ja platvorme (sealhulgas Node.js)<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>2<\/strong><br \/>\nVersioonihalduss\u00fcsteemid\u00a0<br \/>\nGit<\/p>\n<ul>\n<li>Sarnased eelised arenduskoodeksiga<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>3<\/strong><br \/>\nKonteineriseerimine<br \/>\nDocker, Selenium grid, Selenoid (Web, Android)<\/p>\n<ul>\n<li>Paralleelsed testide k\u00e4ivitamised<\/li>\n<li>Isoleeritud keskkonnad<\/li>\n<li>Lihtne ja paindlik versioonide uuendamine<\/li>\n<li>D\u00fcnaamiline mittekasutatavate ressursside peatamine<\/li>\n<li>Lihtne seadistada<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>4<\/strong><br \/>\nCI \/ CD<br \/>\nGitlab CI<\/p>\n<ul>\n<li>Testid on osa konveierist<\/li>\n<li>Kiire tagasiside<\/li>\n<li>T\u00f6\u00f6tajatele \/ meeskonnale n\u00e4htavus<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>5<\/strong><br \/>\nPilveteenused<br \/>\nGoogle Cloud Platform<\/p>\n<ul>\n<li>N\u00f5udmisel ressursid (maksame ainult siis, kui need on vajalikud)<\/li>\n<li>Lihtne hallata ja v\u00e4rskendada<\/li>\n<li>K\u00f5igi ressursside n\u00e4htavus ja kontroll<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>6<\/strong><br \/>\nOrkestreerimine<br \/>\nKubernetes<br \/>\nKonteinerite kontekstis, kus veebibrauserid\/emulaatorid on podides:<\/p>\n<ul>\n<li>Suurendamine \/ automaatne suurendamine<\/li>\n<li>Iseseisvalt taastumine<\/li>\n<li>Uuendused ja tagasiv\u00f5tmised katkestusteta<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktuur kui kood (IaC)<br \/>\nTerraform, Ansible<\/p>\n<ul>\n<li>Sarnased eelised arendustegevuse infrastruktuurile<\/li>\n<li>K\u00f5ik koodiversioonimise eelised<\/li>\n<li>Lihtne muudatusi teha ja hooldada<\/li>\n<li>T\u00e4ielikult automatiseeritud<\/li>\n<\/ul>\n<p><\/p>\n<h2>M\u00f5ttekaardi diagrammid: infrastruktuuri evolutsioon<\/h2>\n<p>\nstep1: Kohalik<br \/>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/507908ba097a603adc3b301ab2f94a8d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step2: VCS<br \/>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/71c5170293d98375d8ab86d05eb47a33.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step3: Konteinerimine\u00a0<br \/>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/da33442a592851e07c3f5800c3ee9ead.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step4: CI\/CD\u00a0<br \/>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/900f18b45124412a1ad00d3901efb40e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step5: Pilve platvormid<br \/>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/840e5063141ac8787612e2fc46b5d690.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step6: Orkestreerimine<br \/>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/4651b552efdc893695cbf359c6992e9e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step7: IaC<br \/>\n<img decoding=\"async\" alt=\"DevOps t\u00f6\u00f6riistad ei ole ainult DevOps&#039;i jaoks. Automaattestimise infrastruktuuri loomise protsess nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/e784130f570260fc6c3aa263916e3db5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>Mis edasi?<\/h2>\n<p>\nNii et see oli artikli l\u00f5pp. Kuid l\u00f5puks sooviksin teiega teatud kokkuleppeid kehtestada.<\/p>\n<p><u>Teie poolt<\/u><br \/>\n Nagu alguses mainitud, sooviksin, et artikkel oleks praktiliselt kasulik ja aitaks teid rakendada omandatud teadmisi reaalses t\u00f6\u00f6s. Lisa veel kord<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> praktilise juhendi link<\/a><\/noindex>.<\/p>\n<p>Kuid isegi p\u00e4rast seda \u00e4rge peatuge, harjutage, uurige asjakohaseid linke ja raamatuid, uurige, kuidas see teie ettev\u00f5ttes t\u00f6\u00f6tab, leidke kohti, kus midagi saaks parandada ja osalege selles. Edu!<\/p>\n<p><u>Minu poolt<\/u><\/p>\n<p>Pealkirjast n\u00e4htub, et see oli ainult esimene osa. Kuigi see osutus \u00fcsna mahukaks, ei ole siin siiski olulisi teemasid k\u00e4sitletud. Teises osas plaanin k\u00e4sitleda automatiseerimise infrastruktuuri IOS-i kontekstis. Apple\u2019i piirangute t\u00f5ttu, mis seavad IOS emulatorite k\u00e4itamise ainult macOS s\u00fcsteemidesse, on meie lahenduste komplekt kitsendatud. N\u00e4iteks ei saa me kasutada Dockerit emulaatori k\u00e4itamiseks v\u00f5i avalikke pilvi virtuaalmasinate k\u00e4itamiseks. Kuid see ei t\u00e4henda, et pole olemas muid alternatiive. P\u00fc\u00fcan hoida teid kursis uuenduslike lahenduste ja kaasaegsete t\u00f6\u00f6riistadega!<\/p>\n<p>Samuti ei maininud ma \u00fcsna suurte teemadega seonduvat, mis puudutab j\u00e4lgimist. Kolmandas osas kavatsen vaadata \u00fcle k\u00f5ige populaarsed infrastruktuuri j\u00e4lgimise t\u00f6\u00f6riistad ning milliseid andmeid ja m\u00f5\u00f5dikuid tuleks arvesse v\u00f5tta.<\/p>\n<p>Ja l\u00f5petuseks. Tulevikus plaanin v\u00e4lja anda videokursuse testimisstrateegiate ja populaarsete t\u00f6\u00f6riistade loomise kohta. Praegu on internetis palju DevOps kursusi ja loenguid, kuid k\u00f5ik materjalid k\u00e4sitlevad arendust, mitte testimise automatiseerimist. Siin vajaksin v\u00e4ga tagasisidet, kas selline kursus oleks testijate ja automatiseerijate kogukonnale huvitav ja v\u00e4\u00e4rtuslik. Ette t\u00e4nades!<\/h3>\n<\/h3>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497918\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0427\u0430\u0441\u0442\u044c 1: Web \/ Android \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438\u00a0\u00abDevOps tools are not only for DevOps. Building test automation infrastructure from scratch\u00bb. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u0441\u0441\u044b\u043b\u043a\u0438, \u0446\u0438\u0442\u0430\u0442\u044b \u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a. \u0416\u0435\u043b\u0430\u044e \u0432\u0430\u043c \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f! \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78677,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78676","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0427\u0430\u0441\u0442\u044c 1: Web \/ Android \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u00abDevOps tools are not only for DevOps. Building test automation infrastructure from scratch\u00bb. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u0441\u0441\u044b\u043b\u043a\u0438, \u0446\u0438\u0442\u0430\u0442\u044b \u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a. \u0416\u0435\u043b\u0430\u044e \u0432\u0430\u043c \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f! \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47DevOps \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f DevOps. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043d\u0443\u043b\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0427\u0430\u0441\u0442\u044c 1: Web \/ Android \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u00abDevOps tools are not only for DevOps. Building test automation infrastructure from scratch\u00bb. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u0441\u0441\u044b\u043b\u043a\u0438, \u0446\u0438\u0442\u0430\u0442\u044b \u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a. \u0416\u0435\u043b\u0430\u044e \u0432\u0430\u043c \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f! \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-21T05:42:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-21T05:42:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DevOps t\u00f6\u00f6riistad ei ole ainult DevOpsile. Automaatika testimise infrastruktuuri rajamise protsess nullist | ProHoster","description":"Osa 1: Veeb \/ Android T\u00e4helepanu: see artikkel on vene keelde t\u00f5lgitud originaalist \"DevOps tools are not only for DevOps. Building test automation infrastructure from scratch\". Kuid k\u00f5ik illustreerimised, lingid, tsitaadid ja terminid on s\u00e4ilinud originaalkeeles, et v\u00e4ltida t\u00f5lkes t\u00e4henduse moonutamist. Soovin teile meeldivat \u00f5ppimist! Praegu on amet","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47DevOps \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f DevOps. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043d\u0443\u043b\u044f | ProHoster","og:description":"\u0427\u0430\u0441\u0442\u044c 1: Web \/ Android \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u00abDevOps tools are not only for DevOps. Building test automation infrastructure from scratch\u00bb. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438, \u0441\u0441\u044b\u043b\u043a\u0438, \u0446\u0438\u0442\u0430\u0442\u044b \u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a. \u0416\u0435\u043b\u0430\u044e \u0432\u0430\u043c \u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f! \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/devops-instrumenty-ne-tolko-dlya-devops-proczess-postroeniya-infrastruktury-avtomatizaczii-testirovaniya-s-nulya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-21T05:42:22+00:00","article:modified_time":"2020-04-21T05:42:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78676","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:53:59","updated":"2022-10-05 06:14:03"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/78676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=78676"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/78676\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/78677"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=78676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=78676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=78676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}