{"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\/it\/blog\/novosti-interneta\/testmace-bystryj-start","title":{"rendered":"TestMace. Avvio rapido","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TestMace. Avvio rapido\" src=\"\/wp-content\/uploads\/2019\/12\/ca19545f1cc06814a69a6a3e6d9f3a5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ciao a tutti. Stiamo lentamente uscendo dall'ombra e continuiamo la nostra serie di articoli sul nostro prodotto. Dopo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">quello precedente<\/a><\/noindex> l'articolo introduttivo, abbiamo ricevuto molti feedback (per lo pi\u00f9 positivi), suggerimenti e segnalazioni di bug. Oggi vi mostreremo <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex> il nostro applicativo in azione, dove potrete apprezzare alcune delle funzionalit\u00e0 del nostro software. Per un'immersione pi\u00f9 completa, vi consiglio di consultare la nostra documentazione all'indirizzo <noindex><a rel=\"nofollow\" href=\"http:\/\/docs-ru.testmace.com\">http:\/\/docs-ru.testmace.com<\/a><\/noindex>. Quindi, cominciamo! <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ustanovka\">Installazione<\/h1>\n<p><\/p>\n<p>Iniziamo con una banalit\u00e0. L'applicazione \u00e8 disponibile e realmente testabile su tre piattaforme: Linux, Windows, MacOS. Potete scaricare il programma di installazione per il sistema operativo di vostro interesse da <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">il nostro sito<\/a><\/noindex>. Per gli utilizzatori di Linux, \u00e8 disponibile l'installazione <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/testmace\">del pacchetto snap.<\/a><\/noindex>Ci auguriamo vivamente di riuscire a raggiungere presto anche Microsoft Store e App Store (ma \u00e8 necessario? Cosa ne pensate?).<\/p>\n<p><\/p>\n<h1 id=\"podopytnyy-scenariy\">Scenario di test<\/h1>\n<p><\/p>\n<p>Come scenario di prova abbiamo scelto il seguente scenario standard:<\/p>\n<p><\/p>\n<ul>\n<li>effettueremo il login: utente \u2014 admin, password \u2014 password<\/li>\n<li>aggiungeremo una nuova registrazione<\/li>\n<li>verificheremo l'aggiunta corretta della registrazione<\/li>\n<\/ul>\n<p><\/p>\n<p>Testeremo su <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/\">https:\/\/testmace-quick-start.herokuapp.com\/<\/a><\/noindex>. \u00c8 un comune <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/typicode\/json-server\">json-server<\/a><\/noindex>, perfetto per testare simili applicazioni. Abbiamo appena aggiunto l'autenticazione tramite token a tutte le route del json-server e abbiamo implementato il metodo login per ottenere questo token. Procederemo passo dopo passo, migliorando gradualmente il nostro progetto.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-proekta-i-popytka-sozdat-suschnost-bez-avtorizacii\">Creazione del progetto e tentativo di creare un'entit\u00e0 senza autenticazione<\/h2>\n<p><\/p>\n<p>Iniziamo creando un nuovo progetto (<strong>File<\/strong>-&gt;<strong>Nuovo progetto<\/strong>). Se stai avviando l'applicazione per la prima volta, il nuovo progetto si aprir\u00e0 automaticamente. Proviamo prima di tutto a fare una richiesta per creare una nuova registrazione (magari la creazione di registrazioni \u00e8 disponibile senza autenticazione). Seleziona nel menu contestuale del nodo Project le voci <strong>Aggiungi nodo<\/strong> -&gt; <strong>RequestStep<\/strong>. Come nome del nodo, impostiamo <strong>create-post<\/strong>. Di conseguenza, verr\u00e0 creato un nuovo nodo nell'albero e si aprir\u00e0 la scheda di questo nodo. Impostiamo i seguenti parametri per la richiesta:<\/p>\n<p><\/p>\n<ul>\n<li>Tipo di richiesta: 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>Corpo della richiesta: json con il valore <code>{\"title\": \"Nuovo post di avvio rapido per testmace\"}<\/code><br \/>\nSe hai fatto tutto correttamente, l'interfaccia apparir\u00e0 come segue:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Avvio rapido\" src=\"\/wp-content\/uploads\/2019\/12\/a5c81dc4977dd73a4975643bf8ced3da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tuttavia, se proviamo a effettuare la richiesta, il server restituir\u00e0 un codice 401 e senza autenticazione non ci sar\u00e0 nulla da fare su questo server. Beh, in effetti, era prevedibile).<\/p>\n<p><\/p>\n<h2 id=\"dobavlyaem-zapros-na-avtorizaciyu\">Aggiungiamo la richiesta di autenticazione<\/h2>\n<p><\/p>\n<p>Come gi\u00e0 detto, abbiamo un endpoint POST <code>\/login<\/code>, che accetta come corpo della richiesta un JSON del tipo: <code>{\"username\": \"\", \"password\": \"\"}<\/code>, dove <code>username<\/code> e <code>password<\/code> (ancora una volta, dai riferimenti precedenti) hanno valori <code>admin<\/code> e <code>password<\/code> rispettivamente. In risposta, questo endpoint restituisce un JSON del tipo <code>{\"token\": \"\"}<\/code>. Utilizzeremo questo per l'autenticazione. Creeremo <strong>RequestStep<\/strong> un nodo con il nome <strong>accesso<\/strong>, il nodo genitore sar\u00e0 <strong>Progetto<\/strong> questo nodo. Con il drag-and-drop, sposta questo nodo nella struttura al di sopra del nodo <strong>create-post<\/strong>. Impostiamo i seguenti parametri per la richiesta appena creata:<\/p>\n<p><\/p>\n<ul>\n<li>Tipo di richiesta: 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>Corpo della richiesta: json con il valore <code>{\"username\": \"admin\", \"password\": \"password\"}<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Eseguiamo la richiesta e riceviamo un codice 200 con il token nella risposta. Ecco come:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Avvio rapido\" 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: rimuoviamo la duplicazione del dominio<\/h2>\n<p><\/p>\n<p>Finora le richieste non sono collegate in un unico scenario. Ma questo non \u00e8 l'unico difetto. Se osserviamo attentamente, possiamo notare che almeno il dominio \u00e8 duplicato in entrambe le richieste. Non \u00e8 ideale. \u00c8 tempo di rifattorizzare questa parte del futuro scenario e le variabili ci aiuteranno in questo.<\/p>\n<p><\/p>\n<p>In linea di massima, le variabili svolgono la stessa funzione che hanno in altri strumenti e linguaggi di programmazione simili \u2014 eliminare le duplicazioni, migliorare la leggibilit\u00e0, ecc. Puoi leggere di pi\u00f9 sulle variabili in <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\">nostra documentazione<\/a><\/noindex>. In questo caso, abbiamo bisogno di variabili personalizzate. <\/p>\n<p><\/p>\n<p>Definiamo a livello del nodo Project una variabile <code>dominio<\/code> con il valore <code>https:\/\/testmace-quick-start.herokuapp.com<\/code>. Per fare ci\u00f2, \u00e8 necessario<\/p>\n<p><\/p>\n<ul>\n<li>Aprire la scheda di questo nodo e cliccare sull'icona della calcolatrice in alto a destra<\/li>\n<li>Cliccare su <strong>+ AGGIUNGI VARIABILE<\/strong><\/li>\n<li>Inserire il nome e il valore della variabile<br \/>\nNel nostro caso, la finestra di dialogo con la variabile aggiunta apparir\u00e0 come segue:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Avvio rapido\" src=\"\/wp-content\/uploads\/2019\/12\/071ac6dca2c5a49b78b11719fae5f650.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OK. Ora, grazie all'ereditariet\u00e0, possiamo utilizzare questa variabile nei discendenti a qualsiasi livello di annidamento. Nel nostro caso sono i nodi <strong>accesso<\/strong> e <strong>create-post<\/strong>. Per utilizzare la variabile nel campo di testo, \u00e8 necessario scrivere <code>${}<\/code>. Ad esempio, l'url per il login si trasforma in <code>${domain}\/login<\/code>, di conseguenza per <strong>create-post<\/strong> il nodo l'url apparir\u00e0 come <code>${domain}\/posts<\/code>.<\/p>\n<p><\/p>\n<p>In questo modo, seguendo il principio DRY, abbiamo migliorato leggermente lo script.<\/p>\n<p><\/p>\n<h2 id=\"sohranyaem-token-v-peremennuyu\">Salviamo il token nella variabile<\/h2>\n<p><\/p>\n<p>Dal momento che stiamo parlando di variabili, approfondiamo un po' questo argomento. Al momento, in caso di accesso riuscito, riceviamo dal server un token di autorizzazione, che sar\u00e0 necessario per le richieste successive. Salviamo questo token in una variabile. Poich\u00e9 il valore della variabile sar\u00e0 determinato durante l'esecuzione dello script, useremo un meccanismo speciale \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\/dynamic-variables\">variabili dinamiche<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Per iniziare, eseguiamo una richiesta di accesso. Nella scheda <strong>Parsed<\/strong> per visualizzare la risposta, posiziona il cursore sul token e nel menu contestuale (che si apre con il tasto destro del mouse o premendo il pulsante &#8230;) seleziona l'opzione <strong>Assegna alla variabile<\/strong>. Apparir\u00e0 una finestra di dialogo con i seguenti campi:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Path<\/strong> \u2014 quale parte della risposta viene presa (in questo caso \u00e8 <code>body.token<\/code>)<\/li>\n<li><strong>Valore attuale<\/strong> \u2014 quale valore si trova nel percorso Path (in questo caso \u00e8 il valore del token)<\/li>\n<li><strong>Nome variabile<\/strong> \u2014 il nome della variabile in cui <strong>Valore attuale<\/strong> verr\u00e0 salvato. In questo caso sar\u00e0 <code>il token<\/code><\/li>\n<li><strong>Node<\/strong> \u2014 in quale genitore verr\u00e0 creata la variabile <strong>Nome variabile<\/strong>. Selezioniamo Project<\/li>\n<\/ul>\n<p><\/p>\n<p>La finestra di dialogo compilata appare come segue:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Avvio rapido\" src=\"\/wp-content\/uploads\/2019\/12\/f524934dd1a4cb238afb6666135b360b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ora, ad ogni esecuzione del nodo <strong>accesso<\/strong> la variabile dinamica <code>il token<\/code> verr\u00e0 aggiornata con il nuovo valore dalla risposta. E questa variabile sar\u00e0 memorizzata in <strong>Progetto<\/strong> e grazie all'ereditariet\u00e0 sar\u00e0 accessibile ai discendenti.<\/p>\n<p><\/p>\n<p>Per accedere alle variabili dinamiche, \u00e8 necessario utilizzare <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/variables\">una variabile incorporata<\/a><\/noindex> <code>$dynamicVar<\/code>. Ad esempio, per accedere al token salvato, \u00e8 necessario chiamare <code>${$dynamicVar.token}<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"prokidyvaem-avtorizacionnyy-token-v-zaprosy\">Passiamo il token di autorizzazione nelle richieste<\/h2>\n<p><\/p>\n<p>Nei passaggi precedenti abbiamo ottenuto il token di autorizzazione e tutto ci\u00f2 che dobbiamo fare \u00e8 aggiungere l'intestazione <code>Authorization<\/code> con il valore <code>Bearer<\/code> in tutte le richieste che richiedono autorizzazione, comprese <strong>create-post<\/strong>. Ci sono diversi modi per farlo:<\/p>\n<p><\/p>\n<ol>\n<li>Copiare manualmente il token e aggiungere l'intestazione di autorizzazione alle richieste di interesse. Questo metodo funziona, ma la sua applicazione \u00e8 limitata solo alle richieste di tipo &#171;fatto e scartato&#187;. Non \u00e8 adatto per l'esecuzione multipla degli scenari<\/li>\n<li>Utilizzare la funzionalit\u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization\">autenticazione<\/a><\/noindex>.<\/li>\n<li>Usa <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">intestazioni predefinite<\/a><\/noindex><\/li>\n<\/ol>\n<p><\/p>\n<p>L'uso del secondo metodo sembra ovvio, ma nel contesto di questo articolo, tale approccio\u2026 non \u00e8 interessante. Diciamocelo: il meccanismo di autorizzazione \u00e8 pi\u00f9 o meno noto da altri strumenti (anche se abbiamo cose come <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization#inherit-from-parent\">ereditariet\u00e0 delle autorizzazioni<\/a><\/noindex>) e difficilmente sollever\u00e0 domande. <\/p>\n<p><\/p>\n<p>Un altro discorso sui titoli per impostazione predefinita! In breve, i titoli per impostazione predefinita sono intestazioni HTTP ereditate, che vengono aggiunte automaticamente alla richiesta se non disattivate esplicitamente. Questa funzionalit\u00e0 pu\u00f2 essere utilizzata, ad esempio, per implementare un'autenticazione personalizzata o semplicemente per eliminare la duplicazione in scenari. Applichiamo questa funzione per passare il token nelle intestazioni.<\/p>\n<p><\/p>\n<p>In precedenza, abbiamo saggiamente salvato il token in una variabile dinamica <code>$dynamicVar.token<\/code> a livello del nodo Project. Rimane da fare quanto segue:<\/p>\n<p><\/p>\n<ol>\n<li>Definire l'intestazione predefinita <code>Authorization<\/code> con il valore <code>Bearer ${$dynamicVar.token}<\/code> a livello del nodo Project. Per fare ci\u00f2, nell'interfaccia del nodo Project, \u00e8 necessario aprire il dialogo con le intestazioni predefinite (il pulsante <strong>Headers<\/strong> nell'angolo in alto a destra) e aggiungere l'intestazione corrispondente. Il dialogo con i valori compilati apparir\u00e0 come segue:<br \/>\n<img decoding=\"async\" alt=\"TestMace. Avvio rapido\" src=\"\/wp-content\/uploads\/2019\/12\/9abd888cbf96e53b633e8f0fd3389297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Disattivare questa intestazione dalla richiesta di login. \u00c8 ovvio: al momento del login non abbiamo ancora il token e con questa richiesta lo stabiliamo. Pertanto, nell'interfaccia della richiesta di login, nella scheda <strong>Headers<\/strong> nell'area <strong>Inherited<\/strong> togliamo il segno di spunta dall'intestazione Authorization. <\/li>\n<\/ol>\n<p><\/p>\n<p>Questo \u00e8 tutto. Ora l'intestazione di autorizzazione verr\u00e0 aggiunta a tutte le richieste che sono discendenti del nodo Project, escluso il nodo login. Quindi, a questo punto, abbiamo gi\u00e0 uno script pronto e ci resta solo da eseguirlo. \u00c8 possibile avviare lo script selezionando l'opzione <strong>Esegui<\/strong> dal menu contestuale del nodo Project. <\/p>\n<p><\/p>\n<h2 id=\"proveryaem-korrektnost-sozdaniya-posta\">Controlliamo la correttezza della creazione del post<\/h2>\n<p><\/p>\n<p>A questo punto, il nostro script \u00e8 in grado di effettuare il login e, utilizzando il token di autorizzazione, creare un post. Tuttavia, dobbiamo assicurarci che il nuovo post abbia un nome corretto. In pratica, resta da fare quanto segue:<\/p>\n<p><\/p>\n<ul>\n<li>Inviare una richiesta per ottenere il post per id, <\/li>\n<li>Controllare che il nome ricevuto dal server corrisponda al nome fornito durante la creazione del post.<\/li>\n<\/ul>\n<p><\/p>\n<p>Esaminiamo il primo passo. Poich\u00e9 il valore id viene determinato durante l'esecuzione dello script, \u00e8 necessario creare una variabile dinamica (chiamiamola <code>postId<\/code>) dal nodo <strong>create-post<\/strong> a livello del nodo Project. Come fare ci\u00f2 lo sappiamo gi\u00e0, basta fare riferimento alla sezione <strong>Salviamo il token nella variabile<\/strong>. Resta solo da creare una richiesta per ottenere il post con questo id. Per fare ci\u00f2, creiamo un RequestStep <strong>get-post<\/strong> con i seguenti parametri:<\/p>\n<p><\/p>\n<ul>\n<li>Tipo di richiesta: GET<\/li>\n<li>URL: ${domain}\/posts\/${$dynamicVar.postId}<\/li>\n<\/ul>\n<p><\/p>\n<p>Per realizzare il secondo passo, dobbiamo familiarizzarci con <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> il nodo. Il nodo Assertion \u00e8 un nodo che consente di scrivere verifiche su determinate richieste. Ogni nodo Assertion pu\u00f2 contenere pi\u00f9 affermazioni (verifiche). Ulteriori informazioni su tutti i tipi di assertion possono essere trovate nel nostro <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">documentazione<\/a><\/noindex>. Useremo <code>Compare<\/code> assertion con l'operatore <code>equal<\/code>. Ci sono diversi modi per creare le assertion:<\/p>\n<p><\/p>\n<ol>\n<li>Lento. Creare manualmente un nodo Assertion dal menu contestuale del nodo RequestStep. Nel nodo Assertion creato, aggiungere l'assertion desiderato e compilare i campi.<\/li>\n<li>Veloce. Creare un nodo Assertion insieme all'assertion dalla risposta del nodo RequestStep utilizzando il menu contestuale.<\/li>\n<\/ol>\n<p><\/p>\n<p>Utilizzeremo il secondo metodo. Ecco come apparir\u00e0 nel nostro caso.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Avvio rapido\" src=\"\/wp-content\/uploads\/2019\/12\/7f1d81669cb4c10db5f0afa3bf04eddf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Per coloro che non hanno compreso, ecco cosa succede:<\/p>\n<p><\/p>\n<ol>\n<li>Fare una richiesta nel nodo <strong>get-post<\/strong><\/li>\n<li>Nella scheda <strong>Parsed<\/strong> risposta, richiamare il menu contestuale e selezionare <strong>Create assertion<\/strong> -&gt; <strong>Compare<\/strong> -&gt; <strong>Equal<\/strong><\/li>\n<\/ol>\n<p><\/p>\n<p>Congratulazioni, abbiamo creato il nostro primo test! Facile, vero? Ora puoi eseguire completamente lo scenario e goderti il risultato. Resta solo da rifattorizzare e spostare <code>titolo<\/code> in una variabile separata. Ma lasceremo questo a voi come compito a casa :)<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusione<\/h1>\n<p><\/p>\n<p>In questa guida abbiamo creato uno scenario completo e abbiamo anche esaminato alcune delle funzionalit\u00e0 del nostro prodotto. Ovviamente, non abbiamo sfruttato tutte le funzioni e nei prossimi articoli faremo una panoramica dettagliata delle possibilit\u00e0 di TestMace. Seguite gli aggiornamenti!<\/p>\n<p><\/p>\n<p>P.S. Per coloro che non vogliono riprodurre tutti i passaggi, abbiamo gentilmente preparato <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/testmace-quick-start-project\">repository<\/a><\/noindex> il progetto dell'articolo. Pu\u00f2 essere aperto tramite <strong>File<\/strong> -&gt; <strong>Open project<\/strong> e selezionare la cartella Project.<\/p>\n<p>Fonte: <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-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - 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\/it\/blog\/novosti-interneta\/testmace-bystryj-start\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/blog\/novosti-interneta\/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. Avvio rapido | ProHoster","description":"Ciao a tutti.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/testmace-bystryj-start","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/blog\/novosti-interneta\/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\/it\/wp-json\/wp\/v2\/posts\/54167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=54167"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/54167\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=54167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=54167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=54167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}