top 15 popular specflow interview questions
Am häufigsten gestellte Fragen und Antworten zum Specflow-Interview:
Unser vorheriges Specflow-Tutorial hat uns informiert So erstellen Sie Testberichte und führen selektive Tests aus .
In diesem Tutorial werden wir uns die beliebtesten Specflow-Interviewfragen mit ihren Antworten ansehen.
Lesen Sie die Komplette Specflow-Schulungsserie für ein leichtes Verständnis des Konzepts. Specflow ist ein Tool, das BDD-Praktiken im .NET Framework unterstützt. Es ist ein Open-Source-Framework, das auf GitHub gehostet wird. Es hilft bei der Verwendung von ATDD (Acceptance Test Driver Development) für .NET.
Top Specflow Interview Fragen und Antworten
Nachfolgend finden Sie die beliebtesten Fragen zum Specflow-Interview mit Antworten und Beispielen zum besseren Verständnis.
Q # 1) Was ist der Unterschied zwischen der Feature-Datei und den Bindungsdateien?
Antworten: Das Schreiben von BDD-Tests in Specflow besteht aus zwei Hauptkomponenten:
- Funktionsdateien: Diese enthalten die als Szenarien in domänenspezifischer Sprache (DSL) geschriebenen Tests und sind im Wesentlichen einfache englische Dateien, die für alle Projektbeteiligten geeignet und verständlich sind. In Wirklichkeit sind sie die eigentlichen Testdateien und werden durch die Bindungen oder Schrittdefinitionen interpretiert.
- Stufenbindungen: Diese Codedateien sind die eigentliche Intelligenzlogik hinter der Testausführung. Jeder Schritt in einem Szenario (das Teil einer Feature-Datei ist) wird an eine Schrittdefinitionsdatei gebunden, die tatsächlich ausgeführt wird, wenn der Test ausgeführt wird.
Eine Kombination aus Feature-Dateien und Schrittdefinition oder -bindungen ermöglicht es dem Specflow-Framework (oder einem anderen BDD-Framework), die Tests auszuführen.
F # 2) Was ist BDD und wie unterscheidet es sich von TDD oder ATDD?
Antworten: Alle diese drei Begriffe, d. H. BDD, TDD und ATDD, sind im Allgemeinen etwas mit der testgetriebenen Entwicklung verwandt, unterscheiden sich jedoch in vielerlei Hinsicht
- TDD: TDD erstellt im Grunde genommen Tests aus Entwicklersicht. Mit einfachen Worten, es handelt sich um eine Reihe von Tests, die ein Entwickler schreibt, um seinen Code zum Bestehen (oder Nichtbestehen) zu bringen. Es ist im Wesentlichen eine Technik, mit der Ihr Code fehlschlägt, bis alle spezifischen Anforderungen erfüllt sind. Grundsätzlich folgt ein Refactor-Zyklus für Code, bis alle Tests grün sind.
- BDD: BDD ist eng mit TDD verbunden, jedoch aus der Perspektive von außen nach innen relevanter. Dies bedeutet, dass BDD-Tests stärker an die Geschäfts- / Produktanforderungen gebunden sind und das gewünschte Verhalten des Systems in Form von Szenarien definieren. Im Gegensatz dazu handelt es sich bei TDD um detailliertere Unit-Tests. Außerdem handelt es sich bei den BDD-Spezifikationen im Allgemeinen um einfachen englischen Text, der leicht zu verstehen ist und eine bessere Zusammenarbeit zwischen allen Projektbeteiligten ermöglicht.
- ATDD: Der Schwerpunkt der akzeptanztestgesteuerten Entwicklung liegt eher auf der Akzeptanzperspektive des Benutzers. Diese Tests definieren auch das Kundenverhalten, jedoch vom Standpunkt der Integration oder des Endprodukts aus, wo der endgültige Anwendungsfall eines Kunden in ein Testszenario umgewandelt wird und die gesamte Entwicklungsarbeit darauf ausgerichtet ist, diese Anforderungen zu erfüllen.
F # 3) Was ist in der automatisch generierten Datei für die Specflow-Funktion enthalten?
Antworten: Specflow-CodeBehind-Dateien sind automatisch generierte Dateien mit der Erweiterung '.cs'. Diese Dateien haben die Bindungslogik von Schritten bis zur eigentlichen Schrittdefinition.
Einige Punkte bezüglich der automatisch generierten Dateien sind:
- Diese Dateien sollten nicht manuell geändert oder bearbeitet werden. Selbst wenn Sie dies versuchen, werden die Änderungen nicht gespeichert.
- Nach jeder Änderung in der Feature-Datei generiert der Compiler diese Datei neu, um Aktualisierungen zu erfassen.
F # 4) Wie werden Schrittbindungen auf verschiedene Quelldateien verteilt, auf die zugegriffen wird?
Antworten: Schrittbindungsdateien können wiederverwendet werden, auch wenn sie in separaten Quelldateien vorhanden sind und der Bindungsabgleich über einen regulären Ausdruck erfolgt.
Die Schrittbindungsdateien sind im Wesentlichen Teilklassen, die von zugeordnet werden (Bindung) Attribut. Dadurch wird sichergestellt, dass alle Schrittbindungen global verfügbar sind und mit Szenarioschritten in verschiedenen oder denselben Feature-Dateien verwendet werden können.
F # 5) Wie können mehrdeutige Schrittbindungsimplementierungen gelöst werden?
Antworten: Specflow bietet einen Mechanismus, um eine mehrdeutige Implementierung der Schrittbindung mithilfe eines aufgerufenen Konzepts zu vermeiden Umfangsbindungen.
Dies ist nützlich in Szenarien, in denen Sie ähnliche Schritte in Szenarien in derselben oder in verschiedenen Feature-Dateien ausführen und beide Schritte unterschiedlich behandeln möchten.
In einem normalen Szenario müssen Sie sicherstellen, dass Sie einen etwas anderen Text (damit sie nicht mit derselben Implementierung übereinstimmen) für Schritte schreiben, auch wenn sie Auswirkungen haben, da der gesamte Schrittabgleich über Regex erfolgt und es sich um einen gierigen Abgleich handelt Lesbarkeit.
Liste der Spionage-Apps für Android
Mit Scoped Bindings können Sie Tags mit einer bestimmten Bindungsimplementierung oder der gesamten Bindungsdatei angeben und sicherstellen, dass für den Abgleich auch ein zusätzlicher Filter der Kategorie vorhanden ist.
Die Schritte, die ausgeführt werden müssen, sind unten aufgeführt:
zu) Kennzeichnen Sie das Szenario mithilfe der Syntax mit einer Kategorie - @Etikett. Beispiel: Wir markieren das folgende Szenario mit dem Tag - @scopedBinding
@scopedBinding Scenario: Youtube should search for the given keyword and should navigate to search results page Given I have navigated to youtube website And I have entered India as search keyword When I press the search button Then I should be navigate to search results page
b) Verwenden Sie jetzt dasselbe Tag für die Schrittbindung, um sicherzustellen, dass zusätzlich zur Regex-Übereinstimmung auch die Tag- oder Kategorieübereinstimmung stattfindet (und dass andere Schritte dieser Implementierung nicht entsprechen, selbst wenn die Regex-Übereinstimmung erfolgreich ist).
Im obigen Beispiel möchten wir die Bindung für den Schritt festlegen. „ Und ich habe Indien als Suchbegriff eingegeben ”Fügen wir das Scope-Attribut mit dem Scoping-Parameter als Tag hinzu.
(Given(@'I have entered (.*) as search keyword'), Scope(Tag ='scopedBinding')) public void GivenIHaveEnteredIndiaAsSearchKeyword(String searchString) { // step binding implementation }
Ähnlich wie beim Scoping mit Tag können auch Scoping-Bindungen mit Feature- und Szenariotiteln erstellt werden.
F # 6) Wie kann der Testkontext gespeichert werden, während verschiedene Szenarien ausgeführt werden?
Antworten: Der Testkontext kann mit verschiedenen Ansätzen gespeichert werden, während Specflow-Tests ausgeführt werden, und jeder Ansatz hat seine Vor- und Nachteile.
- Verwenden von ScenarioContext und FeatureContext: Stellen Sie sich FeatureContext und ScenarioContext als ein globales Wörterbuch von Schlüssel-Wert-Paaren vor, auf das während der Ausführung von Features bzw. Szenarien zugegriffen werden kann. Das Wertefeld kann jeden Objekttyp speichern und muss beim Abrufen wie gewünscht in das Objekt umgewandelt werden.
- Verwenden von Feldern in Bindungsdateien: Dieser Ansatz ermöglicht die gemeinsame Nutzung des Kontexts für Bindungsimplementierungen in derselben und / oder verschiedenen Bindungsdateien im selben Namespace. Es unterscheidet sich nicht in der Aufrechterhaltung des Status mithilfe von Klassenvariablen und kann nach Bedarf über Bindungsimplementierungen hinweg festgelegt oder abgerufen werden.
- Verwenden des Specflow-eigenen DI-Frameworks: Specflow bietet ein Kontextinjektionsframework und kann verwendet werden, um den Kontext in Form von einfachen POCO-Klassen / -Objekten zu übergeben. Die Kontextobjekte / -klassen können über Konstruktorfelder eingefügt und an verschiedene Step-Bindungsdateien übergeben werden.
Unten sehen Sie ein Beispiel mit 2 Objekten, die durch Konstruktorinjektion injiziert wurden.
Welche Tools verwenden Business Analysten?
(Binding) public class StepImplementationClass { private readonly Context1 _context1; private readonly Context2 _context2; public YoutubeSearchFeatureSteps(Context1 context1, Context2 context2) { _context1 = context1; _context2 = context2; } }
F # 7) Was sind die Einschränkungen von Specflow oder BDD im Allgemeinen?
Antworten: BDD definiert, wie der Name selbst schon sagt, das Verhalten mit der Anwendung, die im Wesentlichen Anwendungsfälle in Testszenarien konvertiert.
Daher kann das Fehlen von Stakeholdern wie einem Unternehmen, einem Produkt und / oder Kunden die tatsächlichen Spezifikationen beeinflussen, für die die Entwickler Schreibtests implementieren werden, und daher möglicherweise nicht den tatsächlichen Wert liefern, den es hätte liefern können, und alle Stakeholder gehabt waren bei der Definition der Szenarien verfügbar.
Allerdings überlisten die Profis meistens die Nachteile von BDD und sind wirklich eine sehr hilfreiche Technik, um die Spezifikationen zu testen / zu validieren. Da es mehr oder weniger sprachunabhängig ist, da BDD-Frameworks für fast alle wichtigen Programmiersprachen wie Cucumber für Java, RSpec für Ruby und Specflow für .NET verfügbar sind.
F # 8) Was sind Schrittargumenttransformationen?
Antworten: Argumenttransformationen, wie der Name schon sagt, sind nichts anderes als die Transformation des Szenarioschritts.
Stellen Sie sich dies als eine zusätzliche Ebene des Abgleichs vor, die vor dem eigentlichen Schrittbindungsabgleich stattfindet, und es kann nützlich sein, eine andere Art von Benutzereingaben zu transformieren, anstatt unterschiedliche Einzelschrittimplementierungen für denselben Eingabetyp zu haben.
Für jeden Transformationsschritt ist das erforderliche Attribut StepArgumentTransformation
Ein Beispiel finden Sie im folgenden Codebeispiel:
Given I have entered 50 days into the timestamp to minute converter Given I have entered 1 day, 2 hours, 3 minutes into the timestamp to minute converter Given I have entered 1 day, 1 hour, 1 minute, 30 seconds into the timestamp to minute converter
In Bezug auf das obige Codebeispiel sind alle drei Schritte miteinander verbunden. Wenn jedoch der übliche Regex-Abgleich durchgeführt worden wäre, müssten Sie drei verschiedene Schrittimplementierungen schreiben.
Mit vorhandenen Step-Argumenttransformationen ist es möglich, die Werte zu transformieren und eine zu erstellen Zeitstempel Objekt aus den angegebenen Parametern und kehren zur ursprünglichen Schrittimplementierung zurück.
Schauen wir uns die Implementierung der Transformation an.
(StepArgumentTransformation(@'(?:(d*) day(?:s)?(?:, )?)?(?:(d*) hour(?:s)?(?:, )?)?(?:(d*) minute(?:s)?(?:, )?)?(?:(d*) second(?:s)?(?:, )?)?')) public TimeSpan convertToTimeSpan(String days, String hours, String minutes, String seconds) { // timestamp conversion logic }
Daher transformieren wir hier die Szenarioeingabe in einen Zwischenwert (wie TimeStamp) und geben den transformierten Wert an die tatsächliche Bindungsimplementierung zurück, wie im folgenden Beispiel gezeigt.
(Given(@'I have entered (.*) into the timestamp to minute converter')) public void GivenIHaveEnteredDaysIntoTheTimestampToMinuteConverter(TimeSpan tsTransformed) { // binding implementation }
Beachten Sie, wie der transformierte Wert vom Typ TimeSpan jetzt an die eigentliche Implementierungsmethode für die Schrittbindung zurückgegeben wird.
F # 9) Welche verschiedenen Arten von Haken werden von Specflow bereitgestellt?
Antworten:
Specflow bietet viele benutzerdefinierte Hooks oder spezielle Ereignisse, mit denen die Ereignishandler (im Wesentlichen Methoden / Funktionen) gebunden werden können, um eine Setup- / Teardown-Logik auszuführen.
Specflow bietet die folgenden Hooks:
- BeforeFeature / AfterFeature: Das Ereignis, das vor und nach dem Start der Funktion ausgelöst wird, schließt die Ausführung ab bzw. schließt sie ab.
- BeforeScenario / AfterScenario: Das Ereignis, das vor und nach der Ausführung eines Szenarios ausgelöst wird, wird gestartet bzw. abgeschlossen.
- BeforeScenarioBlock / AfterScenarioBlock: Das Ereignis, das vor und nach einem Szenario-Block ausgelöst wird, d. H. Wenn einer der Szenario-Blöcke, die zu 'Gegeben', 'Wann' oder 'Dann' gehören, startet oder abgeschlossen wird.
- BeforeStep / AfterStep: Das Ereignis, das vor und nach jedem Schritt des Szenarios ausgelöst wurde.
- BeforeTestRun / AfterTestRun: Dieses Ereignis wird nur einmal während der gesamten Testausführung und einmal nach Abschluss der Testausführung ausgelöst.
Es ist wichtig zu beachten, dass diese Ereignisse standardmäßig ausgelöst werden und nur dann behandelt werden, wenn für diese Hooks Bindungen bereitgestellt werden. Es ist auch nicht zwingend erforderlich, diese Hooks paarweise zu implementieren, und jeder Hook kann unabhängig voneinander existieren.
F # 10) Wie unterscheidet sich ScenarioContext von FeatureContext?
Antworten: Sowohl ScenarioContext als auch FeatureContext sind statische Klassen, die vom Specflow-Framework bereitgestellt werden. Sie sind sehr hilfreich, um Aufgaben wie das Übergeben von Informationen zwischen Bindungen, das Abrufen wichtiger Informationen wie den Ausführungskontext von Feature / Szenario usw. auszuführen.
Mal sehen, wie sich beide unterscheiden:
Wie der Name schon sagt, stellt ScenarioContext Daten oder Informationen auf Szenarioausführungsebene bereit, während FeatureContext Dinge auf Funktionsebene behandelt.
Vereinfacht ausgedrückt steht alles, was in featureContext gespeichert ist, allen in dieser Feature-Datei vorhandenen Szenarien zur Verfügung, während ScenarioContext nur den Bindungen zur Verfügung steht, bis die Ausführung des Szenarios ausgeführt wird.
F # 11) Wie wichtig ist die Reihenfolge, wann und dann?
Antworten: Specflow unterliegt keiner Einschränkung der Reihenfolge von Gegeben, wann und dann . Es geht mehr um die logische Abfolge eines Testszenarios und jede Testpraxis im Allgemeinen, d. H. Wie bei Komponententests folgen wir normalerweise drei A-Werten, für die wir stehen '' Ordnen, handeln und behaupten ”.
Für Specflow-Szenarien gibt es also keine Beschränkung für die Bestellung und es ist auch nicht vorgeschrieben, dass alle drei Abschnitte vorhanden sein müssen.
Manchmal ist das Setup minimalistisch und wird möglicherweise nicht einmal benötigt. Daher können Sie für diese Szenarien einfach das „ Gegeben Blockieren und starten Sie das Szenario mit dem “ Wann ' Block.
F # 12) Was sind ScenarioInfo und FeatureInfo?
Antworten: SpecflowContext und FeatureContext bieten außerdem verschachtelte statische Klassen, nämlich ScenarioInfo und FeatureInfo.
ScenarioInfo bietet Zugriff auf Informationen zu dem Szenario, das gerade ausgeführt wird.
Einige der Dinge, die Sie mit dieser Klasse kennenlernen können, sind unten aufgeführt:
- Titel: Der Titel des Szenarios. Syntax: ScenarioContext.Current.ScenarioInfo.Title
- Stichworte: Liste der Tags in Form von String (). Syntax: ScenarioContext.Current.ScenarioInfo.Tags
S. imilar zu ScenarioInfo, FeatureInfo bietet auch Informationen zu der aktuellen Funktion, die gerade ausgeführt wird.
Neben Titeln und Tags bietet es auch andere nützliche Dinge wie die Zielsprache, für die der Feature-Code hinter der Datei Code generiert, die Sprachdetails, in denen die Feature-Datei geschrieben ist usw.
Die Syntax zum Abrufen von Werten für FeatureInfo bleibt dieselbe wie bei ScenarioInfo wie folgt:
FeatureContext.Current.FeatureInfo
Fragen und Antworten zu fortgeschrittenen SQL-Interviews pdf
F # 13) Unterschied zwischen Szenarioübersicht und Specflow-Tabellen.
Antworten:
ScenarioOutline Dies ist im Grunde eine Möglichkeit, datengesteuerte Szenarien mit Specflow auszuführen, in denen eine Liste der Eingaben in der Datei bereitgestellt wird Beispiele Abschnitt im Szenario, und das Szenario wird je nach Anzahl der bereitgestellten Beispiele jeweils einmal ausgeführt.
Sehen Sie sich unten ein Codebeispiel an, um es besser zu verstehen.
Scenario Outline: Youtube keyword search And I have entered as search keyword When I press the search button Then I should be navigate to search results page Examples: | searchTerm | | India | | America
Tabellen sind nur Mittel zur Bereitstellung von Tabellendaten für jeden Schritt des Szenarios und werden in der Schrittimplementierung als Specflow-Tabellenargument übergeben, das später nach Bedarf auf den gewünschten Objekttyp analysiert werden kann.
Weitere Informationen finden Sie im Abschnitt 'Fett' im folgenden Codebeispiel:
Scenario: Pass data through Specflow tables for StudentInfo object Given I have entered following info for Student | FirstName | LastName | Age | YearOfBirth | | test | student | 20 | 1995 | When I press add Then i student should get added to database and entered info should be displayed on the screen
Ähnlich wie beim Tag-Attribut können Sie alle von ScenarioInfo bereitgestellten Informationen verwenden, um den Ausführungsfluss einer beliebigen Schrittimplementierung zu steuern.
Q # 14) Steuern der Testausführung über ScenarioInfo.
Ähnlich wie bei Bereichsbindungen, mit denen ein zusätzliches Filterkriterium hinzugefügt werden kann, während die Schrittdefinition über Tags abgeglichen wird, können Sie auch die Steuerung der Testausführung mithilfe der mit ScenarioInfo bereitgestellten Informationen nutzen.
Zum Beispiel, Sie haben zwei Szenarien mit Tags, d. H. @ Tag1 und @ tag2, und beide enthalten dieselbe Schrittdefinition. Jetzt müssen Sie abhängig von den Szenario-Tags eine benutzerdefinierte Logik hinzufügen.
Somit können Sie in der Implementierung der Schrittdefinition einfach alle Tags abrufen, die einem Szenario zugeordnet sind ScenarioContext.Current.ScenarioInfo.Tags Überprüfen Sie, ob in dem ausgeführten Szenario ein Tag vorhanden ist, und entscheiden Sie, welchen Code Sie ausführen möchten.
Weitere Informationen finden Sie im folgenden Codebeispiel:
(When(@'I press add')) public void WhenIPressAdd() { String() tags = ScenarioContext.Current.ScenarioInfo.Tags; String expectedTag = 'tag1'; if(tags.Any(s => s == expectedTag)) { // do something } else { // do something else } }
Ähnlich wie beim Tag-Attribut können Sie alle von ScenarioInfo bereitgestellten Informationen verwenden, um den Ausführungsfluss einer beliebigen Schrittimplementierung zu steuern.
F # 15) Wie können Specflow-Tests in einer Art kontinuierlicher Integration ausgeführt werden?
Antworten:
Bei modernen Softwareentwicklungsmethoden ist die kontinuierliche Integration eine Art Schlagwort und wird im Allgemeinen als eine Reihe von Vorgehensweisen bezeichnet, bei denen jedes Commit für den Quellcode als Kandidat für die Produktionsfreigabe betrachtet wird.
Daher löst jedes Commit im Wesentlichen verschiedene Arten von Tests als Qualitätsgatter aus, um sicherzustellen, dass die festgeschriebene Änderung nicht dazu führt, dass Tests fehlschlagen oder abbrechen.
Specflow - Wie wir wissen, lässt es sich sehr gut in bekannte Frameworks wie NUnit und MSUnit integrieren und kann angesichts der DLL des kompilierten Projekts mit Specflow-Funktionen und Schrittimplementierungen problemlos über die Konsolenanwendungen dieser Testframeworks ausgeführt werden.
Um Specflow-Tests zu erreichen, die im Rahmen eines kontinuierlichen Integrations-Setups ausgeführt werden, finden Sie im Folgenden eine Liste von Schritten auf hoher Ebene, die ausgeführt werden können:
# 1) Kompilieren Sie das Projekt mit der Specflow-Funktion und der Schrittdefinition, um eine kompilierte DLL zu erhalten.
#zwei) Verwenden Sie jetzt NUnit- oder MSUnit-Konsolenläufer und stellen Sie die kompilierte DLL als Testquelle bereit (diese Frameworks bieten andere Funktionen sowie Testfilter in Abhängigkeit von Kategorien usw.).
Dieser Schritt kann in die Continuous Integration-Pipeline integriert und über ein Shell- oder DOS-Skript mit dem CI-Tool wie Jenkins oder Bamboo usw. ausgeführt werden.
#3) Nach Abschluss der Testausführung kann der generierte Ausgabebericht (der für den verwendeten Konsolenläufer spezifisch ist) mithilfe von in einen besser lesbaren HTML-Bericht konvertiert werden Specrun Die ausführbare Datei ist als Teil von NugetPackage verfügbar.
Dieser Schritt kann auch über die Befehlszeile ausgeführt werden, die von allen wichtigen Frameworks für die kontinuierliche Integration standardmäßig bereitgestellt wird.
# 4) Sobald der obige Schritt abgeschlossen ist, sind wir mit dem Bericht der ausgeführten Tests und den zusammengefassten Metriken der Testausführungsdetails fertig.
Wir hoffen, Ihnen hat die gesamte Palette der Tutorials in dieser Specflow-Schulungsreihe gefallen. Diese Reihe von Tutorials ist in der Tat der beste Leitfaden für Anfänger oder erfahrene Personen, die ihr Wissen über Specflow erweitern möchten!
PREV Tutorial ODERGehe zurück zu ERSTES Tutorial
Literatur-Empfehlungen
- Interview Fragen und Antworten
- Spock Interview Fragen mit Antworten (am beliebtesten)
- Einige interessante Fragen zu Softwaretests
- 20 beliebtesten Fragen und Antworten zu TestNG-Interviews
- Top 30+ beliebte Fragen und Antworten zu Gurkeninterviews
- Top 50 der beliebtesten Fragen und Antworten zu CCNA-Interviews
- Die 40 beliebtesten Fragen und Antworten zum J2EE-Interview, die Sie lesen sollten
- 25+ Beliebteste Fragen und Antworten zum ADO.NET-Interview