specflow tutorial ultimate guide bdd tool
Ένας πλήρης οδηγός για το Specflow and Behavior Driven Development (BDD) Tutorial:
Τι είναι το Specflow;
Το Specflow είναι ένα πλαίσιο δοκιμών που υποστηρίζει πρακτικές BDD στο πλαίσιο .NET. Είναι ένα πλαίσιο ανοιχτού κώδικα που φιλοξενείται στο GitHub. Βοηθά στη χρήση ATDD (Ανάπτυξη προγράμματος οδήγησης δοκιμής αποδοχής) για εφαρμογές .NET. Με αυτό, μπορούμε να ορίσουμε σενάριο σε απλή αγγλική γλώσσα που ορίζεται από τη γλώσσα Gherkin που είναι σαφώς κατανοητή από οποιονδήποτε.
Υπάρχουν διάφορα εργαλεία για τη συγγραφή δοκιμών στην προσέγγιση BDD, όπως Αγγούρι / JBehave για Java, Μαρούλι για Python, Jasmine για Javascript, Ροή ροής για .NET.
BDD (Behavior Driven Development) είναι ένα σύνολο πρακτικών ή μια προσέγγιση παρόμοια με την TDD (Test Driven Development), η οποία στοχεύει να γεφυρώσει το χάσμα επικοινωνίας μεταξύ διαφορετικών ενδιαφερομένων, όπως Product, Developers και Testers.
Ο τελικός στόχος της προσέγγισης BDD είναι η δημιουργία επιχειρηματικών απαιτήσεων που θα μπορούσαν να γίνουν κατανοητές από ολόκληρη την ομάδα, ώστε να αποφευχθούν παρεξηγήσεις και βοηθά στη μεταφορά της δυνατότητας που αναπτύσσεται με τον πιο αποδεκτό τρόπο.
Μια ολοκληρωμένη σειρά μαθημάτων Specflow:
Διαβάστε το Πλήρης σειρά κατάρτισης Specflow για καλύτερη κατανόηση της έννοιας.
Εκμάθηση # 1: Εισαγωγή στο Specflow BDD Tool (Αυτό το σεμινάριο)
Εκμάθηση # 2: Παράδειγμα Specflow και Selenium
Εκμάθηση # 3: Specflow Binding & Advanced Concepts
Εκμάθηση # 4: Βήμα Argument Transformations & Specflow Tables
Εκμάθηση # 5: Τεκμηρίωση διαβίωσης Specflow με τουρσιά
Εκμάθηση # 6: Δημιουργία αναφορών Specflow
Εκμάθηση # 7: Ερωτήσεις συνέντευξης Specflow
Μια σύντομη επισκόπηση των μαθημάτων στη σειρά Specflow:
Εκμάθηση # | Περιγραφή |
---|---|
7 | Ερωτήσεις συνέντευξης Specflow Μια λίστα με τις πιο δημοφιλείς ερωτήσεις και απαντήσεις στη συνέντευξη Specflow περιλαμβάνονται σε αυτό το σεμινάριο για να μπορείτε να σπάσετε οποιαδήποτε συνέντευξη Specflow με επιτυχία στην πρώτη προσπάθεια. |
ένας | Εισαγωγή στο Specflow BDD Tool (Αυτό το σεμινάριο) Αυτό το εισαγωγικό σεμινάριο θα σας εξηγήσει λεπτομερώς όλα σχετικά με το Specflow. Το Specflow είναι ένα πλαίσιο δοκιμών που υποστηρίζει πρακτικές BDD στο πλαίσιο .NET. Είναι ένα πλαίσιο ανοιχτού κώδικα που φιλοξενείται στο GitHub. Βοηθά στη χρήση ATDD (Ανάπτυξη προγράμματος οδήγησης δοκιμής αποδοχής) για εφαρμογές .NET. |
δύο | Παράδειγμα Specflow και Selenium Αυτό το σεμινάριο θα επικεντρωθεί στην Ενσωμάτωση του Σεληνίου με το πλαίσιο Specflow μέσω ενός απλού σεναρίου δοκιμής αναζήτησης βίντεο στην εφαρμογή Youtube. Θα ελέγξετε επίσης τον τρόπο κοινής χρήσης δεδομένων σε διαφορετικές συνδέσεις μέσω ιδιωτικών πεδίων κλάσης. |
3 | Παράδειγμα Specflow και Selenium Αυτό το σεμινάριο θα επικεντρωθεί στην Ενσωμάτωση του Σεληνίου με το πλαίσιο Specflow μέσω ενός απλού σεναρίου δοκιμής αναζήτησης βίντεο στην εφαρμογή Youtube. Θα ελέγξετε επίσης τον τρόπο κοινής χρήσης δεδομένων σε διαφορετικές συνδέσεις μέσω ιδιωτικών πεδίων κλάσης. |
4 | Βήμα Argument Transformations & Specflow Tables Αυτό το ενημερωτικό σεμινάριο Specflow θα εξηγήσει λεπτομερώς τους μετασχηματισμούς Step Argument που επιτρέπουν προσαρμοσμένες μετατροπές τύπου για ορίσματα Specflow για να αποφευχθεί ο κωδικός boilerplate και οι πίνακες Specflow είναι χρήσιμοι όταν πρέπει να περάσετε σε πολλά πεδία / δεδομένα σε ένα βήμα σε έναν φιλικό προς τον χρήστη πίνακα μορφή. |
5 | Τεκμηρίωση διαβίωσης Specflow με τουρσιά Από αυτό το σεμινάριο Specflow θα μάθετε πώς να δημιουργείτε όμορφα έγγραφα τεκμηρίωσης μέσω ενός πλαισίου ανοιχτού κώδικα που ονομάζεται pickles χρησιμοποιώντας τα υπάρχοντα αρχεία Specflow. |
6 | Δημιουργία αναφορών Specflow Σε αυτό το σεμινάριο Specflow Reporting, θα μάθετε τους τρόπους εκτέλεσης δοκιμών χαρακτηριστικών Specflow μαζί με τη δημιουργία αναφορών HTML μέσω του εκτελέσιμου Specflow. |
Ας ξεκινήσουμε με το πρώτο σεμινάριο αυτής της σειράς.
Τι θα μάθετε:
Εισαγωγή στο Specflow BDD Tool
Παρακολουθήστε το Video Tutorial:
Ακολουθεί ένα βίντεο εκμάθησης σχετικά με την ανάπτυξη βάσει ροής Specflow και Behavior:
Χαρακτηριστικά του BDD
Τα βασικά χαρακτηριστικά του BDD συνοψίζονται παρακάτω:
# 1) Προσπαθεί να καθορίσει τη συμπεριφορά του συστήματος ή της δυνατότητας που αναπτύσσεται μέσω ενός παραδείγματος ή σεναρίου. Για παράδειγμα, εάν δημιουργείτε μια απλή εφαρμογή αριθμομηχανής, τότε οι διαφορετικές συμπεριφορές περιλαμβάνουν προσθήκη, πολλαπλασιασμό, διαίρεση κ.λπ.
Ως εκ τούτου, μέσω του BDD, όλοι οι ενδιαφερόμενοι θα συναντηθούν πρώτα για να αποφασίσουν τη συμπεριφορά της εφαρμογής όπως το Addition και θα έχουν σενάρια όπως φαίνεται παρακάτω.
Given, I have 2 numbers 30 and 50 as input When I add these 2 numbers Then I should get an output of 80
Εάν δείτε την παραπάνω αναπαράσταση, είναι ένα σενάριο στα απλά αγγλικά που είναι σαφώς κατανοητό από οποιονδήποτε και καθιστά σαφείς τις απαιτήσεις για ένα χαρακτηριστικό (σύμφωνα με τα κριτήρια αποδοχής). Ως εκ τούτου, το πρώτο βήμα είναι να αρθρώσουμε αυτές τις απαιτήσεις.
#δύο) Τώρα με ένα σύνολο από αυτά τα σενάρια, το QA γράφει δοκιμές εναντίον αυτών και αυτό αρχικά θα αποτύχει καθώς η δυνατότητα δεν έχει ακόμη αναπτυχθεί.
# 3) Τώρα, ο προγραμματιστής γράφει έναν κωδικό λειτουργίας και εκτελεί ξανά αυτές τις δοκιμές.
# 4) Οι δοκιμές μπορεί να περάσουν ή να αποτύχουν. Εάν αποτύχουν - κωδικοποιητής και επαναλάβετε τη διαδικασία
# 5) Μόλις ολοκληρωθεί η αναδιαμόρφωση κώδικα, θα πρέπει να περάσουν όλα τα σενάρια / δοκιμές.
Ως εκ τούτου, στην ουσία, το BDD χρησιμοποιεί την προσέγγιση TDD και το μεταφέρει στο επόμενο επίπεδο έχοντας κάποιες κοινές εύκολα κατανοητές προδιαγραφές με τη μορφή σεναρίων. Αντιπροσωπεύουν επίσης την τεκμηρίωση χαρακτηριστικών από μόνη της.
Υπάρχουν διάφορα εργαλεία για τη συγγραφή δοκιμών στην προσέγγιση BDD όπως το Αγγούρι / JBehave για Java, το Μαρούλι για Πύθων , Jasmine για Javascript, Ροή ροής για .NET.
καλύτερη αφαίρεση ιών για τα Windows 10
Σε αυτό το σεμινάριο, θα επικεντρωθούμε στο Specflow.
Διαβάστε επίσης => Κορυφαία εργαλεία BDD και πλαίσιο δοκιμών
Οι λέξεις-κλειδιά - Δεδομένα, Πότε & Πότε
Από τον κόσμο των δοκιμών μονάδων, οι περισσότεροι από εμάς γνωρίζουμε τα 3 A, δηλαδή, Arrange, Act και Assert. Τώρα, Δεδομένου, Πότε και Τότε είναι οι αντικαταστάσεις για αυτές στον κόσμο BDD.
Ας πάρουμε ένα Παράδειγμα για την κατανόηση κάθε ενός από αυτά. Ας υποθέσουμε ότι παραθέτετε ένα σενάριο για την επικύρωση ενός προϊόντος που προστίθεται στο καλάθι αγορών μιας εφαρμογής ηλεκτρονικού εμπορίου, το οποίο απαιτεί από εσάς να συνδεθείτε ως προϋπόθεση.
Η προδιαγραφή μπορεί να γραφτεί ως εξής:
Scenario: Products get added to cart for a logged in customer Given I have a logged-in customer on my application When I add 2 quantity of a product to my shopping cart Then the shopping cart should get updated and have the right product and quantity
Δεδομένος :Αυτό χρησιμοποιείται για την περιγραφή ενός συνόλου προϋποθέσεων για το σενάριο που καθορίζεται. Για παράδειγμα, στο παράδειγμα, η προϋπόθεση του σεναρίου είναι ένας συνδεδεμένος πελάτης. Ως εκ τούτου σύγκριση με το Κανονίζω αναλογία σε μια δοκιμή μονάδας, η εφαρμογή βήμα θα πρέπει να διασφαλίσει ότι υπάρχει συνδεδεμένος πελάτης.
Πότε :Αυτό χρησιμοποιείται για να περιγράψει μια ενέργεια ή ένα βήμα εκτέλεσης. Στο παράδειγμα, δείχνει ότι ο πελάτης προσπαθεί να προσθέσει ένα προϊόν στο καλάθι αγορών του. Ως εκ τούτου, η εφαρμογή του βήματος για αυτό το βήμα θα φροντίσει τον κωδικό προσομοίωσης για να προσθέσει ένα προϊόν στο καλάθι. Αυτό μπορεί να συγκριθεί με το υποκρίνομαι βήμα στις δοκιμές μονάδας.
Τότε :Αυτό χρησιμοποιείται για να περιγράψει το αποτέλεσμα του σεναρίου και ουσιαστικά πού πρέπει να τοποθετηθούν οι επικυρώσεις. Μπορεί να συγκριθεί με το Διεκδικώ βήμα στον κόσμο δοκιμών μονάδων. Στο παράδειγμα εδώ, η εφαρμογή του βήματος θα επιβεβαιώσει εάν το προϊόν έχει προστεθεί πραγματικά και η ποσότητα είναι η ίδια με αυτήν που επέλεξε ο πελάτης.
Το αρχείο δυνατοτήτων
Το αρχείο χαρακτηριστικών είναι ουσιαστικά μια ομαδοποίηση πολλαπλών σεναρίων για την εφαρμογή που βρίσκεται υπό ανάπτυξη ή δοκιμή. Μπορεί επίσης να θεωρηθεί απλά ως διαφορετικές ενότητες της εφαρμογής με τις οποίες η εφαρμογή μπορεί να διαχωριστεί λογικά.
Για παράδειγμα:
Μια εφαρμογή ηλεκτρονικού εμπορίου μπορεί να αποφασίσει να έχει διαφορετικά αρχεία λειτουργιών υψηλού επιπέδου όπως:
- Λειτουργία σύνδεσης / αποσύνδεσης
- Καλάθι αγορών
- Πληρωμή κ.λπ.
Τι είναι το Specflow;
Το Specflow είναι ένα εργαλείο που υποστηρίζει πρακτικές BDD στο πλαίσιο .NET. Είναι ένα πλαίσιο ανοιχτού κώδικα που φιλοξενείται στο GitHub. Βοηθά στη χρήση ATDD (Ανάπτυξη προγράμματος οδήγησης δοκιμής αποδοχής) για εφαρμογές .NET.
Η δέσμευση επιχειρηματικών απαιτήσεων για μια εφαρμογή χρησιμοποιώντας το Specification By Παράδειγμα βοηθά στην καλύτερη κατανόηση της συμπεριφοράς της εφαρμογής από όλα τα ενδιαφερόμενα μέρη και ως εκ τούτου οδηγεί στην αποστολή του προϊόντος με σωστές προσδοκίες.
Κάνει χρήση του Αγγουράκι σύνταξη για τη δημιουργία δυνατοτήτων και σεναρίων. Έχει επίσης μια ενεργή συζήτηση / προγραμματιστή δικαστήριο .
Specflow - Ξεκινώντας
Σε αυτήν την ενότητα, θα διερευνήσουμε την εγκατάσταση specflow στο Visual Studio IDE και τη δημιουργία αρχείων χαρακτηριστικών για μια απλή εφαρμογή String Utility.
Σχετικά με την εφαρμογή δείγματος
Θα παρουσιάσουμε διαφορετικά χαρακτηριστικά του πλαισίου Specflow σε αυτό το σεμινάριο χρησιμοποιώντας μια εφαρμογή υπολογισμού που έχει λειτουργίες / διεπαφές για να παρέχει διαφορετικές λειτουργίες όπως:
- Προσθήκη 2 αριθμών.
- Αφαίρεση 2 αριθμών.
- Διαίρεση και πολλαπλασιασμός 2 αριθμών.
- Εύρεση της τετραγωνικής ρίζας του δεδομένου αριθμού.
Ροή ροής Οδηγός εγκατάστασης
Η εγκατάσταση Specflow είναι μια διαδικασία 2 βημάτων
# 1) Εγκατάσταση των απαιτούμενων προσθηκών στο Visual Studio IDE.
- Για να εγκαταστήσετε το πρόσθετο specflow, μεταβείτε στο Εργαλεία -> Επέκταση και ενημερώσεις.
- Τώρα κάντε κλικ στο 'Online' στο αριστερό πλαίσιο.
- Τώρα αναζητήστε specflow στο δεξιό πλαίσιο.
- Από τα αποτελέσματα αναζήτησης επιλέξτε 'Specflow for Visual Studio 2017'.
#δύο) Ρύθμιση του έργου με αρχεία χαρακτηριστικών και ορισμούς βημάτων.
- Δημιουργήστε ένα απλό νέο έργο στο Visual Studio. Μπορούμε να δημιουργήσουμε οποιοδήποτε είδος έργου, όπως το Class Library / Console Application / Unit test project κ.λπ. Για απλότητα, αναλαμβάνουμε ένα πρόγραμμα Βιβλιοθήκης κλάσης. Ονομάστε το έργο ως 'SpecflowBasic'.
- Για να εκτελέσουμε τα σενάρια Specflow που πρόκειται να δημιουργήσουμε, χρειαζόμαστε έναν δοκιμαστικό δρομέα. Το Specflow παρέχει έναν δρομέα εκτός του πλαισίου που ονομάζεται Specflow + Runner (που είναι μια πληρωμένη έκδοση και η δωρεάν έκδοση εισάγει καθυστέρηση).
(Άλλοι δρομείς είναι επίσης διαθέσιμοι για NUnit και MsTest που θα δούμε στα επόμενα άρθρα αυτής της σειράς).
Για να εγκαταστήσετε το Specflow + Runner - Μεταβείτε στα Εργαλεία -> NuGet Package Manager -> Package Manager Console.
Μόλις ανοίξει η Κονσόλα διαχείρισης πακέτων - Εκτελέστε την εντολή.
Install-Package SpecRun.SpecFlow
- Επίσης, για να επιβεβαιώσουμε τις τιμές, θα χρειαζόμαστε τη βοήθεια ενός πλαισίου δοκιμών. Το NUnit μπορεί να είναι μία από τις επιλογές και οι άλλες περιλαμβάνουν MsTest κ.λπ. Για να εγκαταστήσετε το πλαίσιο NUnit στην εφαρμογή, ανοίξτε την Κονσόλα διαχείρισης πακέτων και πληκτρολογήστε την εντολή.
Install-Package NUnit
# 3) Δημιουργήστε μια νέα τάξη με το όνομα 'CalculatorApplication' η οποία θα γίνει η δοκιμαστική εφαρμογή μας. Αυτή είναι μια απλή τάξη που έχει λειτουργίες για την εκτέλεση προσθήκης / πολλαπλασιασμού / διαίρεσης / τετραγωνικής ρίζας κ.λπ., για τη δεδομένη είσοδο. Έτσι φαίνεται η κλάση CalculatorApplication.
# 4) Μόλις εγκατασταθεί το πακέτο, δημιουργήστε 2 φακέλους στο έργο και ονομάστε τους ως χαρακτηριστικά και ορισμούς βημάτων για την αποθήκευση των αρχείων δυνατοτήτων και των δεσμευτικών βημάτων αντίστοιχα. Θα συζητήσουμε λεπτομερώς τον λόγο για αυτόν τον οργανισμό φακέλων για ορισμούς Feature & Step.
# 5) Τώρα στο φάκελο δυνατοτήτων, προσθέστε ένα νέο αρχείο χαρακτηριστικών και ονομάστε το ως CalculatorFeature.
Θα δείτε ότι από προεπιλογή το αρχείο δυνατοτήτων έχει κάποια περιγραφή στο χαρακτηριστικό και το σενάριο.
Αντικαταστήστε το με αυτό που πρόκειται να δοκιμάσουμε.
Feature: CalculatorFeature In order to test my application As a developer I want to validate different operations of the application Scenario: Add two numbers Given I have provided 70 and 20 as the inputs When I press add Then the result should be 90 Scenario: Substract two numbers Given I have provided 70 and 20 as the inputs When I press substract Then the result should be 50 Scenario: Multiply two numbers Given I have provided 70 and 20 as the inputs When I press multiply Then the result should be 1400 Scenario: Divide two numbers Given I have provided 70 and 20 as the inputs When I press divide Then the result should be 3.5 Scenario: SquareRoot of number Given I have provided 70 as input When I press squareroot Then the result should be 8.37
# 6) Δημιουργία ορισμών βημάτων: Το Specflow παρέχει έναν αυτοματοποιημένο τρόπο δημιουργίας συνδέσεων / υλοποίησης για τα διάφορα βήματα σεναρίων αρχείων χαρακτηριστικών. Αυτό μπορεί να επιτευχθεί κάνοντας δεξί κλικ στο αρχείο χαρακτηριστικών και κάνοντας κλικ στο 'Δημιουργία ορισμών βημάτων'.
Αυτό το βήμα δεν εγγυάται την εφαρμογή για όλα τα βήματα, αλλά προσπαθεί να ομαδοποιήσει τα κοινά βήματα σε σενάρια και να χρησιμοποιήσει ξανά όσες συνδέσεις μπορεί. Ωστόσο, κάνει τη δουλειά να αποφεύγει τον κωδικό boilerplate κάθε φορά που πρέπει να εφαρμοστεί ένα βήμα σεναρίου.
Αφού κάνετε κλικ 'Δημιουργία ορισμών βημάτων' , Θα εμφανιστεί ένα παράθυρο με την καταχώριση των προσδιορισμένων βημάτων που έχει εντοπίσει ο επεξεργαστής. Κάποιος μπορεί να επιλέξει ή να αποεπιλέξει σύμφωνα με τις απαιτήσεις.
Στις επόμενες ενότητες, θα εξετάσουμε περισσότερες λεπτομέρειες σχετικά με το αναπτυσσόμενο μενού Στυλ που φαίνεται στο παραπάνω στιγμιότυπο οθόνης.
Προς το παρόν, ας διατηρήσουμε όλα επιλεγμένα με τις προεπιλεγμένες ρυθμίσεις. Κάνοντας κλικ στην προεπισκόπηση θα εμφανιστεί ένα στιγμιότυπο του πώς θα είναι η εφαρμογή.
Μετά τη δημιουργία ορισμών Βημάτων, ακόμα, εάν υπάρχουν κάποια μη εκτελεσμένα βήματα, τα αρχεία λειτουργιών έχουν έναν οπτικό τρόπο αναγνώρισης των εφαρμογών που δεν έχουν υλοποιηθεί. Δείχνει αυτά τα βήματα σε διαφορετικό χρώμα καθιστώντας απολύτως απλό να γνωρίζουμε ότι υπάρχουν ορισμένα βήματα που δεν έχουν ακόμη υλοποιηθεί (ή έχουν διφορούμενους ορισμούς βημάτων).
Ένα δείγμα οθόνης απεικονίζει ότι παρακάτω:
Σημείωση: Οι ορισμοί των Βημάτων μπορούν επίσης να δημιουργηθούν χειροκίνητα - Οποιοδήποτε αρχείο .cs που έχει (Binding) Χαρακτηριστικό είναι μια κλάση υλοποίησης Βήματος και η σύνταξη του Gherkin θα αναζητήσει την αντιστοίχιση της υλοποίησης του δεδομένου βήματος σεναρίου
Εκτέλεση
Όπως έχουμε ήδη προσθέσει το Specflow + Runner στην παραπάνω ενότητα, η εκτέλεση των σεναρίων είναι αρκετά απλή (δεδομένου ότι είναι μια έκδοση αξιολόγησης του Specrun, εισάγει μια μεταβλητή καθυστέρηση 10-20s πριν από την εκτέλεση των σεναρίων., Αυτή η καθυστέρηση δεν υπάρχει για καταχωρημένες παραλλαγές και άλλες γεύσεις του Specrun runner όπως το NUnit και το MsTest).
Εάν έχουν όλα τα βήματα δεν ήταν εφαρμοστεί και εάν εξακολουθούν να υπάρχουν δεσμεύσεις που έχουν εκκρεμή κατάσταση. Στη συνέχεια, η έξοδος θα εμφανίζεται ως εκκρεμότητα.
Ας προσπαθήσουμε να εκτελέσουμε αυτές τις δοκιμές / σενάρια σε αυτό το σημείο όταν δεν υπάρχει εφαρμογή για τις δεσμεύσεις και όλα τα σενάρια εκκρεμούν.
Τώρα ας προσπαθήσουμε να εφαρμόσουμε την κλάση CalculatorApplication με τις μεθόδους που θέλουμε να δοκιμάσουμε, δηλαδή προσθήκη, αφαίρεση, πολλαπλασιασμός, διαίρεση και sqrt.
Δίνεται παρακάτω ένα δείγμα κώδικα για το πώς μοιάζει η τάξη CalculatorApplication:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SpecflowBasic { class CalculatorApplication { public int add(int input1, int input2) { return input1 + input2; } public int subsctract(int input1, int input2) { return input1 - input2; } public int multiply(int input1, int input2) { return input1 * input2; } public double divide(double input1, double input2) { return input2 != 0 ? Math.Round(input1 / input2, 2) : 0; } public double squareRoot(int input1) { return input1 != 0 ? Math.Round(Math.Sqrt(input1), 2) : 0; } } }
Μόλις η εφαρμογή είναι έτοιμη, ας προσπαθήσουμε να βρούμε τους τρόπους εφαρμογής των δεσμεύσεων για καθένα από τα βήματα του σεναρίου.
Ας δούμε τη βήμα προς βήμα προσέγγιση για την εφαρμογή αυτών:
- Πρώτον, πρέπει να έχουμε μια παρουσία της εφαρμογής που πρέπει να δοκιμαστεί. Για απλότητα, μπορούμε να δημιουργήσουμε το AUT (κλάση εφαρμογής υπό δοκιμή) σε δεσμευτικά βήματα και να χρησιμοποιήσουμε το στιγμιότυπο στιγμιότυπο για να καλέσουμε πραγματικά διαφορετικές μεθόδους / λειτουργίες σύμφωνα με το βήμα που εφαρμόζεται.
- Για να συλλάβουμε την είσοδο και την έξοδο, δηλώνουμε μεταβλητές που διατηρούν αυτές τις τιμές προκειμένου να καλούν συναρτήσεις στην παρουσία της εφαρμογής.
Ας δούμε την εφαρμογή από άκρο σε άκρο για όλες τις δεσμεύσεις που εμπλέκονται στην επικύρωση της λειτουργίας Προσθήκη (τα υπόλοιπα σενάρια απλώς επεκτείνουν αυτό).
Το σενάριο Προσθήκη φαίνεται όπως φαίνεται παρακάτω:
Scenario: Add two numbers Given I have provided 70 and 20 as the inputs When I press add Then the result should
Ας δούμε την εφαρμογή των βημάτων για καθένα από αυτά τα μεμονωμένα βήματα. Για χρήση όλων των βημάτων υλοποιήσεων, δηλώνουμε μια παρουσία της Εφαρμογής υπό δοκιμή, καθώς και μεταβλητές για τη διατήρηση μεταβλητών εισόδου και εξόδου όπως φαίνεται παρακάτω:
// instantiating application instance CalculatorApplication app = new CalculatorApplication(); // variables to hold input values and the intermeditate result int input1, input2; double output;
Ας δούμε την εφαρμογή του σεναρίου βήματα ένα προς ένα.
Βήμα 1: Δεδομένου ότι έχω δώσει 70 και 20 όπως και τις εισόδους.
(Given(@'I have provided (.*) and (.*) as the inputs')) public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1) { input1 = p0; input2 = p1; }
Εδώ, μόλις ξεκινήσαμε τις μεταβλητές εισόδου με τις τιμές που μεταφέρθηκαν από τα βήματα του σεναρίου. Τα p0 και p1 είναι οι τιμές που περνούν από το βήμα σεναρίου και θα αρχικοποιηθούν ως 70 & 20 αντίστοιχα.
Βήμα 2: Όταν πατάω προσθήκη.
(When(@'I press add')) public void WhenIPressAdd() { output = app.add(input1, input2); }
Αυτό είναι το βήμα εκτέλεσης (ή πράξη) όπου η πραγματική μέθοδος καλείται στην υπό δοκιμή εφαρμογή. Σημειώστε ότι επειδή οι μεταβλητές εισόδου input1 και input2 περιέχουν ήδη τις τιμές που έχουν περάσει στο Βήμα 1, η παρουσία εφαρμογής μπορεί να καλέσει τη μέθοδο με αυτές τις μεταβλητές.
Βήμα 3: - Τότε το αποτέλεσμα πρέπει να είναι 90.
(Then(@'the result should be (.*)')) public void ThenTheResultShouldBe(double p0) { Assert.AreEqual(p0, output); }
Αυτό είναι το βήμα επικύρωσης (ή Assert) όπου η έξοδος δημιουργείται από τη μέθοδο κλήσης και η παρουσία εφαρμογής επικυρώνεται έναντι της αναμενόμενης εξόδου.
Παρατηρήστε, ότι το Διεκδικώ Η λέξη-κλειδί που χρησιμοποιείται προέρχεται από το NUnit Framework, το οποίο επιστρέφει true ή false ανάλογα με την επικύρωση / προσδοκία που έχει οριστεί. Σε περίπτωση που επιστρέψει ψευδής, θα προκαλέσει την αποτυχία της εφαρμογής Βήμα και αυτό θα δείξει το αποτέλεσμα του σεναρίου ως αποτυχημένο.
διαδικασία διαχείρισης ελαττωμάτων στη δοκιμή λογισμικού
Επίσης, λάβετε υπόψη ότι η μεταβλητή εξόδου λαμβάνει την τιμή από το προηγούμενο βήμα όπου κλήθηκε η πραγματική μέθοδος στην παρουσία της εφαρμογής.
Παρόμοια με τα παραπάνω, οι υλοποιήσεις Βημάτων για τα υπόλοιπα βήματα του σεναρίου εκτελούνται με τον ίδιο τρόπο, η διαφορά έγκειται στην κλήση διαφορετικών μεθόδων στην παρουσία της εφαρμογής και στην επιβεβαίωση διαφορετικών τιμών εξόδου.
Μόλις εφαρμοστούν όλα τα βήματα σεναρίου, οι δοκιμές μπορούν να εκτελεστούν.
Η προκύπτουσα έξοδος θα φαίνεται όπως φαίνεται παρακάτω:
Μπορείτε επίσης να δείτε την έξοδο του μεμονωμένου σεναρίου που παραθέτει επίσης την έξοδο μεμονωμένων βημάτων:
συμπέρασμα
Ελπίζω ότι αυτό το άρθρο θα σας έδινε μια βασική κατανόηση για το τι είναι το BDD και ποια είναι τα εργαλεία που υποστηρίζουν το BDD για το .NET όπου καλύψαμε το Specflow.
Συζητήσαμε επίσης την εγκατάσταση και εκτέλεση αρχείων χαρακτηριστικών Specflow με τη βοήθεια ενός δείγματος εφαρμογής.
Αρχεία κώδικα
Τα αρχεία κώδικα που χρησιμοποιούνται στην εφαρμογή εμφανίζονται παρακάτω:
CalculatorFeatureSteps.cs
using System; using TechTalk.SpecFlow; using NUnit; using NUnit.Framework; namespace SpecflowBasic.StepDefinitions { (Binding) public class CalculatorFeatureSteps { // instantiating application instance CalculatorApplication app = new CalculatorApplication(); // variables to hold input values and the intermeditate result int input1, input2; double output; (Given(@'I have provided (.*) and (.*) as the inputs')) public void GivenIHaveProvidedAndAsTheInputs(int p0, int p1) { input1 = p0; input2 = p1; } (Given(@'I have provided (.*) as input')) public void GivenIHaveProvidedAsInput(int p0) { input1 = p0; } (When(@'I press add')) public void WhenIPressAdd() { output = app.add(input1, input2); } (When(@'I press substract')) public void WhenIPressSubstract() { output = app.subsctract(input1, input2); } (When(@'I press multiply')) public void WhenIPressMultiply() { output = app.multiply(input1, input2); } (When(@'I press divide')) public void WhenIPressDivide() { output = app.divide(input1, input2); } (When(@'I press squareroot')) public void WhenIPressSquareroot() { output = app.squareRoot(input1); } (Then(@'the result should be (.*)')) public void ThenTheResultShouldBe(double p0) { Assert.AreEqual(p0, output); } } }
CalculatorApplication.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SpecflowBasic { class CalculatorApplication { public int add(int input1, int input2) { return input1 + input2; } public int subsctract(int input1, int input2) { return input1 - input2; } public int multiply(int input1, int input2) { return input1 * input2; } public double divide(double input1, double input2) { return input2 != 0 ? Math.Round(input1 / input2, 2) : 0; } public double squareRoot(int input1) { return input1 != 0 ? Math.Round(Math.Sqrt(input1), 2) : 0; } } }
πακέτα.config
Το επερχόμενο σεμινάριό μας θα σας ενημερώσει σχετικά με το παράδειγμα End-End της χρήσης Specflow και Selenium Webdriver!
Συνιστώμενη ανάγνωση
- Εκμάθηση έκλειψης σε βάθος για αρχάριους
- TutLink Tutorial: Ένας οδηγός Layman για TestLink Test Management Tool (Tutorial # 1)
- Tutorial Bugzilla: Εγχειρίδιο Εργαλείου Διαχείρισης Ατελειών
- TestComplete Tutorial: Ένας ολοκληρωμένος οδηγός εργαλείου δοκιμών GUI για αρχάριους
- SeeTest Automation Tutorial: Ένας οδηγός εργαλείου αυτοματισμού δοκιμών για κινητά
- Εκμάθηση δικτύωσης υπολογιστών: Ο απόλυτος οδηγός
- Οδηγός εργαλείων δοκιμής προσβασιμότητας WAVE
- Πλαίσιο BDD (Ανάπτυξη βάσει συμπεριφοράς): Ένα πλήρες σεμινάριο