{"id":54167,"date":"2019-12-19T00:00:00","date_gmt":"2019-12-18T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/testmace-bystryj-start"},"modified":"2020-02-18T14:02:08","modified_gmt":"2020-02-18T11:02:08","slug":"testmace-bystryj-start","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/news\/testmace-bystryj-start","title":{"rendered":"TestMace. Hurtig opstart","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TestMace. Hurtig opstart\" src=\"\/wp-content\/uploads\/2019\/12\/ca19545f1cc06814a69a6a3e6d9f3a5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hej alle sammen. Vi tr\u00e6der forsigtigt frem fra skyggerne og forts\u00e6tter serien af artikler om vores produkt. Efter <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">den forrige<\/a><\/noindex> den indledende artikel modtog vi mange anmeldelser (prim\u00e6rt positive), forslag og fejlrapporter. I dag vil vi vise <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex> det i praksis, s\u00e5 I kan vurdere nogle af funktionerne i vores applikation. For en mere fuldendt oplevelse anbefaler vi at kigge i vores dokumentation p\u00e5 adressen <noindex><a rel=\"nofollow\" href=\"http:\/\/docs-ru.testmace.com\">http:\/\/docs-ru.testmace.com<\/a><\/noindex>. S\u00e5 lad os komme i gang! <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ustanovka\">Installation<\/h1>\n<p><\/p>\n<p>Vi starter med det mest indlysende. Applikationen er tilg\u00e6ngelig og kan faktisk testes p\u00e5 tre platforme \u2014 Linux, Windows, MacOS. Du kan downloade installationsprogrammet til dit \u00f8nskede OS fra <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">vores hjemmeside<\/a><\/noindex>. For linux-brugere er der mulighed for installation af <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/testmace\">snap-pakken<\/a><\/noindex>. Vi h\u00e5ber meget, at vi snart ogs\u00e5 n\u00e5r Microsoft Store og App Store (er det n\u00f8dvendigt? Hvad t\u00e6nker I?).<\/p>\n<p><\/p>\n<h1 id=\"podopytnyy-scenariy\">Testscenarie<\/h1>\n<p><\/p>\n<p>Som testscenario har vi valgt f\u00f8lgende standardprocedure:<\/p>\n<p><\/p>\n<ul>\n<li>log ind: bruger \u2014 admin, kodeord \u2014 password<\/li>\n<li>tilf\u00f8je en ny post<\/li>\n<li>tjekke korrekt tilf\u00f8jelse af posten<\/li>\n<\/ul>\n<p><\/p>\n<p>Vi vil teste p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/\">https:\/\/testmace-quick-start.herokuapp.com\/<\/a><\/noindex>. Det er en almindelig <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/typicode\/json-server\">json-server<\/a><\/noindex>, som fungerer glimrende til test af s\u00e5danne applikationer. Vi har kun tilf\u00f8jet token-autentifikation til alle ruter i json-serveren og lavet en login-metode til at f\u00e5 dette token. Vi vil bev\u00e6ge os fremad skridt for skridt og gradvist forbedre vores projekt.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-proekta-i-popytka-sozdat-suschnost-bez-avtorizacii\">Oprettelse af projekt og fors\u00f8g p\u00e5 at oprette en entitet uden autentifikation<\/h2>\n<p><\/p>\n<p>F\u00f8rst opretter vi et nyt projekt (<strong>Fil<\/strong>-&gt;<strong>Nyt projekt<\/strong>). Hvis du starter applikationen for f\u00f8rste gang, \u00e5bnes det nye projekt automatisk. Lad os f\u00f8rst fors\u00f8ge at sende en anmodning om at oprette en ny post (m\u00e5ske er det muligt at oprette poster uden autentifikation). V\u00e6lg punkterne i kontekstmenuen for Project-noden <strong>Tilf\u00f8j node<\/strong> -&gt; <strong>RequestStep<\/strong>. Som nodens navn angiver vi <strong>create-post<\/strong>. Resultatet er, at der oprettes en ny node i tr\u00e6et, og fanen for denne node \u00e5bnes. Vi angiver f\u00f8lgende parametre for anmodningen:<\/p>\n<p><\/p>\n<ul>\n<li>Anmodningstype: POST<\/li>\n<li>url: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/posts\">https:\/\/testmace-quick-start.herokuapp.com\/posts<\/a><\/noindex><\/li>\n<li>Anmodningens krop: json med v\u00e6rdien <code>{\"title\": \"New testmace quick start post\"}<\/code><br \/>\nHvis du har gjort det rigtigt, vil gr\u00e6nsefladen se s\u00e5ledes ud:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hurtig opstart\" src=\"\/wp-content\/uploads\/2019\/12\/a5c81dc4977dd73a4975643bf8ced3da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Men hvis vi pr\u00f8ver at udf\u00f8re anmodningen, returnerer serveren 401 kode, og uden autentifikation kan vi ikke f\u00e5 noget ud af denne server. N\u00e5, det var i det store og hele forventet).<\/p>\n<p><\/p>\n<h2 id=\"dobavlyaem-zapros-na-avtorizaciyu\">Tilf\u00f8j anmodning om autentifikation<\/h2>\n<p><\/p>\n<p>Som n\u00e6vnt tidligere har vi et POST-endpoint <code>\/login<\/code>, som modtager json-formatet som anmodningskrop: <code>{\"username\": \"\", \"password\": \"\"}<\/code>, hvor <code>brugernavn<\/code> og <code>adgangskode<\/code> (igen, som n\u00e6vnt ovenfor) har betydning <code>admin<\/code> og <code>adgangskode<\/code> henholdsvis. Som svar returnerer denne endpoint json af typen <code>{\"token\": \"\"}<\/code>. Vi vil bruge den til autentificering. Lad os oprette <strong>RequestStep<\/strong> en node med navnet <strong>login<\/strong>, med <strong>Projekt<\/strong> fordi den fungerer som for\u00e6lder <strong>create-post<\/strong>. Brug drag-and-drop til at flytte denne node i tr\u00e6et ovenfor noderne<\/p>\n<p><\/p>\n<ul>\n<li>Anmodningstype: POST<\/li>\n<li>url: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/login\">https:\/\/testmace-quick-start.herokuapp.com\/login<\/a><\/noindex><\/li>\n<li>Anmodningens krop: json med v\u00e6rdien <code>{\"username\": \"admin\", \"password\": \"password\"}<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Vi udf\u00f8rer anmodningen og modtager en to-hundred kodesvar med tokenet. S\u00e5dan:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hurtig opstart\" src=\"\/wp-content\/uploads\/2019\/12\/222b2a0b965b4c1135b5b62c0b7424ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"refaktoring-ubiraem-dublirovanie-domena\">Refactoring: vi fjerner duplikering af dom\u00e6net<\/h2>\n<p><\/p>\n<p>Forel\u00f8bigt er anmodningerne ikke samlet i et enkelt scenarie. Men det er ikke den eneste ulempe. Hvis man ser n\u00e6rmere p\u00e5, kan man bem\u00e6rke, at dom\u00e6net i det mindste duplikeres i begge anmodninger. Det er ikke godt. Det er p\u00e5 tide at refactorere denne del af det fremtidige scenarie, og det hj\u00e6lper os med variable.<\/p>\n<p><\/p>\n<p>I f\u00f8rste omgang udfylder variablerne den samme rolle som i andre lignende v\u00e6rkt\u00f8jer og programmeringssprog \u2014 fjerner duplikering, forbedrer l\u00e6sbarhed osv. L\u00e6s mere om variable i <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\">vores dokumentation<\/a><\/noindex>. I dette tilf\u00e6lde har vi brug for brugerdefinerede variable. <\/p>\n<p><\/p>\n<p>Lad os definere en variabel p\u00e5 Project-niveau for noden <code>dom\u00e6ne<\/code> med v\u00e6rdien <code>https:\/\/testmace-quick-start.herokuapp.com<\/code>. For at g\u00f8re det skal du<\/p>\n<p><\/p>\n<ul>\n<li>\u00e5bne fanen for denne node og klikke p\u00e5 lommeregner-ikonet \u00f8verst til h\u00f8jre<\/li>\n<li>klik p\u00e5 <strong>+ ADD VARIABLE<\/strong><\/li>\n<li>indtast navnet og v\u00e6rdien for variablen<br \/>\nI vores tilf\u00e6lde vil dialogen med den tilf\u00f8jede variabel se s\u00e5ledes ud:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hurtig opstart\" src=\"\/wp-content\/uploads\/2019\/12\/071ac6dca2c5a49b78b11719fae5f650.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OK. Nu, takket v\u00e6re arv, kan vi bruge denne variabel i efterkommere p\u00e5 enhver dybde. I vores tilf\u00e6lde er det noderne <strong>login<\/strong> og <strong>create-post<\/strong>. For at bruge variablen i tekstfeltet skal du skrive <code>${}<\/code>. For eksempel bliver URL'en for login til <code>${domain}\/login<\/code>, og dermed for <strong>create-post<\/strong> noden bliver URL'en som <code>${domain}\/posts<\/code>.<\/p>\n<p><\/p>\n<p>s\u00e5ledes har vi lidt forbedret scenariet ved at f\u00f8lge DRY-princippet.<\/p>\n<p><\/p>\n<h2 id=\"sohranyaem-token-v-peremennuyu\">Vi gemmer tokenet i variablen<\/h2>\n<p><\/p>\n<p>N\u00e5r vi er inde p\u00e5 emnet med variable, lad os uddybe dette lidt. I \u00f8jeblikket modtager vi ved en vellykket login fra serveren et autentifikations-token, som vi har brug for i de efterf\u00f8lgende anmodninger. Lad os gemme dette token i en variabel. Da v\u00e6rdien af variablen bestemmes under udf\u00f8relsen af scenariet, bruger vi en speciel mekanisme \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\/dynamic-variables\">dynamiske variable<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>For starters, let's make a login request. In the tab <strong>Parsed<\/strong> For an answer, hover the cursor over the token and in the context menu (which can be accessed with either the right mouse button or by pressing the button &#8230;), select the item <strong>Assign to variable<\/strong>. A dialog will appear with the following fields:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Sti<\/strong> \u2014 which part of the response is taken (in our case, this is <code>body.token<\/code>)<\/li>\n<li><strong>Current value<\/strong> \u2014 what value lies on the Path (in our case, this is the token value)<\/li>\n<li><strong>Variable name<\/strong> \u2014 the name of the variable where <strong>Current value<\/strong> it will be saved. In our case, this will be <code>. Efter login, g\u00e5 til venstre i udvidelsesmenuen, som vist p\u00e5 billedet nedenfor, hvor du bliver bedt om at acceptere sikkerhedsrisikoen ved at aktivere udvidelsesmanageren og installere tredjepartsudvidelser, som teamet<\/code><\/li>\n<li><strong>Node<\/strong> \u2014 in which ancestor the variable will be created <strong>Variable name<\/strong>. Let's choose Project<\/li>\n<\/ul>\n<p><\/p>\n<p>The filled dialog looks as follows:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hurtig opstart\" src=\"\/wp-content\/uploads\/2019\/12\/f524934dd1a4cb238afb6666135b360b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Now, with each execution of the node, the <strong>login<\/strong> dynamic variable <code>. Efter login, g\u00e5 til venstre i udvidelsesmenuen, som vist p\u00e5 billedet nedenfor, hvor du bliver bedt om at acceptere sikkerhedsrisikoen ved at aktivere udvidelsesmanageren og installere tredjepartsudvidelser, som teamet<\/code> will be updated with a new value from the response. And this variable will be stored in <strong>Projekt<\/strong> the node and will be accessible to descendants through inheritance.<\/p>\n<p><\/p>\n<p>To refer to dynamic variables, you need to use <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/variables\">the built-in variable<\/a><\/noindex> <code>$dynamicVar<\/code>. For example, to access the saved token, you need to call <code>${$dynamicVar.token}<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"prokidyvaem-avtorizacionnyy-token-v-zaprosy\">Passing the authorization token in requests<\/h2>\n<p><\/p>\n<p>In the previous steps, we received the authorization token, and all that's left is to add the header <code>Authorization<\/code> with the value <code>Bearer<\/code> to all requests requiring authorization, including <strong>create-post<\/strong>. There are several ways to do this:<\/p>\n<p><\/p>\n<ol>\n<li>Manually copy the token and add the authorization header to the relevant requests. This method works, but its use is limited to requests like &#171;created and discarded&#187;. It is unsuitable for repeated execution of scenarios.<\/li>\n<li>Use the functionality of <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization\">autorisation<\/a><\/noindex>.<\/li>\n<li>Brug <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">default headers<\/a><\/noindex><\/li>\n<\/ol>\n<p><\/p>\n<p>Using the second method seems obvious, but in the context of this article, such an approach... is uninteresting. I mean, the authorization mechanisms are more or less familiar to you from other tools (even though we have things like <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization#inherit-from-parent\">authorization inheritance<\/a><\/noindex>) and are unlikely to raise questions. <\/p>\n<p><\/p>\n<p>Another matter is default headers! In short, default headers are inherited from ancestors\u2019 HTTP headers that are automatically added to the request unless explicitly disabled. With this functionality, for example, you can implement custom authorization or simply eliminate duplication in scenarios. We will apply this feature to pass the token in headers.<\/p>\n<p><\/p>\n<p>Tidligere har vi forsigtigt gemt token i en dynamisk variabel <code>$dynamicVar.token<\/code> p\u00e5 niveauet Project-noden. Der skal nu g\u00f8res f\u00f8lgende:<\/p>\n<p><\/p>\n<ol>\n<li>Bestem default header <code>Authorization<\/code> med v\u00e6rdien <code>Bearer ${$dynamicVar.token}<\/code> p\u00e5 niveauet Project-noden. For at g\u00f8re dette skal du i Project-nodens interface \u00e5bne dialogboksen for standardoverskrifter (knappen <strong>Headers<\/strong> i \u00f8verste h\u00f8jre hj\u00f8rne) og tilf\u00f8je den relevante header. Dialogen med udfyldte v\u00e6rdier vil se s\u00e5ledes ud:<br \/>\n<img decoding=\"async\" alt=\"TestMace. Hurtig opstart\" src=\"\/wp-content\/uploads\/2019\/12\/9abd888cbf96e53b633e8f0fd3389297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Fjern denne header fra login-anmodningen. Det er forst\u00e5eligt: p\u00e5 tidspunktet for login har vi endnu ikke token, og vi vil netop etablere det med denne anmodning. Derfor skal vi i login-anmodningens interface under fanen <strong>Headers<\/strong> i omr\u00e5det <strong>Inherited<\/strong> fjerne markeringen af Authorization-headeren. <\/li>\n<\/ol>\n<p><\/p>\n<p>Det er det hele. Nu vil autorisationsheaderen blive tilf\u00f8jet til alle anmodninger, der er efterkommere af Project-noden, undtagen login-noden. Det betyder, at vi allerede har et skript klar til at blive k\u00f8rt. Skriptet kan startes ved at v\u00e6lge punktet <strong>K\u00f8r<\/strong> i kontekstmenuen for Project-noden. <\/p>\n<p><\/p>\n<h2 id=\"proveryaem-korrektnost-sozdaniya-posta\">Vi kontrollerer korrektheden af oprettelsen af indl\u00e6gget<\/h2>\n<p><\/p>\n<p>P\u00e5 dette tidspunkt kan vores skript logge ind, og ved at bruge autorisationstokenet oprette et indl\u00e6g. Men vi skal sikre os, at det nyoprettede indl\u00e6g har det korrekte navn. Med andre ord skal der g\u00f8res f\u00f8lgende:<\/p>\n<p><\/p>\n<ul>\n<li>Sende en anmodning om at hente indl\u00e6gget ved id, <\/li>\n<li>Kontrollere, at navnet, der kom fra serveren, svarer til det navn, der blev sendt ved oprettelsen af indl\u00e6gget<\/li>\n<\/ul>\n<p><\/p>\n<p>Lad os se p\u00e5 det f\u00f8rste trin. Da v\u00e6rdien af id bestemmes under k\u00f8rsel af skriptet, skal der oprettes en dynamisk variabel (lad os kalde den <code>postId<\/code>) fra noden <strong>create-post<\/strong> p\u00e5 niveauet Project-noden. Hvordan dette g\u00f8res, ved vi allerede, det er tilstr\u00e6kkeligt at henvise til afsnittet <strong>Vi gemmer tokenet i variablen<\/strong>. Det eneste, der er tilbage, er at skabe en anmodning om at hente indl\u00e6gget ved dette id. For dette form\u00e5l opretter vi RequestStep <strong>get-post<\/strong> med f\u00f8lgende parametre:<\/p>\n<p><\/p>\n<ul>\n<li>Anmodningstype: GET<\/li>\n<li>URL: ${domain}\/posts\/${$dynamicVar.postId}<\/li>\n<\/ul>\n<p><\/p>\n<p>For at implementere det andet trin skal vi l\u00e6re om <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> noden. Assertion-noden er en node, der g\u00f8r det muligt at skrive kontroller p\u00e5 bestemte anmodninger. Hver Assertion-node kan indeholde flere udsagn (kontroller). Du kan l\u00e6se mere om alle typer assertions i vores <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">dokumentationen<\/a><\/noindex>. Vi vil bruge <code>Compare<\/code> assertion med operatoren <code>equal<\/code>. Der er flere m\u00e5der at oprette assertions p\u00e5:<\/p>\n<p><\/p>\n<ol>\n<li>Langsom. Opret en Assertion-nod manuelt fra kontekstmenuen i RequestStep-noden. I det oprettede Assertion-nod skal du tilf\u00f8je den \u00f8nskede assertion og udfylde felterne.<\/li>\n<li>Hurtig. Opret en Assertion-nod sammen med assertion fra svaret i RequestStep-noden via kontekstmenuen.<\/li>\n<\/ol>\n<p><\/p>\n<p>Vi bruger den anden metode. Her er, hvordan det vil se ud for vores tilf\u00e6lde.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hurtig opstart\" src=\"\/wp-content\/uploads\/2019\/12\/7f1d81669cb4c10db5f0afa3bf04eddf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>For dem, der ikke forstod, sker der f\u00f8lgende:<\/p>\n<p><\/p>\n<ol>\n<li>Foretag en anmodning i noden <strong>get-post<\/strong><\/li>\n<li>In the tab <strong>Parsed<\/strong> \u00e5bne kontekstmenuen for svaret og v\u00e6lge <strong>Opret assertion<\/strong> -&gt; <strong>Compare<\/strong> -&gt; <strong>Lighed<\/strong><\/li>\n<\/ol>\n<p><\/p>\n<p>Tillykke, vi har oprettet den f\u00f8rste test! Simpelt, ikke sandt? Nu kan du k\u00f8re scenariet helt igennem og nyde resultatet. Der er kun lidt tilbage at refaktorere og flytte <code>title<\/code> til en separat variabel. Men det lader vi v\u00e6re som en hjemmeopgave for jer :)<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Konklusion<\/h1>\n<p><\/p>\n<p>I denne vejledning har vi oprettet et fuldt scenarie og samtidig givet en oversigt over nogle funktioner i vores produkt. Selvf\u00f8lgelig har vi ikke brugt hele funktionaliteten, og i de f\u00f8lgende artikler vil vi lave en detaljeret gennemgang af TestMace's muligheder. Hold \u00f8je med opdateringer!<\/p>\n<p><\/p>\n<p>P.S. For dem, der har sv\u00e6rt ved at f\u00f8lge alle trin, har vi venligt optaget <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/testmace-quick-start-project\">repository<\/a><\/noindex> projektet fra artiklen. Du kan \u00e5bne det ved hj\u00e6lp af <strong>Fil<\/strong> -&gt; <strong>\u00c5bn projekt<\/strong> og v\u00e6lge mappen Projekt.<\/p>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u044b \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0442\u0435\u043d\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043e\u0431\u0437\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0437\u044b\u0432\u043e\u0432 (\u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445), \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 bug \u0440\u0435\u043f\u043e\u0440\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c TestMace \u0432 \u0434\u0435\u043b\u0435 \u0438 \u0432\u044b \u043f\u043e \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0443 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0438\u0448\u043a\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54167","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\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\/da\/blog\/news\/testmace-bystryj-start\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\udd47TestMace. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/news\/testmace-bystryj-start\" \/>\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=\"2019-12-18T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:08+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\udd47TestMace. Hurtig start | ProHoster","description":"Hej alle.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/news\/testmace-bystryj-start","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\udd47TestMace. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.","og:url":"https:\/\/prohoster.info\/da\/blog\/news\/testmace-bystryj-start","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":"2019-12-18T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54167","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":"2026-01-24 10:17:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:34","updated":"2026-01-24 10:17:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/54167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=54167"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/54167\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=54167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=54167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=54167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}