{"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'i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1>Osa 1: Veeb \/ Android<\/h1>\n<p>\n <u>M\u00e4rkus<\/u>: <i>see artikkel on originaali vene keelde 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 tools are not only for DevOps. Building test automation infrastructure from scratch\u00bb.<\/i><\/a><\/noindex><i> Kuid k\u00f5ik illustratsioonid, lingid, tsitaadid ja terminid on s\u00e4ilitatud originaalkeeles, et v\u00e4ltida t\u00e4henduse moonutamist vene keelde t\u00f5lkimisel. Soovin teile meeldivat \u00f5ppimist!<\/i><\/p>\n<p><img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine 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-t\u00f6\u00f6stuses. Kui avate populaarsed t\u00f6\u00f6otsingu saidid ja seate palga filtrid, n\u00e4ete, et DevOpsiga seotud t\u00f6\u00f6kuulutused on nimekirja alguses. Kuid on oluline m\u00f5ista, et see kehtib peamiselt 'vanem' positsiooni kohta, mis t\u00e4hendab, et kandidaadil on k\u00f5rge oskuste tase, teadmised tehnoloogiatest ja t\u00f6\u00f6riistadest. Samuti kaasneb sellega k\u00f5rge vastutustunne, mis on seotud tootmise katkematu t\u00f6\u00f6 tagamisega. Kuid me oleme hakanud unustama, mis on DevOps. Alguses ei olnud see mingi konkreetne inimene v\u00f5i osakond. Kui otsida selle termini definitsioone, leiame palju ilusaid ja \u00f5igeid nimis\u00f5nu, nagu metodoloogia, praktikad, kultuurifilosoofia, kontseptsioonide kogum jne.<\/p>\n<p>Minu eriala on testimise automatiseerimise insener (QA automation engineer), kuid arvan, et see ei peaks olema seotud ainult automaatsete testide kirjutamise v\u00f5i testimise raamistiku arendamisega. 2020. aastal on automatiseerimise infrastruktuuri teadmised samuti vajalikud. See v\u00f5imaldab iseseisvalt korraldada automatiseerimisprotsessi, alates testide k\u00e4ivitamisest kuni tulemuste edastamiseni k\u00f5igile huvitatud osalistele vastavalt seatud eesm\u00e4rkidele. Seet\u00f5ttu on DevOps'i oskused selle t\u00f6\u00f6 teostamiseks kohustuslikud. Ja see k\u00f5ik on hea, kuid kahjuks on probleem (<i>spoiler: see artikkel p\u00fc\u00fcab seda probleemi lihtsustada<\/i>). See, DevOps is complicated. It's obvious, as companies won't pay a lot for something that's easy to do... In the world of DevOps, there are a lot of tools, terms, and practices to master. This is especially challenging at the beginning of a career and depends on accumulated technical experience.<\/p>\n<p><img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine 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>We will probably conclude the introductory part here and focus on the goal of this article.\u00a0<\/p>\n<h3>What this article is about<\/h3>\n<p>\nIn this article, I will share my experience in building an automation testing infrastructure. There are many sources of information online about various tools and how to use them, but I would like to discuss them exclusively in the context of automation. I believe many automation engineers are familiar with the situation where the tests developed are only run by themselves, and no one else cares about their maintenance. As a result, the tests become outdated, requiring time to update them. Again, at the beginning of a career, this can be quite a challenging task: to wisely determine which tools should help solve this problem, how to choose, configure, and maintain them. Some testers turn to DevOps (people) for help, and to be honest, this approach works. In many cases, it may be the only option, as we lack visibility into all dependencies. But, as we know, DevOps are very busy folks, thinking about the entire company's infrastructure, deployment, monitoring, microservices, and other similar tasks depending on the organization\/team. As is often the case, automation is not a priority. In such cases, we should try to do everything possible from our side, from start to finish. This will reduce dependencies, speed up workflows, enhance our skills, and allow us to see a broader picture of what is happening.<\/p>\n<p>Artiklis tutvustatakse k\u00f5ige n\u00f5udlikumaid ja populaarsemaid t\u00f6\u00f6riistu ning n\u00e4idatakse, kuidas neid kasutada samm-sammult automatiseerimise infrastruktuuri \u00fclesehitamiseks. Iga grupp on esindatud t\u00f6\u00f6riistadega, mida on katsetatud isikliku kogemuse p\u00f5hjal. Kuid see ei t\u00e4henda, et te peaksite kasutama sama. T\u00f6\u00f6riistad ise ei ole olulised, need tulevad ja kaovad. Meie inseneri\u00fclesanne on m\u00f5ista p\u00f5hialuseid: miks on meil vajalik see t\u00f6\u00f6riistade grupp ja milliseid t\u00f6\u00f6\u00fclesandeid saame nende abil lahendada. Seet\u00f5ttu j\u00e4tan iga sektsiooni l\u00f5pus viidatud sarnastele t\u00f6\u00f6riistadele, mida teie organisatsioonis v\u00f5ib-olla kasutatakse.<\/p>\n<h3>Mida artiklis ei ole<\/h3>\n<p>\nKordan, et artikkel ei r\u00e4\u00e4gi konkreetsetest t\u00f6\u00f6riistadest, seega ei tule siia koodil\u00f5ike dokumentatsioonist ja konkreetsete k\u00e4skude kirjeldusi. Kuid iga sektsiooni l\u00f5pus j\u00e4tan viidatud p\u00f5hjalikule uurimisele.<\/p>\n<p>See on tehtud p\u00f5hjusel, et:\u00a0<\/p>\n<ul>\n<li>see materjal on v\u00e4ga kergesti leitav erinevates allikates (dokumendid, raamatud, videokursused);<\/li>\n<li>kui hakkame s\u00fcvenema, siis tuleb kirjutada 10, 20, 30 osa sellest artiklist (samal ajal on plaanis 2-3);<\/li>\n<li>ma lihtsalt ei soovi teie aega raisata, kuna v\u00f5ib-olla soovite kasutada teisi t\u00f6\u00f6riistu samade eesm\u00e4rkide saavutamiseks.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Praktika<\/h3>\n<p>\nSooviksin v\u00e4ga, et see materjal oleks kasulik igale lugejale, mitte lihtsalt loetuks ja unustatuks. Igas \u00f5ppimises on praktika v\u00e4ga oluline komponent. Selleks olen ette valmistanud<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> GitHubi hoidla samm-sammult juhendiga, kuidas k\u00f5ik nullist valmis teha<\/a><\/noindex>. Teid ootab ka kodut\u00f6\u00f6, et olla kindel, et te ei kopeerinud lihtsalt k\u00e4surea k\u00e4skinud ridu m\u00f5tlemata <\/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\u00e4ivitamine (valmista veeb \/ android demo testid ja k\u00e4ita 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 (Veeb, Android)<\/p>\n<p><strong>4<\/strong><br \/>\nCI \/ CD<br \/>\nGitlab CI<\/p>\n<p><strong>5<\/strong><br \/>\nPilveplatvormid<br \/>\nGoogle Cloud Platform<\/p>\n<p><strong>6<\/strong><br \/>\nOrkestreerimine<br \/>\nKubernetes<\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktuur koodina (IaC)<br \/>\nTerraform, Ansible<\/p>\n<p><\/p>\n<h3>Iga sektsiooni struktuur<\/h3>\n<p>\nEt s\u00e4ilitada jutustust visuaalsena, on iga sektsioon kirjeldatud j\u00e4rgmise plaani j\u00e4rgi:<\/p>\n<ul>\n<li>tehnoloogia l\u00fchikirjeldus,<\/li>\n<li>v\u00e4\u00e4rtus automaatimise infrastruktuurile,<\/li>\n<li>ilustratsioon praegusest infrastruktuuri seisundist,<\/li>\n<li>viidatud \u00f5ppimiseks,<\/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 demonstreerimistestid kohapeal ja kontrollida, et need \u00f5nnestuvad. Praktikas kasutatakse Node.js, kuid programmit\u00f6\u00f6 keel ja platvorm ei ole olulised; saate kasutada neid, mida teie ettev\u00f5ttes kasutatakse.\u00a0<\/p>\n<p>Automatiseerimisvahenditena soovitan kasutada Selenium WebDriveri veebiplatvormide jaoks ja Appiumit Android-platvormide jaoks, kuna j\u00e4rgmistes sammudes kasutame Docker-pilte, mis on optimeeritud nende konkreetsete t\u00f6\u00f6riistadega t\u00f6\u00f6tamiseks. Veelgi enam, viidates t\u00f6\u00f6kuulutuste n\u00f5uetele, on need t\u00f6\u00f6riistad turul k\u00f5ige n\u00f5utumad.<\/p>\n<p>Nagu olete t\u00e4hele pannud, k\u00e4sitleme ainult veeb- ja Android-teste. Kahjuks on iOS t\u00e4iesti teine lugu (t\u00e4nu Apple'ile). Plaanin demonstreerida lahendusi ja praktikad, mis on seotud iOS-iga, j\u00e4rgmistes osades.<\/p>\n<h3>V\u00e4\u00e4rtus automatiseerimisinfrastruktuurile<\/h3>\n<p>\nInfrastruktuuri vaatenurgast ei too kohaliku k\u00e4ivitamise tagamine mingit v\u00e4\u00e4rtust. Te ainult kontrollite, kas testid t\u00f6\u00f6tavad kohalikul masinal kohalikes brauserites ja simulaatorites. Kuid see on igal juhul vajalik l\u00e4htepunkt.<\/p>\n<h3>Praeguse infrastruktuuri oleku illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/504f28744e29938f66be41c32d9a7dc6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d5ppimise 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 GitHubi 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 GitHubi n\u00e4ited<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3>Sarnased t\u00f6\u00f6riistad<\/h3>\n<p><\/p>\n<ul>\n<li>igany programmikeel, mis teile meeldib, koos Seleniumi\/Appiumiga - testide jaoks;<\/li>\n<li>mistahes testid;<\/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 \u00fcllatuseks, kui \u00fctlen, et versioonihalduss\u00fcsteem on \u00e4\u00e4rmiselt oluline osa t\u00f6\u00f6tamisest nii meeskonnas kui ka iseseisvalt. Erinevaid allikaid arvestades v\u00f5ime kindlalt \u00f6elda, et Git on k\u00f5ige populaarsem esindaja. Versioonihalduss\u00fcsteem pakub mitmeid eeliseid, nagu koodivahetus, versioonide salvestamine, varasemate harude taastamine, projekti ajaloo j\u00e4lgimine ja varukoopiad. Me ei hakka igat punkti \u00fcksikasjalikult arutama, kuna olen kindel, et olete sellega h\u00e4sti kursis ja kasutate seda igap\u00e4evases t\u00f6\u00f6s. Kuid kui te pole, siis soovitan selle artikli lugemise peatada ja see auk kiiresti t\u00e4ita.<\/p>\n<h3>V\u00e4\u00e4rtus automatiseerimisinfrastruktuurile<\/h3>\n<p>\n Ja siin v\u00f5ite esitada p\u00f5hjendatud k\u00fcsimuse: \u201eMiks ta r\u00e4\u00e4gib meile Git'ist? K\u00f5ik teavad ja kasutavad seda nii arendus- kui ka autotestimise koodi jaoks.\u201d Te oleksite t\u00e4iesti \u00f5iged, kuid selles artiklis r\u00e4\u00e4gime me infrastruktuurist ja see l\u00f5ik m\u00e4ngib \u00fclevaate rolli peat\u00fckis 7: \u201eInfrastruktuur kui kood (IaC)\u201d. Meie jaoks t\u00e4hendab see, et kogu infrastruktuur, sealhulgas testimis-, kirjeldatakse koodina, seega saame sellele rakendada ka versioonihalduss\u00fcsteeme ja saavutada sarnaseid eeliseid nagu arendus- ja automatiseerimiskoodile.<\/p>\n<p>K\u00e4sitleme IaC-d \u00fcksikasjalikumalt sammus 7, kuid juba praegu saab alustada Git'i kasutamist kohalikult, luues kohaliku hoidla. \u00dcldine pilt laieneb, kui lisame infrastruktuurile kaughoidla.<\/p>\n<h3>Praeguse infrastruktuuri oleku illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/f17c1d2b2f18aa814c44f7c443e49416.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d5ppimise 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 \u00fclevaade<\/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:\/\/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 Azure DevOps Services'i osa)<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h2>3. Konteineriseerimine (Docker)<\/h2>\n<p><\/p>\n<h3>Tehnoloogia l\u00fchikirjeldus<\/h3>\n<p>\n Konteineriseerimise m\u00e4ngureeglite muutmise demonstreerimiseks teeme v\u00e4ikese ajar\u00e4nnaku mitme aastak\u00fcmne taha. Tookord ostsid inimesed ja kasutasid serveri masinaid rakenduste k\u00e4itamiseks. Kuid enamikul juhtudel ei olnud vajalikud ressursid rakenduse k\u00e4itamiseks eelnevalt teada. Selle tulemusena kulutasid ettev\u00f5tted raha kallite v\u00f5imsate serverite soetamiseks, kuid osa neist ressurssidest j\u00e4i t\u00e4ielikult kasutamata.<\/p>\n<p>J\u00e4rgmine arenguetapp olid virtuaalsed masinad (VM), mis lahendasid rahalise kulu probleemid kasutamata ressursside t\u00f5ttu. See tehnoloogia v\u00f5imaldas alustada rakenduste k\u00e4itamist \u00fcksteisest s\u00f5ltumatult \u00fche serveri sees, eraldades t\u00e4ielikult isoleeritud ruumi. Kuid kahjuks on igal tehnoloogial oma puudused. VM k\u00e4itamine n\u00f5uab t\u00e4ielikku operatsioonis\u00fcsteemi, mis kasutab CPU-d, RAM-i, salvestust, ja OS-i, s\u00f5ltuvalt peab arvestama litsentsikulu. Need tegurid m\u00f5jutavad laadimise kiirus ja muudavad \u00fcleviimise keerulisemaks.<\/p>\n<p>Ja n\u00fc\u00fcd oleme j\u00f5udnud konteineriseerimise juurde. Taas lahendas see tehnoloogia eelneva probleemi, kuna konteinerid ei kasuta t\u00e4isoperatsioonis\u00fcsteemi, mis vabastab palju ressursse ja pakub kiiret ja paindlikku lahendust \u00fcleviimiseks.<\/p>\n<p>Muidugi, konteineritehnoloogia ei ole midagi uut ja seda tutvustati esmakordselt 70-ndate l\u00f5pus. Sel ajal viidi l\u00e4bi palju teadusuuringuid, arenguid ja katseid. Kuid just Docker kohandas seda tehnoloogiat ja tegi selle massidele kergesti ligip\u00e4\u00e4setavaks. T\u00e4nap\u00e4eval, kui r\u00e4\u00e4gime konteineritest, m\u00f5tleme enamasti Dockerile. Kui r\u00e4\u00e4gime Docker-konteineritest, m\u00f5tleme Linuxi konteineritele. Saame kasutada Windowsi ja macOSi s\u00fcsteeme konteinerite k\u00e4itamiseks, kuid on oluline m\u00f5ista, et sel juhul tekib t\u00e4iendav kiht. N\u00e4iteks k\u00e4ivitab Docker Macis vaikselt konteinerid kerge Linuxi VM-i sees. Tagasi sellele teemele tuleme, kui arutame Androidi emulaatorite k\u00e4itamist konteinerite sees, kuna siia tekib \u00fcks v\u00e4ga oluline n\u00fcanss, mida tuleb p\u00f5hjalikumalt uurida.<\/p>\n<h3>V\u00e4\u00e4rtus automatiseerimisinfrastruktuurile<\/h3>\n<p>\n Oleme v\u00e4lja selgitanud, et konteineriseerimine ja Docker on suured. Vaatame seda automatiseerimise kontekstis, sest iga t\u00f6\u00f6riist v\u00f5i tehnoloogia peaks lahendama mingi probleemi. M\u00e4rkigem esile ilmsed automatiseerimise testimise probleemid UI-testide kontekstis:<\/p>\n<ul>\n<li>suur hulk s\u00f5ltuvusi Seleniumi ja eriti Appiumi installimisel;<\/li>\n<li>brauserite, simulaatorite ja draiverite versioonide vahelised \u00fchilduvusprobleemid;<\/li>\n<li>puudub isoleeritud ruum brauserite\/simulaatorite jaoks, mis on eriti kriitiline paralleelse k\u00e4itamise puhul;<\/li>\n<li>raske on hallata ja toetada, kui tuleb k\u00e4itada 10, 50, 100 v\u00f5i isegi 1000 brauserit korraga.<\/li>\n<\/ul>\n<p>\nKuid kuna Selenium on k\u00f5ige populaarsem automatiseerimist\u00f6\u00f6riist ja Docker on k\u00f5ige populaarsem konteenerite loomise t\u00f6\u00f6riist, siis ei tohiks kedagi \u00fcllatada, et keegi on proovinud neid \u00fchendada, et saada v\u00f5imas t\u00f6\u00f6riist eelpoolmainitud probleemide lahendamiseks. Vaatame selliseid lahendusi l\u00e4hemalt.\u00a0<\/p>\n<p><u>Selenium grid dockeris<\/u><\/p>\n<p>See t\u00f6\u00f6riist on maailma populaarseim Selenium, et hallata mitut brauserit mitmes masinas keskuselt. K\u00e4ivitamiseks on vajalik registreerida v\u00e4hemalt 2 osa: Hub ja Node(d). Hub on keskne s\u00f5lm, mis saab k\u00f5ik testidest tulevad p\u00e4ringud ja jaotab need vastavatesse Node\u2019desse. Iga Node jaoks saame seadistada konkreetse konfiguratsiooni, n\u00e4iteks m\u00e4\u00e4rates vajaliku brauseri ja selle versiooni. Kuid me peame endiselt ise hoolitsema brauserite \u00fchilduvate draiverite eest ja installima need vajalikele Node\u2019idele. Sellep\u00e4rast ei kasutata Selenium grid\u2019i puhtal kujul, v\u00e4lja arvatud juhtudel, kui peame t\u00f6\u00f6tama brauseritega, mida ei saa installida Linuxi ops\u00fcsteemile. K\u00f5igil teistel juhtudel on paindlikum ja \u00f5igem lahendus kasutada Docker-pilte Selenium grid Hub\u2019i ja Node\u2019ide k\u00e4ivitamiseks. See l\u00e4henemine lihtsustab oluliselt s\u00f5lmede haldamist, kuna saame valida sobiva pildi koos juba installitud \u00fchilduvate brauserite ja draiveritega.<\/p>\n<p>Hoolimata negatiivsetest arvustustest stabiilsuse osas, eriti kui k\u00e4ivitada suurt hulka Node\u2019e paralleelselt, j\u00e4\u00e4b Selenium grid endiselt populaarseimaks t\u00f6\u00f6riistaks Selenium-testide paralleelseks k\u00e4ivitamiseks. Oluline on m\u00e4rkida, et avatud l\u00e4htekoodiga keskkonnas ilmuvad pidevalt erinevad t\u00e4iustused ja modifikatsioonid sellele t\u00f6\u00f6riistale, mis aitavad lahendada erinevaid kitsaskohti.<\/p>\n<p><u>Selenoid for Web<\/u><\/p>\n<p>See t\u00f6\u00f6riist on l\u00e4bimurre Seleniumi maailmas, kuna see t\u00f6\u00f6tab kohe kastist v\u00e4lja ja on teinud paljude automatiseerimise inseneride elu oluliselt lihtsamaks. Esiteks, see ei ole j\u00e4rjekordne Selenium Grid'i modifikatsioon. Selle asemel on arendajad loonud t\u00e4iesti uue versiooni Selenium Hub'ist Go keeles, mis koos kergete Docker-piltidega erinevate brauserite jaoks on andnud hoogu automatiseerimise testimise arengule. Lisaks peame Selenium Grid'i puhul m\u00e4\u00e4ratlema k\u00f5ik vajalikud brauserid ja nende versioonid eelnevalt, mis ei ole probleem, kui t\u00f6\u00f6 toimub 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 eelnevalt vajalikud pildid brauseritega alla laadida ja v\u00e4rskendada Selenoid'i interakteeruvat konfiguratsioonifaili. P\u00e4rast seda, kui Selenoid saab testidelt p\u00e4ringu, k\u00e4ivitab see automaatselt vajaliku konteineri vajaliku brauseriga. Kui test on l\u00f5ppenud, l\u00f5petab Selenoid konteineri, vabastades seel\u00e4bi ressursid j\u00e4rgnevateks p\u00e4ringuteks. See l\u00e4henemine k\u00f5rvaldab t\u00e4ielikult tuntud 's\u00f5lmdegratsiooni' probleemi, millega me sageli Selenium Grid'is silmitsi seisame.<\/p>\n<p>Kuid kahjuks ei ole Selenoid ikka veel h\u00f5bepadrun. Me saime funktsiooni 'brauser n\u00f5udmisel', kuid funktsioon 'ressursid n\u00f5udmisel' ei ole endiselt saadaval. Selenoid'i kasutamiseks peame selle f\u00fc\u00fcsilisel riistvaral v\u00f5i virtuaalmasinas kasutusele v\u00f5tma, mis t\u00e4hendab, et me peame eelnevalt teadma, kui palju ressursse tuleb eraldada. Ma arvan, et see ei ole probleem v\u00e4ikeste projektide puhul, mis k\u00e4ivitavad 10, 20 v\u00f5i isegi 30 brauserit korraga. Aga mis siis, kui me vajame 100, 500, 1000 ja rohkem? Pole m\u00f5tet pidevalt toetada ja maksta nii suure koguse ressursside eest. Artikli osades 5 ja 6 arutame lahendusi, mis v\u00f5imaldavad skaleerida, seel\u00e4bi oluliselt v\u00e4hendades ettev\u00f5tte kulusid.<\/p>\n<p><u>Selenoid Androidile<\/u><\/p>\n<p>P\u00e4rast Selenoid'i edu veebiautomatiseerimise t\u00f6\u00f6riistana soovisid inimesed midagi sarnast Androidi jaoks. Ja see on juhtunud \u2013 Selenoid on v\u00e4lja antud Androidi toe ka. \u00dcksikasjalikult kasutajapoolsetes punktides t\u00f6\u00f6p\u00f5him\u00f5te sarnaneb veebiautomatiseerimisega. Ainus erinevus seisneb selles, et Selenoid k\u00e4ivitab Androidi emulaatoritega konteinerid, mitte brauseritega. Minu arvates on see hetkel k\u00f5ige v\u00f5imsam tasuta t\u00f6\u00f6riist Androidi testide paralleelseks k\u00e4itamiseks.<\/p>\n<p>Mulle ei meeldi r\u00e4\u00e4kida selle t\u00f6\u00f6riista negatiivsetest k\u00fclgedest, kuna see meeldib mulle v\u00e4ga. Siiski on siin kohal samu puudusi, mis puudutavad ka veebiautomatiseerimist seoses skaleerimisega. Lisaks tuleb r\u00e4\u00e4kida veel \u00fchest piirangust, mis v\u00f5ib osutuda ootamatuks, kui seadistame t\u00f6\u00f6riista esmakordselt. Androidi piltide k\u00e4itamiseks on meil vaja f\u00fc\u00fcsilist masinat v\u00f5i VM-i koos pesas virtualiseerimise toega. Praktilises juhendis demonstreerin, kuidas seda Linuxi VM-is aktiveerida. Kuid kui olete macOS kasutaja ja soovite Selenoid'i kohalikult k\u00e4itada, siis Androidi teste k\u00e4itada ei saa. Kuid alati v\u00f5ite kohaliku Linuxi VM-i k\u00e4ivitada koos seadistatud 'nested virtualisation' ja k\u00e4itada Selenoid'i seal.<\/p>\n<h3>Praeguse infrastruktuuri oleku illustreerimine<\/h3>\n<p>\n K\u00e4esolevas artiklis lisame 2 t\u00f6\u00f6riista, et illustreerida infrastruktuuri. Need on Selenium grid veebitestide jaoks ja Selenoid Androidi testide jaoks. GitHubi juhendis n\u00e4itan ka, kuidas kasutada Selenoid'i veebitestide k\u00e4itamiseks.\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/1202ae79eba9cffc965f3a5b2648c755.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d5ppimise lingid<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.docker.com\/resources\/what-container\">Docker: mis on konteiner<\/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 seadistamine Androidi emulaatoritega<\/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\u00f6riistad<\/h3>\n<p><\/p>\n<ul>\n<li>On olemas teisi konteinerimise t\u00f6\u00f6riistu, kuid Docker on k\u00f5ige populaarsem. Kui soovite proovida midagi muud, pidage meeles, et need t\u00f6\u00f6riistad, mida oleme vaadanud Seleniumi testide paralleelseks k\u00e4itamiseks, ei t\u00f6\u00f6ta otse v\u00e4lja.\u00a0\u00a0<\/li>\n<li>Nagu juba \u00f6eldud, 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 integreerimine on arenduses \u00fcsna populaarne ja seisab koos versioonihaldes\u00fcsteemidega. Kuigi see on t\u00f5si, tunnen ma, et terminoloogias on teatav segadus. Selles l\u00f5igus soovin ma kirjeldada kolme selle tehnoloogia modifikatsiooni oma vaatepunktist. Internetis on palju artikleid erinevate t\u00f5lgendustega ja t\u00e4iesti normaalne on, kui teie arvamus erineb. Peamine on, et te oleksite oma kolleegidega samal lainel.<\/p>\n<p>Nii et on olemas kolm terminit: CI \u2014 Continuous Integration (j\u00e4tkuv integreerimine), CD \u2014 Continuous Delivery (j\u00e4tkuv kohaletoimetamine) ja taas CD \u2014 Continuous Deployment (j\u00e4tkuv juurutamine). (<i>Edaspidi kasutan neid termineid ingliskeelsena<\/i>). Iga modifikatsioon lisab teie arendusprotsessile m\u00f5ned t\u00e4iendavad etapid. Kuid s\u00f5na <u>continuous<\/u> (katkematu) on k\u00f5ige olulisem. Selles kontekstis m\u00f5tleme millegi peale, mis toimub algusest l\u00f5puni, ilma katkestuste v\u00f5i k\u00e4sitsi sekkumiseta. Vaatame CI &#038; CD-d ja CD-d selles kontekstis.<\/p>\n<ul>\n<li><strong>Continuous Integration \u2013<\/strong> see on arengu algfaas. P\u00e4rast uue koodi saatmist serverisse ootame kiiresti tagasisidet, et meie muudatused on head. Tavaliselt h\u00f5lmab CI staatilise koodi anal\u00fc\u00fcsi t\u00f6\u00f6riistade ja \u00fcksuste\/ sisemiste API testide k\u00e4ivitamist. See v\u00f5imaldab saada teavet meie koodi kohta juba m\u00f5ne sekundi\/ minuti p\u00e4rast.<\/li>\n<li><strong>Continuous Delivery<\/strong> on arenenum faas, mille k\u00e4igus k\u00e4ivitame integreerimis-\/UI-testid. Kuid sel hetkel ei saa me tulemusi nii kiiresti kui CI puhul. Esiteks v\u00f5tavad need testid rohkem aega l\u00e4bimiseks. Teiseks peame enne k\u00e4ivitamist oma muudatused test-\/staging- keskkonnas juurutama. Veelgi enam, kui r\u00e4\u00e4gime mobiiliarendusest, lisandub meie rakenduse koostamise etapp.<\/li>\n<li><strong>Continuous Deployment<\/strong> t\u00e4hendab, et me vabastame automaatselt (release) meie muudatused tootmisse, kui k\u00f5ik vastuv\u00f5tutestid on eelnevalt l\u00e4bitud. Lisaks saab vabastamise etapist l\u00e4htudes seadistada erinevaid etappe, nagu n\u00e4iteks smoke-testide k\u00e4ivitamine tootmises ja huvipakkuvate m\u00f5\u00f5dikute kogumine. Continuous Deployment on v\u00f5imalik ainult juhul, kui automatiseeritud testide katvus on hea. Kui on vajalikud mingid k\u00e4sitsi sekkumised, sealhulgas testimine, siis see pole enam <u>Continuous<\/u> (katkestusteta). Siis saame r\u00e4\u00e4kida, et meie konveier vastab ainult Continuous Delivery praktikale.<\/li>\n<\/ul>\n<p><\/p>\n<h3>V\u00e4\u00e4rtus automatiseerimisinfrastruktuurile<\/h3>\n<p>\n Selles osas pean t\u00e4psustama, et kui r\u00e4\u00e4gime end-to-end UI-testidest, siis see t\u00e4hendab, et peame meie muudatused ja seotud teenused testkeskkondadesse juurutama. Continuous Integration protsess ei rakendu antud \u00fclesande jaoks ja peame hoolitsema v\u00e4hemalt Continuous Delivery praktikate rakendamise eest. Continuous Deployment omab m\u00f5tet ka UI-testide kontekstis, kui plaanime neid k\u00e4ivitada tootmises.<\/p>\n<p>Ja enne kui vaatame arhitektuuri muutmise illustratsiooni, tahan \u00f6elda paar s\u00f5na GitLab CI-st. Erinevalt teistest CI\/CD t\u00f6\u00f6riistadest, pakub GitLab kaugrepo ja palju muid lisafunktsioone. Seega on GitLab rohkem kui CI. See sisaldab kastist v\u00e4lja l\u00e4htekoodi haldamist, Agile juhtimist, CI\/CD pipelines, logimise t\u00f6\u00f6riistu ja m\u00f5\u00f5dikute kogumist. GitLabi arhitektuur koosneb GitLab CI\/CD-st ja GitLab Runner-ist. Toome v\u00e4lja l\u00fchikese kirjelduse ametlikult lehelt:<\/p>\n<blockquote><p>Gitlab CI\/CD on veebi rakendus koos API-ga, mis salvestab oma oleku andmebaasis, haldab projekte\/ehitusi ja pakub kasutajaliidest. GitLab Runner on rakendus, mis t\u00f6\u00f6tleb ehitusi. Seda saab installida eraldi ja see t\u00f6\u00f6tab GitLab CI\/CD-ga l\u00e4bi API. Testide k\u00e4itamiseks vajate nii GitLab instance'd kui ka Runner'it.<\/p><\/blockquote>\n<p><\/p>\n<h3>Praeguse infrastruktuuri oleku illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/a05ece39b6c6a9aaec4177d4b5242722.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d5ppimise lingid<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/articles\/continuousIntegration.html\">Martin Fowler: Continuous Integration<\/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\">Continuous Integration 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=\">Continuous Delivery raamat<\/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:\/\/jenkins.io\/\">Jenkinsile<\/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 palju teisi<\/li>\n<\/ul>\n<p><\/p>\n<h2>5. Pilvplatvormid<\/h2>\n<p><\/p>\n<h3>Tehnoloogia l\u00fchikirjeldus<\/h3>\n<p>\n Selles jaotises arutame populaarset trendi, mida nimetatakse 'avalikeks pilvedeks'. Vaatamata tohutule kasule, mida toovad \u00fclaltoodud virtualiseerimise ja konteinerimise tehnoloogiad, on meil endiselt vajalikke arvutusressursse. Ettev\u00f5tted ostavad kallid serverid v\u00f5i rentivad andmekeskusi, kuid sellisel juhul tuleb teha kalkulatsioone (m\u00f5nikord ebarealistlikke), kui palju ressursse me vajame, kas me kasutame neid 24\/7 ja millistel eesm\u00e4rkidel. N\u00e4iteks, tootmiseks on vajalik \u00f6\u00f6p\u00e4evaringne server, kuid kas vajame sarnaseid ressursse testimiseks v\u00e4ljaspool t\u00f6\u00f6aega? See s\u00f5ltub ka teostatava testimise t\u00fc\u00fcbist. N\u00e4ideteks v\u00f5ivad olla koormus-\/stressitestsid, mida plaanime l\u00e4bi viia v\u00e4ljaspool t\u00f6\u00f6aega, et saada tulemusi j\u00e4rgmiseks p\u00e4evaks. Kuid kindlasti ei ole \u00f6\u00f6p\u00e4evaringne serverite k\u00e4ttesaadavus vajalik end-to-end automaatsete testide jaoks ning eriti k\u00e4sitsi testimise keskkondade jaoks. Taoliste olukordade jaoks oleks hea saada piisavalt ressursse vajadusel, kasutada neid ja l\u00f5petada maksmine, kui need enam ei ole vajalikud. Veelgi enam, oleks imeline saada neid hetkega, tehes paar hiirekl\u00f5psu v\u00f5i k\u00e4ivitades paar skripti. Just selleks kasutatakse avalikke pilvi. Vaadakem m\u00e4\u00e4ratlust:<\/p>\n<blockquote><p>\u201eAvalik pilv m\u00e4\u00e4ratletakse kui arvutusressursid, mida pakuvad kolmandate osapoolte teenusepakkujad \u00fcle avaliku Interneti, muutes need kergesti k\u00e4ttesaadavaks k\u00f5igile, kes soovivad neid kasutada v\u00f5i osta. Need v\u00f5ivad olla tasuta v\u00f5i m\u00fc\u00fca n\u00f5udmise alusel, v\u00f5imaldades klientidel maksta ainult kulutatud CPU ts\u00fcklite, salvestusruumi v\u00f5i ribalaiuse eest.\u201d<\/p><\/blockquote>\n<p>\n Levinud arvamus on, et avalikud pilved on kallid. Kuid nende peamine idee on ettev\u00f5tte kulude v\u00e4hendamine. Nagu eelnevalt mainitud, v\u00f5imaldavad avalikud pilved saada ressursse vajadusel ja maksta ainult nende kasutamise aja eest. Samuti unustame vahel, et t\u00f6\u00f6tajad saavad palka, ja spetsialistid on samuti kallid ressursid. Tuleb meeles pidada, et avalikud pilved kergendavad infrastruktuuri hooldust, mis v\u00f5imaldab inseneridel keskenduda olulisematele \u00fclesannetele.\u00a0<\/p>\n<h3>V\u00e4\u00e4rtus automatiseerimisinfrastruktuurile<\/h3>\n<p>\n Millised konkreetsed ressursid on meil vaja end-to-end UI-testide jaoks? Peamiselt virtuaalmasinad v\u00f5i klastrid (r\u00e4\u00e4gime Kubernetesest j\u00e4rgmises jaotises), et k\u00e4ivitada brauserid ja emulaatorid. Mida rohkem brausereid ja emulaatoreid soovime korraga k\u00e4ivitada, seda rohkem CPU-d ja m\u00e4lu on vajalik ning seda rohkem tuleb meil selle eest maksta. Seega v\u00f5imaldavad avalikud pilved automaatikate testimise kontekstis meil n\u00f5udmise j\u00e4rgi k\u00e4ivitada suurt arvu (100, 200, 1000 ...) brausereid\/emulaatoreid, saada testimistulemusi v\u00f5imalikult kiiresti ja l\u00f5petada maksmine selliste \u00fclem\u00e4\u00e4raste ressursside eest.\u00a0<\/p>\n<p>K\u00f5ige populaarsemad pilveteenuse pakkujad on Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP). Praktilises juhendis on toodud GCP kasutamise n\u00e4ited, kuid \u00fcldiselt ei oma t\u00e4htsust, mida t\u00e4pselt automaatika \u00fclesannete jaoks kasutate. K\u00f5ik need pakuvad umbes sarnast funktsionaalsust. T\u00fc\u00fcpiliselt keskendub teenuse pakkuja valiku juhend kogu ettev\u00f5tte infrastruktuurile ja \u00e4riotsustele, mis j\u00e4\u00e4vad selle artikli raamidest v\u00e4ljapoole. Automaatikainseneridele v\u00f5ib olla huvitavam v\u00f5rrelda pilveteenuse pakkujate kasutust konkreetsete testimise eesm\u00e4rkide jaoks m\u00f5eldud pilveplatvormidega, nagu Sauce Labs, BrowserStack, BitBar jne. Nii teeme ka! Minu arvates on Sauce Labs k\u00f5ige tuntum pilvtestimise farm, seega valisin ma selle v\u00f5rdlemiseks.\u00a0<\/p>\n<p><u>GCP vs Sauce Labs automaatika eesm\u00e4rkidel:<\/u><\/p>\n<p>Kujutame ette, et meil on vaja samaaegselt l\u00e4bi viia 8 web-testi ja 8 Android-testi. Selleks kasutame GCP-d ja k\u00e4ivitame 2 virtuaalmasinat Selenoidiga. Esimesel k\u00e4ivitame 8 konteinerit brauseritega. Teisel \u2013 8 konteinerit emulaatoritega. Vaadakem hindu:\u00a0\u00a0<\/p>\n<p><img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/e4688fd2e6e5593d2e1c22fc57f59484.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n \u00dche Chrome'i konteineri k\u00e4ivitamiseks on meil vaja <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 konkreetseid kasutaja v\u00e4\u00e4rtusi CPU\/d\u00fcnaamilise m\u00e4lu jaoks, kuid hetkel ei ole see Sauce Labsi v\u00f5rdlemiseks oluline.<\/p>\n<p>Ja siin on Sauce Labsi kasutustasud:<\/p>\n<p><img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/1367d2b59bbef9603b4b4be166e8d721.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMa arvan, et olete juba m\u00e4rganud erinevust, kuid siiski toome v\u00e4lja tabeli meie \u00fclesande arvutustega:<\/p>\n<p><strong>Vajalikud ressursid<\/strong><br \/>\n<strong>Kuu tasu<\/strong><br \/>\n<strong>T\u00f6\u00f6ajad<\/strong><strong>(8.00 \u2013 20.00)<\/strong><br \/>\n<strong>T\u00f6\u00f6ajad<\/strong><strong>+ Eemaldatavad<\/strong><\/p>\n<p><strong>GCP Webi 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 veebilehtede jaoks<\/strong><br \/>\nVirtuaalne Cloud8 paralleeltestimine<br \/>\n$1.559<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p><strong>GCP Androidile<\/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 Androidile<\/strong><br \/>\nReaalne seadme pilv 8 paralleeltestimist<br \/>\n$1.999<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nNagu n\u00e4ha, on kulude erinevus tohutu, eriti kui teste k\u00e4ivitada ainult t\u00f6\u00f6ajal kaheksa tundi. Kuid kulusid saab veelgi v\u00e4hendada, kasutades esitatud masinaid. Mis see on?<\/p>\n<blockquote><p>Esitatud VM on instance, mille saate luua ja k\u00e4ivitada palju odavama hinnaga kui normaalsed instantsid. Siiski v\u00f5ib Compute Engine need instantsid katkestada (esitada), kui tal on vaja neid ressursse muude \u00fclesannete jaoks. Esitatud 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 instance katkestamisi, siis v\u00f5ivad esitatud instantsid oluliselt v\u00e4hendada teie Compute Engine'i kulusid. N\u00e4iteks v\u00f5ivad partii t\u00f6\u00f6tlemise t\u00f6\u00f6kohad t\u00f6\u00f6tada esitatud instantsidel. Kui m\u00f5ned neist instantsidest katkestatakse t\u00f6\u00f6tlemise ajal, siis t\u00f6\u00f6 aeglustub, kuid ei peatu t\u00e4iesti. Esitatud instantsid viivad l\u00f5pule teie partii t\u00f6\u00f6tlemise \u00fclesanded, ilma et need koormaksid teie olemasolevaid instantsid ja ilma et peaksite maksma t\u00e4ishinna t\u00e4iendavate normaalse instantside eest.<\/p><\/blockquote>\n<p>\n Ja see pole veel k\u00f5ik! Tegelikult olen kindel, et keegi ei k\u00e4ivita teste 12 tundi j\u00e4rjest. Kui see nii on, saate automaatselt k\u00e4ivitada ja peatada virtuaalsed masinad, kui need pole vajalikud. Tegelik kasutusaeg v\u00f5ib langeda kuni 6 tunnini p\u00e4evas. Sel juhul langeks tasu meie \u00fclesande kontekstis koguni 11$ kuus 8 brauseri eest. Kas see pole imeline? Kuid esitatud masinatega peame olema ettevaatlikud ja valmis katkestusteks ning ebastabiilseks toimimiseks, kuigi neid olukordi saab ette n\u00e4ha ja programmeerimise teel k\u00e4sitleda. See on seda v\u00e4\u00e4rt!<\/p>\n<p>Aga kindlasti ei \u00fctle ma, et '\u00e4rge kunagi kasutage pilvetestimise farmisid'. Neil on mitmeid eeliseid. Esiteks ei ole see lihtsalt virtuaalne masin, vaid t\u00e4ielik lahendus testimise automatiseerimiseks, millel on v\u00e4lja t\u00f6\u00f6tatud funktsionaalsus: kaugjuhtimine, logimine, ekraanipildid, videote salvestamine, erinevad brauserid ja f\u00fc\u00fcsilised mobiilseadmed. Paljusid olukordi v\u00f5ib see olla asendamatu suurep\u00e4rane alternatiiv. Eriti on testimisplatvormid kasulikud IOS-automatiseerimiseks, kui avalikud pilved suudavad pakkuda ainult Linuxi\/Windowsi s\u00fcsteeme. Kuid IOS-st r\u00e4\u00e4gitakse j\u00e4rgmistes artiklites. Soovitan alati olukorda arvesse v\u00f5tta ja \u00fclesannetest l\u00e4htuvalt: m\u00f5nes on odavam ja efektiivsem kasutada avalikke pilvi, samas kui m\u00f5nes on testimisplatvormid igati raha v\u00e4\u00e4rt.<\/p>\n<h3>Praeguse infrastruktuuri oleku illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/f68770c9e27677b9d762af574726c90e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d5ppimise 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: Ebaremate<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/vm-instance-pricing\">GCP: VM hindade<\/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 h\u00e4id uudiseid \u2013 me oleme peaaegu artikli l\u00f5puni j\u00f5udnud! Praegu on meie automatiseerimisstruktuur koosneb web ja Android-testidest, mida jooksutame paralleelselt GitLab CI kaudu, kasutades Dockerit toetavaid t\u00f6\u00f6riistu: Selenium grid ja Selenoid. Veelgi enam, me kasutame virtuaalmasinaid, mis on loodud GCP kaudu, et k\u00e4ivitada nendes konteinerid, mis sisaldavad brausereid ja emulaatoreid. Kulude v\u00e4hendamiseks k\u00e4ivitame need virtuaalsed masinad ainult n\u00f5udmisel ja peatame need, kui testimist ei toimu. Kas on midagi veel, mis v\u00f5iks meie infrastruktuuri parandada? Vastus on jah! Tere tulemast Kubernetes (K8s)!<\/p>\n<p>Alustame sellest, kuidas s\u00f5nad orkestreerimine, klaster ja Kubernetes omavahel seotud on. K\u00f5rgel tasemel on orkestreerimine s\u00fcsteem, mis juurutab ja haldab rakendusi. Testimise automatiseerimiseks on sellised konteineriseeritavad rakendused nagu Selenium grid ja Selenoid. Docker ja K8s t\u00e4iendavad \u00fcksteist. Esimene on m\u00f5eldud rakenduste juurutamiseks, teine aga orkestreerimiseks. K8s on omakorda klaster. Klastri \u00fclesanne on kasutada VM-e s\u00f5lmedena, mis v\u00f5imaldab installida erinevaid funktsioone, programme ja teenuseid \u00fche serveri (klastri) raames. Kui m\u00f5ni s\u00f5lm eba\u00f5nnestub, haaravad teised s\u00f5lmed \u00fclesande, tagades meie rakenduse katkematu t\u00f6\u00f6. Lisaks sellele on K8s-l oluline funktsionaalsus, mis on seotud skaleerimisega, v\u00f5imaldades automaatselt saada optimaalset ressursi hulka, tuginedes koormusele ja seatud piirangutele.<\/p>\n<p>T\u00f5ele au andes on Kubernetes'i k\u00e4sitsi juurutamine algusest peale mitte just lihtne \u00fclesanne. J\u00e4tan lingi tuntud praktilisele juhendile \"Kubernetes The Hard Way\", ja kui teid huvitab, v\u00f5ite harjutada. Kuid \u00f5nneks on olemas alternatiivsed meetodid ja t\u00f6\u00f6riistad. Lihtsaim neist on Google Kubernetes Engine (GKE) GCP-s, mis v\u00f5imaldab saada valmis klastrit p\u00e4rast paari klikki. Alguse tegemiseks soovitan just seda l\u00e4henemist, kuna see v\u00f5imaldab teil keskenduda studeerimisele, kuidas kasutada K8s oma \u00fclesannete jaoks, mitte uurida, kuidas sisemised komponendid omavahel integreeruvad.\u00a0<\/p>\n<h3>V\u00e4\u00e4rtus automatiseerimisinfrastruktuurile<\/h3>\n<p>\nVaatame m\u00f5ningaid olulisi funktsioone, mida K8s pakub:<\/p>\n<ul>\n<li>rakenduse juurutamine: multi-nodede klastrite kasutamine, mitte virtuaalmasinate;<\/li>\n<li>d\u00fcnaamiline skaleerimine: v\u00e4hendab kulusid ressurssidele, mis on kasutusel ainult n\u00f5udmisel;<\/li>\n<li>ennast taastav (Self-healing): automaatne pods'i taastamine (mis toob kaasa ka konteinerite taastamise);<\/li>\n<li>uuenduste v\u00e4ljalaskmine ja muudatuste tagasiv\u00f5tmine ilma seisakuta: t\u00f6\u00f6riistade, brauserite ja emulaatorite uuendamine ei katkesta praeguste kasutajate t\u00f6\u00f6d<\/li>\n<\/ul>\n<p>\n Kuid K8s ei ole endiselt h\u00f5bedane kuul. K\u00f5ikide eeliste ja piirangute m\u00f5istmiseks meie arutletud t\u00f6\u00f6riistade kontekstis (Selenium grid, Selenoid) arutame l\u00fchidalt K8s \u00fclesehitust. Klastris on kaks t\u00fc\u00fcpi node: Master Nodes ja Workers Nodes. Master Nodes vastutavad haldamise, juurutamise ja ajastamisotsuste eest. Workers nodes on need, kus rakendused t\u00f6\u00f6tavad. Node'id sisaldavad ka konteinerite k\u00e4itamise keskkonda. Meie puhul on selleks Docker, mis vastutab konteineritega seotud toimingute eest. Kuid on ka alternatiivseid lahendusi, n\u00e4iteks<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/containerd\/containerd\"> containerd<\/a><\/noindex>. Oluline on m\u00f5ista, et skaleerimine v\u00f5i ennast taastamine ei kehti konteineritele otseselt. See rakendatakse pods'ide arvu suurendamise v\u00f5i v\u00e4hendamise kaudu, mis omakorda sisaldavad konteinerit (tavaliselt \u00fcks konteiner pod'i kohta, kuid \u00fclesande j\u00e4rgi v\u00f5ib olla ka rohkem). K\u00f5rgetasemeline hierarhia esindab t\u00f6\u00f6taja node'e, mille sees on pods, mille sees on k\u00e4ivitatud konteinerid.<\/p>\n<p>Skaalafunktsioon on v\u00f5tmet\u00e4htsusega ja seda saab rakendada nii node'ide sees klastrite node-poolides kui ka pod'ide sees node'is. On kaks t\u00fc\u00fcpi skaalamist, mis kehtivad nii node'ide kui ka pod'ide kohta. Esimene t\u00fc\u00fcp on horisontaalne \u2013 skaleerimine toimub node'ide\/pod'ide arvu suurendamise abil. Selline t\u00fc\u00fcp on eelistatum. Teine t\u00fc\u00fcp on vastavalt vertikaalne. Skaleerimine toimub node'ide\/pod'ide suuruse suurendamisega, mitte nende arvu suurendamisega.<\/p>\n<p>N\u00fc\u00fcd vaatame meie t\u00f6\u00f6riistu \u00fclaltoodud m\u00f5istete kontekstis.<\/p>\n<p><u>Selenium grid<\/u><\/p>\n<p>Nagu eespool mainitud, on Selenium grid v\u00e4ga populaarne t\u00f6\u00f6riist ja pole \u00fcllatav, et see on konteineriseeritud. Seega pole \u00fcllatav, et Selenium grid'i saab k\u00e4itada K8s-i keskkonnas. N\u00e4idet sellest, kuidas seda teha, v\u00f5ib leida ametlikust K8s-i hoidlast. Nagu tavaliselt, lisan sektsiooni l\u00f5ppu lingid. Lisaks on praktilises juhendis n\u00e4idatud, kuidas seda teha Terraformi abil. Samuti on juhised, kuidas skaleerida pod'ide arvu, mis sisaldavad brauserikonteinereid. Kuid automaatse skaalimise funktsioon K8s-i kontekstis on endiselt keeruline \u00fclesanne. Kui ma hakkasin \u00f5ppima, ei leidnud ma mingit praktilist juhendit ega soovitusi. P\u00e4rast mitmeid uuringuid ja katsetusi koos DevOps-meeskonna toega valisime l\u00e4henemise, kus t\u00f5stame konteinerid koos vajalike brauseritega \u00fche pod'i sees, mis asub \u00fches t\u00f6\u00f6taja node'is. Selline l\u00e4henemine v\u00f5imaldab meil rakendada horisontaalset skaleerimisstrateegiat node'ide arvu suurendamise kaudu. Loodan, et tulevikus olukord muutub ja n\u00e4eme \u00fcha rohkem parimate l\u00e4henemisviiside ja valmislahenduste kirjeldusi, eriti p\u00e4rast Selenium grid 4 v\u00e4ljaandmist uue sisearhitektuuriga.<\/p>\n<p><u>Selenoid<\/u>:<\/p>\n<p>Praegu on Selenoid'i k\u00e4itamine K8s-is suurim pettumus. Need ei ole \u00fchilduvad. Teoreetiliselt saame t\u00f5sta Selenoid-konteineri pod'i sees, kuid kui Selenoid hakkab k\u00e4itama brauserikonteinereid, on need endiselt samas pod'is. See muudab skaleerimise v\u00f5imatuks ja seet\u00f5ttu ei erine Selenoid'i t\u00f6\u00f6 klastri sees virtuaalmasinast. Lugu l\u00f5ppeb siinkohal.<\/p>\n<p><u>Moon<\/u>:<\/p>\n<p>Teades seda kitsaskohta Selenoid'i t\u00f6\u00f6s, on arendajad v\u00e4lja t\u00f6\u00f6tanud v\u00f5imsama t\u00f6\u00f6riista, mida nad kutsuvad Mooniks. See t\u00f6\u00f6riist oli algselt m\u00f5eldud t\u00f6\u00f6tama Kubernetes'e keskkonnas ning seet\u00f5ttu on automaatne skaleerimisv\u00f5imekus saadaval. Veelgi enam, ma \u00fctleks, et praegu on see <u>ainus<\/u> t\u00f6\u00f6riist maailmas Seleniumis, mis pakub v\u00e4lja karbist v\u00e4lja native K8s klastri tuge (<i>ei ole enam, vaata j\u00e4rgmist t\u00f6\u00f6riista <\/i>). Mooni v\u00f5tmeomadus, mis tagab selle toe, on:\u00a0<\/p>\n<blockquote><p>Completely stateless. Selenoid hoiab m\u00e4lus teavet praegu k\u00e4imasolevate brauseriseansside kohta. Kui mingil p\u00f5hjusel selle protsess kokku kukub, kaovad k\u00f5ik k\u00e4imasolevad seansid. Moonil puudub seevastu sisemine olek ja see saab olla replikatsiooniks andmekeskustes. Brauseriseansid p\u00fcsivad aktiivsed isegi siis, kui \u00fcks v\u00f5i enam replikat laguneb.<\/p><\/blockquote>\n<p>Nii et Moon on suurep\u00e4rane lahendus, kuid \u00fche probleemiga \u2013 see ei ole tasuta. Hind s\u00f5ltub seansside arvust. Tasuta saab k\u00e4ivitada vaid 0-4 seanssi, mis pole just v\u00e4ga kasulik. Kuid alates viiendast seansist tuleb maksta 5$ iga\u00fche eest. Olukord v\u00f5ib ettev\u00f5tteti varieeruda, kuid meie puhul pole Mooni kasutamine m\u00f5istlik. Nagu ma eespool kirjutasin, saame vajadusel k\u00e4ivitada VMs koos Selenium Gridiga v\u00f5i suurendada s\u00f5lmede arvu klastris. \u00dche pipeline'i kohta k\u00e4ivitame umbes 500 brauserit ja peatame k\u00f5ik ressursid p\u00e4rast testide l\u00f5ppu. Kui me oleksime kasutanud Mooni, oleksime pidanud maksma t\u00e4iendavaid 500 x 5 = 2500 $ kuus, s\u00f5ltumata sellest, kui sageli me teste k\u00e4ivitame. Ja j\u00e4lle, ma ei \u00fctle \"\u00e4rge kasutage Moont\". Teie \u00fclesannete jaoks v\u00f5ib see olla asendamatu lahendus, n\u00e4iteks kui teie organisatsioonis on palju projekte\/tiime ning teil on vaja suurt \u00fchist klastri k\u00f5igi jaoks. Nagu alati, j\u00e4tan linki l\u00f5ppu ja soovitan teha k\u00f5ik vajalikud arvutused teie \u00fclesande kontekstis.<\/p>\n<p><u>Callisto<\/u>: (<i><strong>T\u00e4helepanu! Seda ei ole originaalses artiklis 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\u00f5lkes t\u00f6\u00f6tasin, ilmus netis uus paljulubav t\u00f6\u00f6riist Callisto (tere, Cypress ja teised Seleniumi tapjad). See t\u00f6\u00f6tab K8s-iga natiivselt ja v\u00f5imaldab Selenoid-konteinereid pods-des k\u00e4itada, jaotatuna Nodes-idele. K\u00f5ik t\u00f6\u00f6tab otse v\u00e4lja kastist, sealhulgas automaatne skaleerimine. Fantastiline, kuid tuleb testida. Mul on juba \u00f5nnestunud see t\u00f6\u00f6riist \u00fcles seada ja teha m\u00f5ned katsed. Kuid j\u00e4reldusi on veel vara teha, p\u00e4rast pikaajalisi tulemusi, v\u00f5ib-olla teen j\u00e4rgmistes artiklites \u00fclevaate. Praegu j\u00e4tan ainult lingid iseseisvaks uurimiseks.\u00a0\u00a0<\/p>\n<h3>Praeguse infrastruktuuri oleku illustreerimine<\/p>\n<h3><img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/c9c2ffd21df2a261947df809dcec7108.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00d5ppimise lingid<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/setup\/\">Kubernetes: seadistamine<\/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 mootor<\/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\">Jaotatud 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\u00f6riistad<\/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 n\u00fc\u00fcd oleme j\u00f5udnud viimase jaotuseni. Tavaliselt ei kuulu see tehnoloogia ja seotud \u00fclesanded automatiseerimise inseneride vastutusalasse. Sellel on oma p\u00f5hjused. Esiteks on paljudes organisatsioonides infrastruktuuri k\u00fcsimused DevOps osakonna kontrolli all, ning arendustiimid ei muretse eriti selle p\u00e4rast, kuidas pipeline t\u00f6\u00f6tab ja kuidas k\u00f5ike, mis sellega seotud, toetada. Teiseks, olgem ausad, praktikat \u00abInfrastruktuur kui kood (IaC)\u00bb ei rakendata endiselt paljudes ettev\u00f5tetes. Kuid kindlasti on see saanud populaarseks suunaks ja on oluline p\u00fc\u00fcda olla seotud selle protsesside, l\u00e4henemiste ja t\u00f6\u00f6riistadega. V\u00f5i v\u00e4hemalt olla kursis toimuvaga.<\/p>\n<p>Alustame selle l\u00e4henemise kasutamise motivatsiooniga. Oleme juba arutanud, et GitlabCI testide k\u00e4ivitamiseks vajame v\u00e4hemalt ressursse Gitlab Runneri k\u00e4itamiseks. Ja et k\u00e4ivitada brauserite\/emulaatorite konteinerid, peame reserveerima VM-i v\u00f5i klastrit. Peale testimise ressursside on meil vaja m\u00e4rkimisv\u00e4\u00e4rset hulka v\u00f5imekust arenduskeskkondade, staging'i ja tootmise toetamiseks, mis h\u00f5lmab ka andmebaase, automaatseid ajakavasid, v\u00f5rgukonfiguratsioone, koormuste tasakaalustajat, kasutajate \u00f5igusi ja nii edasi. Peamine probleem on n\u00f5utavates pingutustes, et seda k\u00f5ike toetada. On mitmeid viise, kuidas saame muudatusi teha ja uuendusi v\u00e4lja anda. N\u00e4iteks GCP kontekstis saame kasutada brauseris UI-konsooli ja teha k\u00f5iki toiminguid, klikkides nuppudel. Alternatiivne meetod v\u00f5ib olla API-k\u00f5nede kasutamine pilveelementidega suhtlemiseks v\u00f5i k \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 gcloud utiliidi rakendamine vajalike toimingute teostamiseks. Kuid t\u00f5eliselt suure hulga erinevate elementide ja infrastruktuuri elementide korral muutub k\u00f5iki toiminguid k\u00e4sitsi teostada raske v\u00f5i isegi v\u00f5imatuks. Veelgi enam, k\u00f5ik need k\u00e4sitsi toimingud on kontrollimatud. Me ei saa neid enne t\u00e4itmist \u00fcle vaadata, kasutada versioonihalduss\u00fcsteemi ega kiiresti tagasi kerida muudatusi, mis on p\u00f5hjustanud intsidenti. Selliste problemidega tegelemiseks on insenerid loonud ja loovad automaatseid bash\/shell-skripte, mis ei ole oluliselt parem kui eelnevad meetodid, kuna neid ei ole just lihtne kiiresti lugeda, m\u00f5ista, toetada ja modifitseerida protseduurilises stiilis.<\/p>\n<p>Selles artiklis ja praktilises juhendis kasutan kahte t\u00f6\u00f6riista, mis kuuluvad IaC praktika alla. Need on Terraform ja Ansible. M\u00f5ned arvavad, et nende samal ajal kasutamine pole m\u00f5ttekas, kuna nende funktsioonid on sarnased ja nad on \u00fcksteisega asendatavad. Kuid asi on selles, et algselt on nende eesm\u00e4rgid t\u00e4iesti erinevad. Ja fakt, et need t\u00f6\u00f6riistad peaksid teineteist t\u00e4iendama, on kinnitatud koosolekul, mille korraldasid HashiCorpi ja RedHati esindavad arendajad. Kontseptuaalne erinevus seisneb selles, et Terraform on serverite haldamiseks m\u00f5eldud provisioningu t\u00f6\u00f6riist, samas kui Ansible on konfiguratsioonihalduse t\u00f6\u00f6riist, mille eesm\u00e4rk on tarkvara installimine, seadistamine ja haldamine nendel serveritel.<\/p>\n<p>Teine oluline erinevus nende t\u00f6\u00f6riistade vahel on koodi kirjutamise stiil. Erinevalt bashist ja Ansible'ist kasutab Terraform deklaratiivset stiili, mis p\u00f5hineb soovitud l\u00f5ppseisundi kirjeldamisel, mida on vaja saavutada k\u00e4itamise tulemusena. N\u00e4iteks kui kavatseme luua 10 virtuaalmasinat (VM) ja rakendada muudatusi l\u00e4bi Terraformi, saame 10 VM-i. Kui k\u00e4ivitame skripti uuesti, siis ei toimu midagi, kuna meil on juba 10 VM-i ja Terraform teab sellest, kuna ta salvestab infrastruktuuri praeguse oleku olekufaile. Ansible seevastu kasutab protseduuri l\u00e4henemist ja kui palume sellel luua 10 VM-i, saame esimesel k\u00e4ivitamisel 10 VM-i, nagu ka Terraformiga. Kuid p\u00e4rast korduvat k\u00e4ivitamist on meil juba 20 VM-i. See on oluline erinevus. Protseduurilises stiilis me ei salvesta praegust seisundit, vaid kirjeldame lihtsalt samme, mida tuleb j\u00e4rgida. Loomulikult saame t\u00f6\u00f6tada erinevate olukordadega, lisada kontrollib, kas ressursid ja praegune seisund eksisteerivad, kuid pole m\u00f5tet raisata aega ja pingutada selle loogika kontrollimisega. Lisaks suurendab see viga tegemise riski.\u00a0<\/p>\n<p>Kokkuv\u00f5tteks v\u00f5ib \u00f6elda, et serverite provisionimiseks on sobivam t\u00f6\u00f6riist Terraform ja deklaratiivne m\u00e4rgistus. Kuid konfiguratsioonihalduse t\u00f6\u00f6 tuleks paremini delegeerida Ansible'ile. Kui oleme sellest aru saanud, vaatame automaatimise kontekstis kasutamise n\u00e4iteid.<\/p>\n<h3>V\u00e4\u00e4rtus automatiseerimisinfrastruktuurile<\/h3>\n<p>\n Siin on oluline m\u00f5ista, et testimise automatiseerimise infrastruktuur peaks olema osa kogu ettev\u00f5tte infrastruktuurist. See t\u00e4hendab, et k\u00f5ik IaC-praktikad tuleb rakendada globaalselt kogu organisatsiooni ressurssidele. Kes on selle eest vastutav, s\u00f5ltub teie protsessidest. DevOps-meeskond on nendes k\u00fcsimustes kogenum, nad n\u00e4evad kogu toimuvat pilti. Samas on QA-insenerid rohkem kaasatud automatiseerimise ja pipeline'i \u00fclesehitamise protsessi, mis v\u00f5imaldab neil paremini n\u00e4ha k\u00f5iki vajalikke muudatusi ja t\u00e4iustamise v\u00f5imalusi. Parim variant on t\u00f6\u00f6tada koos, jagades teadmisi ja ideid oodatud tulemuse saavutamiseks.\u00a0<\/p>\n<p>Tooksin 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. Paigaldada Ansible'i abil vajalikud testimise t\u00f6\u00f6riistad: docker, Selenoid, Selenium Grid ja laadida vajalikud brauserite\/emulaatorite versioonid.<\/p>\n<p>3. Kirjeldada Terraformi kaudu VM-i omadused, milles t\u00f6\u00f6tatakse GitLab Runner.<\/p>\n<p>4. Paigaldada Ansible'i abil GitLab Runner ja vajalikud kaasnevad t\u00f6\u00f6riistad, m\u00e4\u00e4rata seaded ja konfiguratsioonid.<\/p>\n<h3>Praeguse infrastruktuuri oleku illustreerimine<\/h3>\n<p>\n<img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/5d793a800a4ef62e181e6cb3a3f0544e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Uuringuks vajalikud lingid:<\/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 paremad<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.gruntwork.io\/a-comprehensive-guide-to-terraform-b3d32832baca\">Ulatuslik juhend Terraformi kohta<\/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 me 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\u00f6riistad<\/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 automatiseerimisinfrastruktuurile<\/strong><\/p>\n<p><strong>1<\/strong><br \/>\nKohalik jooks<br \/>\nNode.js, Selenium, Appium<\/p>\n<ul>\n<li>K\u00f5ige populaarsemad t\u00f6\u00f6riistad veebis ja mobiilis<\/li>\n<li>Toetab paljusid 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 arendusprogrammiga<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>3<\/strong><br \/>\nKonteineriseerimine<br \/>\nDocker, Selenium grid, Selenoid (Veeb, Android)<\/p>\n<ul>\n<li>Testide paralleelne k\u00e4itamine<\/li>\n<li>Isolaatud keskkonnad<\/li>\n<li>Lihtne, paindlik versioonide v\u00e4rskendamine<\/li>\n<li>D\u00fcnaamiline mitteaktiivsete 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>N\u00e4htavus kogu ettev\u00f5ttes \/ meeskonnas<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>5<\/strong><br \/>\nPilveplatvormid<br \/>\nGoogle Cloud Platform<\/p>\n<ul>\n<li>Ressursid vastavalt n\u00f5udlusele (maksame ainult siis, kui neid vajame)<\/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 brauserite\/emulaatoritega pods'i sees:<\/p>\n<ul>\n<li>Skaalautuvus \/ automaatne skaala<\/li>\n<li>Iseseisev taastumine<\/li>\n<li>A v\u00e4rskendused ja tagasip\u00f6\u00f6rdumised katkemata<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>7<\/strong><br \/>\nInfrastruktuur koodina (IaC)<br \/>\nTerraform, Ansible<\/p>\n<ul>\n<li>Sarnased eelised arendusinfrastruktuuris<\/li>\n<li>K\u00f5ik koodi versioonimise eelised<\/li>\n<li>Lihtne teha muudatusi ja hallata<\/li>\n<li>Totally automated<\/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&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine 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&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/71c5170293d98375d8ab86d05eb47a33.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step3: Konteineriseerimine\u00a0<br \/>\n<img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine 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&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine nullist.\" src=\"\/wp-content\/uploads\/2020\/04\/900f18b45124412a1ad00d3901efb40e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>step5: Pilveplatvormid<br \/>\n<img decoding=\"async\" alt=\"DevOps&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine 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&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine 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&#039;i t\u00f6\u00f6riistad ei ole m\u00f5eldud ainult DevOpsile. Testimise automatiseerimise infrastruktuuri ehitamine 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 on artikli l\u00f5pp. Kuid l\u00f5petuseks tahaksin seada teiega m\u00f5ned kokkulepped.<\/p>\n<p><u>Teie poolt<\/u><br \/>\n Kuidas alguses \u00f6eldi, tahaksin, et artikkel tooks praktilist kasu ja aitaks teil saadud teadmisi reaalses t\u00f6\u00f6s rakendada. Lisatakse veel kord<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AlexeyAltunin\/devops-tools-for-qa-automation-infrastructure\"> link praktilisele juhendile<\/a><\/noindex>.<\/p>\n<p>Kuid isegi p\u00e4rast seda \u00e4rge peatage, praktiseerige, uurige asjakohaseid linke ja raamatuid, \u00f5ppige, kuidas see t\u00f6\u00f6tab teie ettev\u00f5ttes, leidke kohti, mida saab parandada, ja osalege selles. Edu!<\/p>\n<p><u>Minu poolt<\/u><\/p>\n<p>Pealkirjast on n\u00e4ha, et see oli vaid esimene osa. Kuigi see tuli \u00fcsna suur, pole siin endiselt olulisi teemasid k\u00e4sitlemata. Teises osas kavatseme arutada automatiseerimise infrastruktuuri IOS-i kontekstis. Apple'i piirangute t\u00f5ttu, mis seondub IOS simulaatorite k\u00e4itamisega ainult macOS s\u00fcsteemides, on meie lahenduste valik piiratud. N\u00e4iteks pole meil v\u00f5imalik kasutada Dockerit simulaatori k\u00e4itamiseks v\u00f5i avalikke pilvi virtuaalmasinate k\u00e4itamiseks. Kuid see ei t\u00e4henda, et teisi alternatiive ei oleks. P\u00fc\u00fcan teid kursis hoida tipptasemel lahenduste ja kaasaegsete t\u00f6\u00f6riistadega!<\/p>\n<p>Samuti ei maininud ma \u00fcsna ulatuslikke teemasid, mis on seotud j\u00e4lgimisega. Osa 3-s kavatseme arutada k\u00f5ige populaarsemaid t\u00f6\u00f6riistu infrastruktuuri j\u00e4lgimiseks ning milliseid andmeid ja m\u00f5\u00f5dikuid tuleks arvesse v\u00f5tta.<\/p>\n<p>Ja l\u00f5petuseks. Tulevikus plaanin v\u00e4lja anda videokursuse testimisinfra ehitamisest ja populaarsetest t\u00f6\u00f6riistadest. Praegu on internetis \u00fcsna palju kursusi ja loenguid DevOpsi teemal, kuid k\u00f5ik materjalid esitatakse arendamise kontekstis, mitte testimise automatiseerimise. Selle teema osas on mul v\u00e4ga vajalik tagasiside, kas selline kursus oleks huvitav ja v\u00e4\u00e4rtuslik testijate ja automatiseerijate kogukonnale. Ait\u00e4h juba ette!<\/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 5.0.1.1 - 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\" \/>\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) 5.0.1.1\" \/>\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\" \/>\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 mitte ainult DevOpsile. Testimise automatiseerimise infrastruktuuri loomise protsess nullist | ProHoster","description":"Osa 1: Web \/ Android M\u00e4rkus: see artikkel on originaali t\u00f5lge vene keelde","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","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}