{"id":78520,"date":"2020-04-20T01:42:38","date_gmt":"2020-04-19T23:42:38","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/udobnyj-bdd-specflow-tfs"},"modified":"2020-04-20T01:42:38","modified_gmt":"2020-04-19T23:42:38","slug":"udobnyj-bdd-specflow-tfs","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/udobnyj-bdd-specflow-tfs","title":{"rendered":"BDD intuitivo: SpecFlow+TFS","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>In rete ci sono molti articoli su come utilizzare SpecFlow e come configurare TFS per eseguire test, ma non ce n'\u00e8 nessuno che contenga tutti gli aspetti. In questo articolo parler\u00f2 di come rendere l'esecuzione e la modifica degli scenari SpecFlow comoda per tutti. <\/p>\n<p><\/p>\n<h3 id=\"pod-katom-vy-uznaete-kak-poluchit\">Di seguito scoprirai come ottenere:<\/h3>\n<p><\/p>\n<ul>\n<li>Esecuzione dei test da TFS<\/li>\n<li>Collegamento automatico degli scenari ai test case in TFS<\/li>\n<li>Contenuto sempre aggiornato dei test case in TFS<\/li>\n<li>Possibilit\u00e0 di modificare gli scenari direttamente nel sistema di controllo versione dagli tester<br \/>\n<img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/3f9aa21842200ef09cb1dfb28b5194d2.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"predystoriya\">Contesto<\/h3>\n<p><\/p>\n<p>Ci siamo posti l'obiettivo di automatizzare il test dell'applicazione utilizzando l'approccio BDD. Poich\u00e9 il sistema di task tracking principale nella nostra azienda \u00e8 TFS, ho immaginato che i passaggi dello scenario SpecFlow siano i passaggi dei test case in TFS e che l'esecuzione dei test avvenga dai piani di test. Di seguito ti spiegher\u00f2 come ho realizzato tutto ci\u00f2.<\/p>\n<p><\/p>\n<h3 id=\"chto-nam-potrebuetsya\">Cosa ci servir\u00e0:<\/h3>\n<p><\/p>\n<ol>\n<li>Progetto con test su SpecFlow<\/li>\n<li>Azure DevOps Server (conosciuto anche come Team Foundation Server)<\/li>\n<li>Strumento per sincronizzare gli scenari SpecFlow con i test case in TFS<\/li>\n<\/ol>\n<p><\/p>\n<h2 id=\"nastroyka\">Impostazione<\/h2>\n<p><\/p>\n<h3 id=\"1-sozdanie-sborki-proekta-s-testami\">1. Creazione della build del progetto con i test<\/h3>\n<p><\/p>\n<p>Qui \u00e8 tutto semplice, build e pubblicazione degli artefatti. Maggiori dettagli sul terzo task pi\u00f9 avanti.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/84d4f0189ca000d3fda19f570ee69e49.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"2-sozdanie-reliza-dlya-zapuska-testov\">2. Creazione di un rilascio per eseguire i test<\/h3>\n<p><\/p>\n<p>Creiamo un rilascio con un'attivit\u00e0 \u2014 Visual Studio Test<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/c41b05bdd43c6620cd24e956715aa9cd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In questo caso, l'attivit\u00e0 \u00e8 impostata per eseguire i test manualmente dal piano di test. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/75f113c9cf9aee8eabf4d8b30ba1b20c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"3-sinhronizaciya-testkeysov\">3. Sincronizzazione dei test case<\/h3>\n<p><\/p>\n<p>Sappiamo che Visual Studio consente di collegare i metodi di test ai test case in TFS ed eseguirli dai piani di test. Per non doverlo fare manualmente e per sincronizzare il contenuto degli scenari, ho scritto una semplice applicazione console. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kharakhorin\/FeatureSync\">FeatureSync<\/a><\/noindex>. Il principio \u00e8 semplice: analizziamo il file feature e, tramite l'API TFS, aggiorniamo i test case.<\/p>\n<p><\/p>\n<p><strong>Come utilizzare FeatureSync<\/strong><\/p>\n<p><\/p>\n<p><strong>Aggiungiamo namespace e locale nell'intestazione del file feature:<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">#language:en\n@Namespace:Application.Autotests\nFeature: Log to application<\/code><\/pre>\n<p><\/p>\n<p>*il namespace deve corrispondere al nome del file .dll in cui si trovano i metodi di test<\/p>\n<p><\/p>\n<p><strong>Creiamo test case vuoti in TFS e aggiungiamo i tag con i loro id agli scenari:<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/c8627b5d822976a7871c21614bbce523.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">@2124573 @positive\nScenario: Autenticazione riuscita\n    Given sono nella pagina di autorizzazione\n    E inserisco:\n        | Login | Password |\n        | utente  | pass     |\n    When premo il pulsante Login\n    Then il browser reindirizza alla homepage<\/code><\/pre>\n<p><\/p>\n<p><strong>Eseguiamo FeatureSync:<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">FeatureSync.exe -f C:FolderWithFeatures -s https:\/\/tfs.server.com\/collection -t 6ppjfdysk-your-tfs-token-2d7sjwfbj7rzba<\/code><\/pre>\n<p><\/p>\n<p>Nel nostro caso, l'esecuzione avviene dopo la build del progetto con i test:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/633029616249a0a0a54f1315a9552d78.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Risultato della sincronizzazione<\/strong><\/p>\n<p><\/p>\n<p>I passaggi dello scenario SpecFlow sono stati sincronizzati e lo stato Automation \u00e8 stato assegnato.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/f3713d8f66e72aeac04c15aefa3ae885.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/ef366421887e1b29d384baad46ff8196.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"4-nastroyka-test-plana\">4. Configurazione del piano di test<\/h3>\n<p><\/p>\n<p>Creiamo un piano di test, aggiungiamo i nostri casi automatizzati, nelle impostazioni scegliamo il build e la release<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/e5dc499dfd4340c0fa30926a301a1297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/a871cfdbb52d0d94d1842987859e2380.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"5-zapusk-testov\">5. Esecuzione dei test<\/h3>\n<p><\/p>\n<p>Selezioniamo il test necessario nel piano di test e lo avviamo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"BDD intuitivo: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/9e6e72ede126ddb582f3541c7d001308.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"zaklyuchenie\">Conclusione<\/h3>\n<p><\/p>\n<p>Vantaggi di questa configurazione: <\/p>\n<p><\/p>\n<ul>\n<li>qualsiasi tester pu\u00f2 aprire il file feature nella web form di controllo versione, modificarlo e le modifiche avranno effetto immediatamente dopo il build<\/li>\n<li>\u00e8 possibile eseguire i test in qualsiasi momento singolarmente<\/li>\n<li>modello di test trasparente \u2014 sappiamo sempre cosa sta facendo il test che abbiamo avviato.<\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497730\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0441\u0435\u0442\u0438 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SpecFlow, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c TFS \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432, \u043d\u043e \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 \u0431\u044b \u0432 \u0441\u0435\u0431\u0435 \u0432\u0441\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 SpecFlow \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c: \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u0437 TFS \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043b\u0438\u043d\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":78521,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-78520","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0441\u0435\u0442\u0438 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SpecFlow, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c TFS \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432, \u043d\u043e \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 \u0431\u044b \u0432 \u0441\u0435\u0431\u0435 \u0432\u0441\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 SpecFlow \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c: \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u0437 TFS \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043b\u0438\u043d\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432\" \/>\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\/administrirovanie\/udobnyj-bdd-specflow-tfs\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\udd47\u0423\u0434\u043e\u0431\u043d\u044b\u0439 BDD: SpecFlow+TFS | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0441\u0435\u0442\u0438 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SpecFlow, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c TFS \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432, \u043d\u043e \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 \u0431\u044b \u0432 \u0441\u0435\u0431\u0435 \u0432\u0441\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 SpecFlow \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c: \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u0437 TFS \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043b\u0438\u043d\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/udobnyj-bdd-specflow-tfs\" \/>\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-19T23:42:38+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-19T23:42:38+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\udd47Comodo BDD: SpecFlow+TFS | ProHoster","description":"Ci sono molte articoli su come utilizzare SpecFlow, come configurare TFS per eseguire test, ma non ce n'\u00e8 nessuno che contenga tutti gli aspetti. In questo articolo vi parler\u00f2 di come rendere l'esecuzione e la modifica degli scenari SpecFlow comoda per tutti. Dopo il salto scoprirete come ottenere: Esecuzione dei test da TFS Link automatico degli scenari","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/udobnyj-bdd-specflow-tfs","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\udd47\u0423\u0434\u043e\u0431\u043d\u044b\u0439 BDD: SpecFlow+TFS | ProHoster","og:description":"\u0412 \u0441\u0435\u0442\u0438 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c SpecFlow, \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c TFS \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432, \u043d\u043e \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0430 \u0431\u044b \u0432 \u0441\u0435\u0431\u0435 \u0432\u0441\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 SpecFlow \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u0432\u0441\u0435\u0445. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0432\u044b \u0443\u0437\u043d\u0430\u0435\u0442\u0435 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c: \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u0437 TFS \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043b\u0438\u043d\u043a \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/udobnyj-bdd-specflow-tfs","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-19T23:42:38+00:00","article:modified_time":"2020-04-19T23:42:38+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"78520","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:56:36","updated":"2022-09-30 18:25:41"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/78520","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=78520"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/78520\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/78521"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=78520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=78520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=78520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}