top 15 popular specflow interview questions
Οι πιο συχνές ερωτήσεις και απαντήσεις συνέντευξης Specflow:
μετατρέψτε το βίντεο youtube σε mp4 δωρεάν online
Το προηγούμενο πρόγραμμα εκμάθησης Specflow ενημερώθηκε σχετικά Πώς να δημιουργήσετε αναφορές δοκιμών και να εκτελέσετε επιλεκτικούς ελέγχους .
Σε αυτό το σεμινάριο, θα ρίξουμε μια ματιά στις πιο δημοφιλείς ερωτήσεις συνέντευξης Specflow μαζί με τις απαντήσεις τους.
Διαβάστε το Πλήρης σειρά κατάρτισης Specflow για εύκολη κατανόηση της έννοιας. Το Specflow είναι ένα εργαλείο που υποστηρίζει πρακτικές BDD στο πλαίσιο .NET. Είναι ένα πλαίσιο ανοιχτού κώδικα που φιλοξενείται στο GitHub. Βοηθά στη χρήση του ATDD (Acceptance Test Driver Development) για το .NET.
Κορυφαίες ερωτήσεις και απαντήσεις για συνέντευξη Specflow
Παρακάτω αναφέρονται οι πιο δημοφιλείς ερωτήσεις συνέντευξης Specflow με απαντήσεις και παραδείγματα για την εύκολη κατανόησή σας.
Ε # 1) Ποια είναι η διαφορά μεταξύ του αρχείου χαρακτηριστικών και των δεσμευτικών αρχείων;
Απάντηση: Η συγγραφή δοκιμών BDD στο Specflow έχει 2 κύρια συστατικά, δηλαδή
- Αρχεία χαρακτηριστικών: Που περιέχουν τις δοκιμές που γράφονται ως σενάρια σε συγκεκριμένη γλώσσα τομέα (DSL) και είναι ουσιαστικά απλά αγγλικά αρχεία που είναι κατάλληλα και κατανοητά για όλους τους ενδιαφερόμενους του έργου. Στην πραγματικότητα, είναι τα πραγματικά αρχεία δοκιμών και ερμηνεύονται μέσω των δεσμεύσεων ή των ορισμών βημάτων.
- Βήματα: Αυτά τα αρχεία κώδικα είναι η πραγματική λογική νοημοσύνης πίσω από την εκτέλεση της δοκιμής. Κάθε βήμα σε ένα σενάριο (το οποίο είναι μέρος του αρχείου δυνατοτήτων) συνδέεται με ένα αρχείο ορισμού βημάτων που εκτελείται στην πραγματικότητα όταν εκτελείται η δοκιμή.
Ως εκ τούτου, ένας συνδυασμός τόσο των αρχείων δυνατοτήτων όσο και του ορισμού του βήματος ή των συνδέσμων καθιστά δυνατή την εκτέλεση των δοκιμών για το πλαίσιο Specflow (ή οποιοδήποτε άλλο BDD).
Q # 2) Τι είναι το BDD και πώς διαφέρει από το TDD ή το ATDD;
Απάντηση: Και οι τρεις αυτοί όροι, δηλαδή οι BDD, TDD και ATDD σχετίζονται κάπως με το Test Driven Development γενικά, αλλά είναι πράγματι διαφορετικοί με πολλούς τρόπους
- TDD: Το TDD δημιουργεί βασικά δοκιμές από την πλευρά του προγραμματιστή. Με απλά λόγια, είναι ένα σύνολο δοκιμών που ένας προγραμματιστής γράφει για να κάνει τον κωδικό του να περάσει (ή να αποτύχει). Είναι ουσιαστικά μια τεχνική για να αποτύχει ο κώδικάς σας έως ότου αντιμετωπιστούν όλες οι συγκεκριμένες απαιτήσεις. Ακολουθεί βασικά έναν κύκλο αντιδραστήρα για τον κωδικό μέχρι οι δοκιμές να είναι όλες πράσινες.
- BDD: Το BDD σχετίζεται στενά με το TDD, αλλά είναι πιο σχετικό από μια προοπτική «έξω-μέσα», πράγμα που σημαίνει ότι οι δοκιμές BDD συνδέονται περισσότερο με τις απαιτήσεις των επιχειρήσεων / προϊόντων και καθορίζουν την επιθυμητή συμπεριφορά του συστήματος με τη μορφή Σενάρια. Το TDD αντιτίθεται σε πιο λεπτομερή επίπεδα δοκιμών μονάδας. Επίσης, οι προδιαγραφές BDD είναι γενικά απλό αγγλικό κείμενο το οποίο είναι εύκολο να κατανοηθεί και επιτρέπει μεγαλύτερη συνεργασία μεταξύ όλων των ενδιαφερομένων του έργου.
- ATDD: Το επίκεντρο της Ανάπτυξης βάσει δοκιμής αποδοχής είναι περισσότερο από την άποψη αποδοχής του χρήστη. Αυτές οι δοκιμές καθορίζουν επίσης τη συμπεριφορά των πελατών, αλλά από την ενσωμάτωση ή την τελική άποψη του προϊόντος, όπου η τελική περίπτωση χρήσης ενός πελάτη μετατρέπεται σε δοκιμαστικό σενάριο και όλες οι εργασίες ανάπτυξης εστιάζονται για να πληρούν αυτές τις απαιτήσεις.
Q # 3) Τι περιέχεται στο αρχείο που δημιουργείται αυτόματα για τη δυνατότητα Specflow;
Απάντηση: Τα αρχεία specflow code-back είναι αυτόματα δημιουργημένα αρχεία με επέκταση '.cs'. Αυτά τα αρχεία έχουν τη δεσμευτική λογική από τα βήματα έως τον πραγματικό ορισμό των βημάτων.
Λίγα σημεία σχετικά με τα αυτόματα δημιουργημένα αρχεία είναι:
- Αυτά τα αρχεία δεν πρέπει να τροποποιηθούν ή να επεξεργαστούν χειροκίνητα. Ακόμα κι αν προσπαθήσετε να το κάνετε, οι αλλαγές δεν αποθηκεύονται.
- Μετά από κάθε αλλαγή στο αρχείο δυνατοτήτων, ο μεταγλωττιστής δημιουργεί ξανά αυτό το αρχείο για τη λήψη ενημερώσεων.
Q # 4) Πώς προσπελάνονται τα δεσμευτικά βήματα σε διαφορετικά αρχεία προέλευσης;
Απάντηση: Τα αρχεία δέσμευσης βημάτων μπορούν να επαναχρησιμοποιηθούν ακόμη και αν υπάρχουν σε ξεχωριστά αρχεία προέλευσης και η αντιστοίχιση δεσμεύσεων συμβαίνει μέσω ενός regex
Τα αρχεία δεσμευτικών βημάτων είναι ουσιαστικά μερικές κλάσεις που αποδίδονται από το (Δεσμευτικός) Χαρακτηριστικό. Αυτό διασφαλίζει ότι όλες οι συνδέσεις βημάτων είναι διαθέσιμες παγκοσμίως και μπορούν να χρησιμοποιηθούν με τα βήματα σεναρίων σε διαφορετικά ή ίδια αρχεία λειτουργιών.
Ε # 5) Πώς μπορούν να επιλυθούν αμφιλεγόμενες υλοποιήσεις δεσμευτικών βημάτων;
Απάντηση: Το Specflow παρέχει έναν μηχανισμό για να αποφευχθεί η διφορούμενη εφαρμογή δεσμευτικών βημάτων χρησιμοποιώντας μια ιδέα που ονομάζεται Πεδίο δεσμεύσεων.
Αυτό είναι χρήσιμο σε σενάρια όπου έχετε παρόμοια βήματα σε Σενάρια σε ίδια ή διαφορετικά αρχεία λειτουργιών και εάν θέλετε να αντιμετωπίζετε και τα δύο Βήματα με διαφορετικό τρόπο.
Σε ένα κανονικό σενάριο, καθώς όλη η αντιστοίχιση βημάτων συμβαίνει μέσω του Regex και είναι μια άπληστη αντιστοίχιση, θα πρέπει να βεβαιωθείτε ότι γράφετε ένα ελαφρώς διαφορετικό κείμενο (έτσι ώστε να μην ταιριάζουν με την ίδια εφαρμογή) για βήματα ακόμα κι αν επηρεάζουν ευανάγνωστο.
Χρησιμοποιώντας Scoped Bindings, μπορείτε να καθορίσετε ετικέτες με συγκεκριμένη εφαρμογή δέσμευσης ή ολόκληρο το αρχείο δέσμευσης και να βεβαιωθείτε ότι η αντιστοίχιση έχει ένα επιπλέον φίλτρο κατηγορίας.
Τα βήματα που πρέπει να ακολουθηθούν παρατίθενται παρακάτω:
προς την) Επισημάνετε το σενάριο με μια κατηγορία χρησιμοποιώντας σύνταξη - @Ετικέτα. Παράδειγμα: Προσθέτουμε το παρακάτω σενάριο με ετικέτα - @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
σι) Τώρα χρησιμοποιήστε την ίδια ετικέτα στη δέσμευση βημάτων που θα διασφαλίσει ότι εκτός από την αντιστοίχιση regex, πραγματοποιείται επίσης η αντιστοίχιση ετικέτας ή κατηγορίας (και διασφαλίζει ότι άλλα βήματα δεν ταιριάζουν με αυτήν την εφαρμογή ακόμη και αν η αντιστοίχιση regex είναι επιτυχής)
Στο παραπάνω παράδειγμα, θέλουμε να περιορίσουμε τη δέσμευση για το βήμα. « Και έχω εισαγάγει την Ινδία ως λέξη-κλειδί αναζήτησης ', Θα προσθέσουμε το χαρακτηριστικό Scope με την παράμετρο Scoping ως ετικέτα.
(Given(@'I have entered (.*) as search keyword'), Scope(Tag ='scopedBinding')) public void GivenIHaveEnteredIndiaAsSearchKeyword(String searchString) { // step binding implementation }
Παρόμοια με το scoping with tag, είναι επίσης δυνατό να υπάρχουν scoped δεσμεύσεις με τίτλους Feature και Scenario.
Ε # 6) Πώς μπορεί να αποθηκευτεί το περιβάλλον δοκιμών ενώ εκτελούνται διαφορετικά σενάρια;
Απάντηση: Το πλαίσιο δοκιμής μπορεί να αποθηκευτεί χρησιμοποιώντας διαφορετικές προσεγγίσεις κατά την εκτέλεση δοκιμών specflow και κάθε προσέγγιση έχει τα πλεονεκτήματα και τα μειονεκτήματά της.
- Χρήση ScenarioContext και FeatureContext: Σκεφτείτε το FeatureContext και το ScenarioContext ως ένα παγκόσμιο λεξικό ζευγών κλειδιού-τιμής και είναι προσβάσιμο κατά τη διάρκεια εκτέλεσης χαρακτηριστικών και εκτέλεσης σεναρίου αντίστοιχα. Το πεδίο τιμών μπορεί να αποθηκεύσει οποιονδήποτε τύπο αντικειμένου και κατά τη διάρκεια της ανάκτησης, πρέπει να μεταφερθεί στο αντικείμενο όπως επιθυμείται.
- Χρήση πεδίων σε δεσμευτικά αρχεία: Αυτή η προσέγγιση επιτρέπει την κοινή χρήση περιεχομένου μεταξύ δεσμευτικών εφαρμογών σε ίδια ή / και διαφορετικά αρχεία δέσμευσης στον ίδιο χώρο ονομάτων. Δεν διαφέρει στη διατήρηση της κατάστασης χρησιμοποιώντας μεταβλητές κλάσης και μπορεί να οριστεί ή να ανακτηθεί σε δεσμευτικές εφαρμογές, όπως απαιτείται.
- Χρησιμοποιώντας το πλαίσιο DI του Specflow: Το Specflow παρέχει ένα πλαίσιο έγχυσης περιβάλλοντος και μπορεί να χρησιμοποιηθεί για να περάσει το περιβάλλον με τη μορφή κλάσεων / αντικειμένων Simple POCO. Τα αντικείμενα περιβάλλοντος / κλάσεις μπορούν να εγχυθούν μέσω πεδίων κατασκευαστή και μπορούν να περάσουν κατά μήκος διαφορετικών αρχείων δέσμευσης Βημάτων.
Δείτε ένα παράδειγμα παρακάτω που έχει 2 αντικείμενα που εγχύονται μέσω έγχυσης κατασκευαστή.
ο καλύτερος τρόπος για να μετατρέψεις τα βίντεο του YouTube σε mp3
(Binding) public class StepImplementationClass { private readonly Context1 _context1; private readonly Context2 _context2; public YoutubeSearchFeatureSteps(Context1 context1, Context2 context2) { _context1 = context1; _context2 = context2; } }
Q # 7) Ποιοι είναι οι περιορισμοί του Specflow ή του BDD γενικά;
Απάντηση: Το BDD, όπως υποδηλώνει το ίδιο το όνομα, καθορίζει τη συμπεριφορά με την εφαρμογή που ουσιαστικά μετατρέπει περιπτώσεις χρήσης σε δοκιμαστικά σενάρια.
Ως εκ τούτου, η απουσία ενδιαφερόμενων μερών όπως μια επιχείρηση, προϊόν ή / και πελάτες ενδέχεται να επηρεάσουν τις πραγματικές προδιαγραφές για τις οποίες οι προγραμματιστές πρόκειται να εφαρμόσουν τεστ γραφής και, ως εκ τούτου, μπορεί να οδηγήσει σε μη παροχή της πραγματικής αξίας για το τι θα μπορούσε να έχει παράσχει και είχε όλα τα ενδιαφερόμενα μέρη ήταν διαθέσιμα κατά τον καθορισμό των σεναρίων.
Τούτου λεχθέντος ότι τις περισσότερες φορές τα πλεονεκτήματα ξεπερνούν τα μειονεκτήματα του BDD και είναι πραγματικά μια πολύ χρήσιμη τεχνική για τη δοκιμή / επικύρωση των προδιαγραφών. Καθώς είναι περισσότερο ή λιγότερο γλωσσικά αγνωστικώς, καθώς υπάρχουν διαθέσιμα πλαίσια BDD για σχεδόν όλες τις κύριες γλώσσες προγραμματισμού όπως το Cucumber για Java, το RSpec για Ruby και το Specflow για το .NET.
Q # 8) Τι είναι οι μετασχηματισμοί Step Argument;
Απάντηση: Οι μετασχηματισμοί επιχειρημάτων όπως υποδηλώνει το όνομα δεν είναι παρά το μετασχηματισμό του βήματος του σεναρίου.
Σκεφτείτε το ως ένα επιπλέον επίπεδο αντιστοίχισης που συμβαίνει πριν από την πραγματική αντιστοίχιση βημάτων και μπορεί να είναι χρήσιμο για τη μετατροπή ενός διαφορετικού είδους εισαγωγής χρήστη αντί να έχετε διαφορετικές υλοποιήσεις μεμονωμένων βημάτων για τον ίδιο τύπο εισαγωγής.
Για οποιοδήποτε βήμα μετασχηματισμού, το απαιτούμενο χαρακτηριστικό είναι StepArgumentTransformation
Για παράδειγμα, ανατρέξτε στο παρακάτω δείγμα κώδικα:
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
Αναφερόμενος στο παραπάνω δείγμα κώδικα, και τα τρία βήματα σχετίζονται. Αλλά, εάν είχε περάσει από τη συνήθη αντιστοίχιση regex, τότε θα πρέπει να γράψετε τρία διαφορετικά βήματα υλοποίησης.
Με τους μετασχηματισμούς ορίσματος Step, είναι δυνατό να μετασχηματίσουμε τις τιμές και να δημιουργήσουμε ένα Χρονική σήμανση αντικείμενο από τις καθορισμένες παραμέτρους και επιστρέψτε στην αρχική εφαρμογή βήματος.
Ας δούμε την εφαρμογή του μετασχηματισμού.
(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 }
Έτσι, εδώ μετατρέπουμε την εισαγωγή σεναρίου σε μια ενδιάμεση τιμή (όπως το TimeStamp) και επιστρέφουμε τη μετασχηματισμένη τιμή στην πραγματική δεσμευτική εφαρμογή όπως φαίνεται στο παρακάτω δείγμα.
(Given(@'I have entered (.*) into the timestamp to minute converter')) public void GivenIHaveEnteredDaysIntoTheTimestampToMinuteConverter(TimeSpan tsTransformed) { // binding implementation }
Παρατηρήστε, πώς η μετασχηματισμένη τιμή του τύπου TimeSpan επιστρέφεται τώρα στην πραγματική μέθοδο εφαρμογής δεσμευτικού βήματος.
Q # 9) Ποιοι είναι οι διαφορετικοί τύποι αγκίστρων που παρέχονται από το Specflow;
Απάντηση:
Το Specflow παρέχει πολλά προσαρμοσμένα άγκιστρα ή ειδικά συμβάντα με τα οποία οι χειριστές συμβάντων (ουσιαστικά μέθοδοι / λειτουργίες) μπορούν να δεσμευτούν να εκτελέσουν κάποια λογική εγκατάστασης / απογύμνωσης.
Το Specflow παρέχει τα ακόλουθα άγκιστρα:
- BeforeFeature / AfterFeature: Το συμβάν που ξεκίνησε πριν και μετά τη λειτουργία ξεκινά και ολοκληρώνει την εκτέλεση αντίστοιχα.
- BeforeScenario / AfterScenario: Το συμβάν που προέκυψε πριν και μετά την εκτέλεση ενός σεναρίου ξεκινά και ολοκληρώνεται αντίστοιχα.
- BeforeScenarioBlock / AfterScenarioBlock: Το συμβάν που προέκυψε πριν και μετά από ένα μπλοκ σεναρίων, δηλαδή όταν κάποιο από τα μπλοκ σεναρίων που ανήκουν στα 'Δεδομένα', 'Πότε' ή 'Τότε' ξεκινά ή ολοκληρώνεται.
- BeforeStep / AfterStep: Το γεγονός ανέκυψε πριν και μετά από κάθε βήμα του σεναρίου.
- BeforeTestRun / AfterTestRun: Αυτό το συμβάν αυξάνεται μόνο μία φορά κατά τη διάρκεια ολόκληρης της δοκιμαστικής εκτέλεσης και μία φορά μετά την ολοκλήρωση της δοκιμαστικής εκτέλεσης.
Είναι σημαντικό να σημειωθεί εδώ ότι αυτά τα συμβάντα προέρχονται από προεπιλογή και αντιμετωπίζονται εάν και μόνο εάν υπάρχουν δεσμεύσεις για αυτά τα άγκιστρα. Επίσης, δεν είναι υποχρεωτικό να εφαρμόζετε αυτά τα άγκιστρα σε ζευγάρια και κάθε άγκιστρο μπορεί να υπάρχει ανεξάρτητα το ένα από το άλλο.
Ε # 10) Πώς διαφέρει το ScenarioContext από το FeatureContext;
Απάντηση: Τόσο το ScenarioContext όσο και το FeatureContext είναι στατικές τάξεις που παρέχονται από το πλαίσιο Specflow και είναι πραγματικά χρήσιμες για την εκτέλεση εργασιών όπως η μεταφορά πληροφοριών μεταξύ συνδέσμων, η λήψη σημαντικών πληροφοριών όπως το πλαίσιο εκτέλεσης του χαρακτηριστικού / σεναρίου κ.λπ.
Ας δούμε πώς διαφέρουν και οι δύο:
Όπως υποδηλώνει το όνομα, το ScenarioContext παρέχει δεδομένα ή πληροφορίες σε επίπεδο εκτέλεσης σεναρίου, ενώ το FeatureContext ασχολείται με πράγματα σε επίπεδο δυνατότητας.
Με απλοϊκούς όρους, οτιδήποτε αποθηκεύεται στο featureContext θα είναι διαθέσιμο σε όλα τα σενάρια που υπάρχουν σε αυτό το αρχείο χαρακτηριστικών, ενώ το ScenarioContext θα είναι διαθέσιμο μόνο για τις δεσμεύσεις έως ότου η εκτέλεση του σεναρίου είναι σε εξέλιξη.
Ε # 11) Πόσο σημαντική είναι η σειρά του δεδομένου, πότε και τότε;
Απάντηση: Το Specflow δεν επιβάλλει περιορισμούς στη σειρά του Δεδομένα, Πότε και Πότε . Πρόκειται περισσότερο για τη λογική αλληλουχία ενός σεναρίου δοκιμής και για οποιαδήποτε πρακτική δοκιμών γενικά, όπως για παράδειγμα σε δοκιμές μονάδας, ακολουθούμε συνήθως το νόημα τριών Α ' Τακτοποιήστε, ενεργήστε και διεκδικήστε '.
Έτσι, για τα σενάρια specflow, δεν υπάρχει κανένας περιορισμός στην παραγγελία και επίσης δεν απαιτεί να υπάρχουν και τα τρία τμήματα.
Συχνά κατά καιρούς, η εγκατάσταση μπορεί να είναι μινιμαλιστική και μπορεί να μην χρειάζεται καν. Ως εκ τούτου, για αυτά τα σενάρια, μπορείτε απλά να παραλείψετε το ' Δεδομένος 'Αποκλεισμός και έναρξη του σεναρίου με το' Πότε ' ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ.
Ε # 12) Τι είναι το ScenarioInfo και το FeatureInfo;
Απάντηση: Το SpecflowContext και το FeatureContext παρέχουν περαιτέρω ένθετες στατικές τάξεις, συγκεκριμένα το ScenarioInfo και το FeatureInfo.
Το ScenarioInfo παρέχει πρόσβαση σε πληροφορίες γύρω από το σενάριο που εκτελείται αυτήν τη στιγμή.
Μερικά από τα πράγματα που μπορείτε να μάθετε με αυτήν την τάξη δίνονται παρακάτω:
- Τίτλος: Ο τίτλος του σεναρίου. Σύνταξη: ScenarioContext.Current.ScenarioInfo.Title
- Ετικέτες: Λίστα ετικετών με τη μορφή Σειρά(). Σύνταξη: ScenarioContext.Current.ScenarioInfo.Tags
μικρό παρόμοια με ScenarioInfo, FeatureInfo παρέχει επίσης πληροφορίες σχετικά με την τρέχουσα δυνατότητα που εκτελείται αυτήν τη στιγμή.
Εκτός από τον τίτλο και τις ετικέτες, παρέχει επίσης άλλα χρήσιμα πράγματα, όπως ποια είναι η Γλώσσα στόχος για την οποία ο κώδικας χαρακτηριστικών πίσω από το αρχείο δημιουργεί κώδικα, οι λεπτομέρειες γλώσσας στην οποία γράφεται το Αρχείο δυνατοτήτων κ.λπ.
Η σύνταξη για τη λήψη τιμών για το FeatureInfo παραμένει η ίδια με το ScenarioInfo όπως παρακάτω:
FeatureContext.Current.FeatureInfo
Ε # 13) Διαφορά μεταξύ του πίνακα σεναρίων και των πινάκων Specflow.
Απάντηση:
ΣενάριοOutline είναι βασικά ένας τρόπος εκτέλεσης σεναρίων βάσει δεδομένων χρησιμοποιώντας το Specflow όπου παρέχεται μια λίστα εισόδων στο Παραδείγματα ενότητα στο σενάριο και το σενάριο εκτελείται μία φορά ανάλογα με τον αριθμό των παραδειγμάτων που παρέχονται.
Δείτε παρακάτω ένα δείγμα κώδικα για να το κατανοήσετε πιο καθαρά.
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
Οι πίνακες είναι απλώς μέσα για την παροχή δεδομένων σε πίνακα με οποιοδήποτε βήμα του σεναρίου και μεταβιβάζεται ως όρισμα πίνακα Specflow στην εφαρμογή του βήματος το οποίο μπορεί αργότερα να αναλυθεί στον επιθυμητό τύπο αντικειμένου όπως απαιτείται.
Ανατρέξτε στην ενότητα 'τολμηρή' στο παρακάτω δείγμα κώδικα για περισσότερες λεπτομέρειες:
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
Παρόμοιο με το χαρακτηριστικό Tags - μπορείτε να χρησιμοποιήσετε οποιαδήποτε πληροφορία παρέχεται από το ScenarioInfo για να ελέγξετε τη ροή εκτέλεσης οποιασδήποτε εφαρμογής.
Ε # 14 Έλεγχος εκτέλεσης δοκιμής μέσω του ScenarioInfo.
Παρόμοια με τα δεσμευτικά πεδία, τα οποία μπορούν να επιτρέψουν την προσθήκη ενός επιπλέον κριτηρίου φίλτρου ενώ ταιριάζουν με τον ορισμό του βήματος μέσω των ετικετών, μπορείτε επίσης να αξιοποιήσετε τον έλεγχο της εκτέλεσης δοκιμής μέσω των πληροφοριών που παρέχονται με το ScenarioInfo.
Για παράδειγμα, Έχετε 2 σενάρια με ετικέτες, δηλαδή @ tag1 και @ tag2 και και τα δύο περιέχουν τον ίδιο ορισμό βημάτων. Τώρα πρέπει να προσθέσετε προσαρμοσμένη λογική ανάλογα με τις ετικέτες σεναρίου.
εφαρμογή πίνακα κατακερματισμού c ++
Έτσι, στην εφαρμογή ορισμού βημάτων, μπορείτε απλά να λάβετε όλες τις ετικέτες που σχετίζονται με ένα σενάριο χρησιμοποιώντας ScenarioContext.Current.ScenarioInfo.Tags και ελέγξτε για την παρουσία μιας ετικέτας στο σενάριο που εκτελείται και αποφασίστε ποιον κώδικα θέλετε να εκτελέσετε.
Ανατρέξτε στο παρακάτω δείγμα κώδικα για καλύτερη κατανόηση:
(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 } }
Παρόμοιο με το χαρακτηριστικό Tags - μπορείτε να χρησιμοποιήσετε οποιαδήποτε πληροφορία παρέχεται από το ScenarioInfo για να ελέγξετε τη ροή εκτέλεσης οποιασδήποτε εφαρμογής.
Ε # 15) Πώς μπορούν να εκτελεστούν οι δοκιμές Specflow σε ένα είδος συνεχούς ενοποίησης;
Απάντηση:
Με τις σύγχρονες μεθοδολογίες ανάπτυξης λογισμικού, η συνεχής ενσωμάτωση είναι ένα είδος λέξης-κλειδιού και γενικά αναφέρεται ως ένα σύνολο πρακτικών, όπου κάθε δέσμευση στον πηγαίο κώδικα θεωρείται υποψήφια για κυκλοφορία παραγωγής.
Ως εκ τούτου, κάθε δέσμευση ενεργοποιεί ουσιαστικά διαφορετικούς τύπους δοκιμών ως πύλες ποιότητας για να διασφαλίσει ότι η αλλαγή που πραγματοποιείται δεν προκαλεί αποτυχία ή διακοπή των δοκιμών.
Specflow - όπως γνωρίζουμε, ενσωματώνεται πολύ καλά με γνωστά πλαίσια όπως το NUnit και το MSUnit και μπορεί να εκτελεστεί εύκολα μέσω των εφαρμογών κονσόλας αυτών των δοκιμαστικών πλαισίων, δεδομένου του DLL του μεταγλωττισμένου έργου που έχει χαρακτηριστικά Specflow και υλοποιήσεις βήμα.
Ως εκ τούτου, προκειμένου να επιτευχθούν οι δοκιμές Specflow που εκτελούνται ως μέρος μιας συνεχούς εγκατάστασης ενοποίησης, ακολουθεί μια λίστα βημάτων υψηλού επιπέδου που μπορούν να ακολουθηθούν:
# 1) Μεταγλωττίστε το έργο που περιέχει τη δυνατότητα Specflow και τον ορισμό βημάτων για να λάβετε ένα μεταγλωττισμένο DLL.
#δύο) Τώρα χρησιμοποιήστε NUnit ή MSUnit δρομείς κονσόλας και δώστε το μεταγλωττισμένο DLL ως πηγή δοκιμής (Αυτά τα πλαίσια παρέχουν άλλες δυνατότητες καθώς και παρέχουν φίλτρα δοκιμής ανάλογα με τις κατηγορίες κ.λπ.).
Αυτό το βήμα μπορεί να ενσωματωθεί στον αγωγό συνεχούς ολοκλήρωσης και μπορεί να εκτελεστεί μέσω κελύφους ή σεναρίου DOS με το εργαλείο CI όπως Jenkins ή Bamboo κ.λπ.
# 3) Μόλις ολοκληρωθεί η εκτέλεση της δοκιμής, η παραγόμενη αναφορά εξόδου (η οποία είναι συγκεκριμένη για τον δρομέα της κονσόλας που χρησιμοποιείται), μπορεί να μετατραπεί σε μια πιο ευανάγνωστη αναφορά HTML χρησιμοποιώντας Συμπληρώστε εκτελέσιμο είναι διαθέσιμο ως μέρος του NugetPackage.
Αυτό το βήμα μπορεί επίσης να εκτελεστεί μέσω της γραμμής εντολών που παρέχεται έξω από το κουτί από όλα τα μεγάλα πλαίσια συνεχούς ολοκλήρωσης.
# 4) Μόλις ολοκληρωθεί το παραπάνω βήμα, είμαστε έτοιμοι με την αναφορά των εκτελεσθέντων δοκιμών και συνοπτικές μετρήσεις των λεπτομερειών εκτέλεσης της δοκιμής.
Ελπίζουμε να απολαύσατε ολόκληρο το φάσμα των σεμιναρίων σε αυτήν την εκπαιδευτική σειρά Specflow. Αυτή η σειρά μαθημάτων θα ήταν πράγματι ο καλύτερος οδηγός για κάθε αρχάριο ή έμπειρο άτομο που θέλει να εμπλουτίσει τις γνώσεις του στο Specflow!
Εκπαιδευτικό πρόγραμμα PREV ΉΕπιστροφή στο The Πρώτο σεμινάριο
Συνιστώμενη ανάγνωση
- Ερωτήσεις και απαντήσεις συνέντευξης
- Ερωτήσεις συνέντευξης Spock με απαντήσεις (πιο δημοφιλείς)
- Μερικές ενδιαφέρουσες ερωτήσεις συνέντευξης δοκιμής λογισμικού
- 20 πιο δημοφιλείς ερωτήσεις και απαντήσεις στη συνέντευξη TestNG
- Κορυφαίες 30+ δημοφιλείς ερωτήσεις και απαντήσεις συνέντευξης αγγουριών
- Κορυφαίες 50 πιο δημοφιλείς ερωτήσεις και απαντήσεις συνέντευξης CCNA
- Κορυφαίες 40 δημοφιλείς ερωτήσεις και απαντήσεις συνέντευξης J2EE που πρέπει να διαβάσετε
- 25+ πιο δημοφιλείς ερωτήσεις και απαντήσεις συνέντευξης ADO.NET