{"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\/de\/blog\/administrirovanie\/udobnyj-bdd-specflow-tfs","title":{"rendered":"Benutzerfreundliches BDD: SpecFlow+TFS","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Im Netz gibt es viele Artikel dar\u00fcber, wie man SpecFlow nutzt und TFS f\u00fcr Testausf\u00fchrungen einrichtet, aber keinen, der alle Aspekte abdeckt. In diesem Artikel erkl\u00e4re ich, wie Sie das Starten und Bearbeiten von SpecFlow-Szenarien f\u00fcr alle Benutzer komfortabel gestalten k\u00f6nnen. <\/p>\n<p><\/p>\n<h3 id=\"pod-katom-vy-uznaete-kak-poluchit\">Unter dem Link erfahren Sie, wie Sie Folgendes erhalten:<\/h3>\n<p><\/p>\n<ul>\n<li>Tests aus TFS starten<\/li>\n<li>Automatische Verkn\u00fcpfung von Szenarien mit Testf\u00e4llen in TFS<\/li>\n<li>Immer aktuelle Inhalte der Testf\u00e4lle in TFS<\/li>\n<li>M\u00f6glichkeit, Szenarien direkt im Versionskontrollsystem von Testern zu bearbeiten<br \/>\n<img decoding=\"async\" alt=\"Benutzerfreundliches BDD: 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\">Hintergrund<\/h3>\n<p><\/p>\n<p>Wir standen vor der Herausforderung, das Testen einer Anwendung mit dem BDD-Ansatz zu automatisieren. Da TFS das zentrale Task-Tracking-System in unserem Unternehmen ist, hatte ich die Vorstellung, dass die Schritte der SpecFlow-Szenarien die Schritte der Testf\u00e4lle in TFS darstellen und die Tests aus den Testpl\u00e4nen gestartet werden. Im Folgenden erkl\u00e4re ich, wie ich das umgesetzt habe.<\/p>\n<p><\/p>\n<h3 id=\"chto-nam-potrebuetsya\">Was wir ben\u00f6tigen:<\/h3>\n<p><\/p>\n<ol>\n<li>Ein Projekt mit Tests in SpecFlow<\/li>\n<li>Azure DevOps Server (auch bekannt als Team Foundation Server)<\/li>\n<li>Ein Tool zur Synchronisierung von SpecFlow-Szenarien mit Testf\u00e4llen in TFS<\/li>\n<\/ol>\n<p><\/p>\n<h2 id=\"nastroyka\">Konfiguration<\/h2>\n<p><\/p>\n<h3 id=\"1-sozdanie-sborki-proekta-s-testami\">1. Erstellung eines Builds f\u00fcr das Testprojekt<\/h3>\n<p><\/p>\n<p>Hier ist alles einfach, Build und Ver\u00f6ffentlichung der Artefakte. \u00dcber die dritte Aufgabe sp\u00e4ter mehr.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Benutzerfreundliches BDD: 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. Erstellung eines Releases zum Starten der Tests<\/h3>\n<p><\/p>\n<p>Wir erstellen ein Release mit einer Aufgabe \u2013 Visual Studio Test<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Benutzerfreundliches BDD: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/c41b05bdd43c6620cd24e956715aa9cd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In diesem Fall ist die Aufgabe so konfiguriert, dass Tests manuell aus dem Testplan gestartet werden. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Benutzerfreundliches BDD: 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. Synchronisierung der Testf\u00e4lle<\/h3>\n<p><\/p>\n<p>Wir wissen, dass Visual Studio es erm\u00f6glicht, Testmethoden mit Testf\u00e4llen in TFS zu verkn\u00fcpfen und sie aus Testpl\u00e4nen auszuf\u00fchren. Um dies nicht manuell durchf\u00fchren zu m\u00fcssen und um die Inhalte der Szenarien zu synchronisieren, habe ich eine einfache Konsolenanwendung geschrieben. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kharakhorin\/FeatureSync\">FeatureSync<\/a><\/noindex>. Das Prinzip ist einfach \u2013 wir parsen die Feature-Datei und aktualisieren die Testf\u00e4lle \u00fcber die TFS-API.<\/p>\n<p><\/p>\n<p><strong>So verwenden Sie FeatureSync<\/strong><\/p>\n<p><\/p>\n<p><strong>F\u00fcgen Sie den Namespace und die Locale in den Header der Feature-Datei ein:<\/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>*Der Namespace muss mit dem Namen der .dll-Datei \u00fcbereinstimmen, in der sich die Test-Methoden befinden<\/p>\n<p><\/p>\n<p><strong>Erstellen Sie leere Testf\u00e4lle in TFS und f\u00fcgen Sie Tags mit ihren IDs zu den Szenarien hinzu:<\/strong><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Benutzerfreundliches BDD: 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 @positiv\nSzenario: Erfolgreiche Authentifizierung\n    Gegeben sei ich auf der Authentifizierungsseite\n    Und ich gebe ein:\n        | Login | Passwort |\n        | benutzer | passwort |\n    Wenn ich die Schaltfl\u00e4che Login dr\u00fccke\n    Dann wird der Browser zur Startseite weitergeleitet<\/code><\/pre>\n<p><\/p>\n<p><strong>Starten Sie FeatureSync:<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">FeatureSync.exe -f C:OrdnerMitFeatures -s https:\/\/tfs.server.com\/collection -t 6ppjfdysk-your-tfs-token-2d7sjwfbj7rzba<\/code><\/pre>\n<p><\/p>\n<p>In unserem Fall erfolgt der Start nach dem Erstellen des Projekts mit den Tests:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Benutzerfreundliches BDD: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/633029616249a0a0a54f1315a9552d78.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><strong>Ergebnis der Synchronisierung<\/strong><\/p>\n<p><\/p>\n<p>Die Schritte des SpecFlow-Szenarios wurden synchronisiert und der Status Automation wurde festgelegt.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Benutzerfreundliches BDD: 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=\"Benutzerfreundliches BDD: 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. Konfiguration des Testplans<\/h3>\n<p><\/p>\n<p>Wir erstellen einen Testplan, f\u00fcgen unsere automatisierten Tests hinzu und w\u00e4hlen in den Einstellungen den Build und die Version aus.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Benutzerfreundliches BDD: 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=\"Benutzerfreundliches BDD: 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. Tests starten<\/h3>\n<p><\/p>\n<p>Wir w\u00e4hlen den ben\u00f6tigten Test im Testplan aus und starten ihn.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Benutzerfreundliches BDD: SpecFlow+TFS\" src=\"\/wp-content\/uploads\/2020\/04\/9e6e72ede126ddb582f3541c7d001308.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"zaklyuchenie\">Fazit<\/h3>\n<p><\/p>\n<p>Vorteile dieser Konfiguration: <\/p>\n<p><\/p>\n<ul>\n<li>jeder Tester kann die Feature-Datei im Web-Interface der Versionskontrolle \u00f6ffnen, bearbeiten und die \u00c4nderungen treten sofort nach dem Build in Kraft.<\/li>\n<li>Tests k\u00f6nnen jederzeit einzeln gestartet werden.<\/li>\n<li>Transparente Testmodell \u2013 wir wissen stets, was der Test, den wir gestartet haben, tut.<\/li>\n<\/ul>\n<p>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Praktisches BDD: SpecFlow+TFS | ProHoster","description":"Im Internet gibt es viele Artikel dar\u00fcber, wie man SpecFlow verwendet und TFS f\u00fcr die Ausf\u00fchrung von Tests konfiguriert, aber keinen, der alle Aspekte abdeckt. In diesem Artikel erkl\u00e4re ich, wie der Start und die Bearbeitung von SpecFlow-Szenarien f\u00fcr alle bequem gemacht werden kann. Unter dem Cut erfahren Sie, wie Sie Folgendes erhalten: Tests aus TFS starten Automatischer Link zu Szenarien.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/udobnyj-bdd-specflow-tfs","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/78520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=78520"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/78520\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/78521"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=78520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=78520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=78520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}