rest api testing with cucumber using bdd approach
Αυτό το σεμινάριο εξηγεί τη δοκιμή API REST με αγγούρι χρησιμοποιώντας προσέγγιση BDD. Καλύπτει την εγκατάσταση λογισμικού, την εγκατάσταση έργου, την εκτέλεση δοκιμών και τις αναφορές.
Σε αυτό το άρθρο, θα δούμε πώς να ξεκινήσετε με το REST API Testing σε στυλ BDD με το Cucumber framework.
Πριν βυθιστείτε βαθιά στο θέμα, ας κατανοήσουμε τις σημαντικές έννοιες που εμπλέκονται σε αυτό.
Ας αρχίσουμε!!
Τι θα μάθετε:
- Σημαντικές έννοιες στο REST API
- Πώς λειτουργεί το αγγούρι;
- Ρύθμιση πλαισίου δοκιμής αγγουριού στα Windows
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Σημαντικές έννοιες στο REST API
ΥΠΟΛΟΙΠΟ
Αυτό είναι ένα αρχιτεκτονικό στυλ λογισμικού. Η πλήρης μορφή του Το REST είναι αντιπροσωπευτική μεταφορά κράτους . Ορίζει ένα σύνολο περιορισμών που πρέπει να χρησιμοποιούνται για τη δημιουργία υπηρεσιών Web. Οι υπηρεσίες Ιστού που συμμορφώνονται με το αρχιτεκτονικό στυλ REST ονομάζονται υπηρεσίες ιστού RESTful.
Δοκιμή REST API
Η δοκιμή REST API δοκιμάζει το API χρησιμοποιώντας 4 κύριες μεθόδους, δηλαδή POST, GET, PUT και DELETE.
Πρότυπο REST
Το RestTemplate είναι μια κλάση πλαισίου ελατηρίου ανοιχτού κώδικα που παρέχει έναν βολικό τρόπο για να δοκιμάσετε τις ξεκούραστες υπηρεσίες ιστού που βασίζονται σε HTTP παρέχοντας υπερφορτωμένες μεθόδους για τις μεθόδους HTTP.
Σημείωση : Για να μάθετε περισσότερα σχετικά με το REST API Testing concept, μπορείτε να ανατρέξετε στο προηγούμενο σεμινάριό μας » Δοκιμή REST API με Spring RestTemplate και TestNG «Όπου έχουμε καλύψει τον τρόπο εκτέλεσης της δοκιμής REST API χειροκίνητα μαζί με την ιδέα του JSON.
BDD
Το BDD είναι η προσέγγιση ανάπτυξης βάσει συμπεριφοράς. Αυτή είναι μια από τις τεχνικές ανάπτυξης λογισμικού που προέκυψε από το Test-Driven Development, δηλαδή το στυλ TDD.
Η αρχή της δοκιμής BDD είναι ότι οι δοκιμαστικές θήκες γράφονται σε μια φυσική γλώσσα που είναι εύκολα αναγνώσιμη και από τους μη προγραμματιστές.
Αγγούρι
Το αγγούρι είναι ένα εργαλείο που υποστηρίζει την ανάπτυξη βάσει συμπεριφοράς
Πώς λειτουργεί το αγγούρι;
Ας δούμε πώς λειτουργεί το Αγγούρι.
Το αγγούρι αποτελείται από Feature Files, Step Definition Files και Runner class.
Αρχεία δυνατοτήτων
Τα αρχεία δυνατοτήτων γράφονται από τον Αναλυτή της επιχείρησής σας ή ίσως από τον Χορηγό σας. Αυτά είναι γραμμένα σε μορφή φυσικής γλώσσας με προδιαγραφές που περιγράφονται σε αυτήν και επικυρώνουν ότι η εφαρμογή λειτουργεί σύμφωνα με τις προδιαγραφές.
Αυτές οι προδιαγραφές έχουν πολλά σενάρια ή παραδείγματα που αναφέρονται σε αυτό. Κάθε σενάριο είναι μια λίστα ορισμένων βημάτων για την επεξεργασία του Αγγουριού.
Ας εξετάσουμε ένα σενάριο όπου ο χρήστης θέλει να συνδεθεί στο σύστημα.
Για να επαληθεύσετε εάν αυτό λειτουργεί σύμφωνα με τις προδιαγραφές, αυτό το σενάριο πρέπει να περιγραφεί. Εδώ είναι τα βήματα που πρέπει να εκτελεστούν μαζί με το επιθυμητό αποτέλεσμα σύμφωνα με τις προδιαγραφές.
Ακριβώς για να πάρετε μια ιδέα, έτσι θα μοιάζει ένα δείγμα σεναρίου:
Scenario: Login to the system Given User launches Login screen When User enters username, password and submit Then Login Successful message appears
Μπορείτε να δείτε, κάθε σενάριο είναι ένα είδος λίστας των βημάτων για να δουλέψει το Αγγούρι. Για να κατανοήσει το αγγούρι τα σενάρια, πρέπει να ακολουθήσει μερικούς βασικούς κανόνες σύνταξης, που ονομάζονται Αγγουράκι .
Αρχεία ορισμού βημάτων
Τα αρχεία ορισμών βημάτων αντιστοιχούν κάθε βήμα του Gherkin που αναφέρεται σε ένα αρχείο δυνατοτήτων στον κώδικα εφαρμογής. Αυτό επιτρέπει στο Αγγούρι να εκτελέσει την ενέργεια που απαιτείται να εκτελεστεί από το βήμα.
Το Cucumber framework υποστηρίζει πολλές γλώσσες προγραμματισμού για τη σύνταξη ορισμών Βημάτων όπως Java, .net και Ruby.
Σημείωση : Στο άρθρο « Δοκιμή REST API με Spring RestTemplate και TestNG ', Έχουμε αναπτύξει το δοκιμαστικό έργο TestNG με το πρότυπο Spring.
Τώρα, θα αναπτύξουμε το Test Framework για την ίδια υπηρεσία REST και RestTemplate, αλλά χρησιμοποιώντας το Cucumber για στυλ δοκιμής ανάπτυξης βάσει συμπεριφοράς.
Ας ξεκινήσουμε με τη ρύθμιση του πλαισίου δοκιμών αυτοματοποίησης με το Αγγούρι!
Ρύθμιση πλαισίου δοκιμής αγγουριού στα Windows
# 1) Εγκατάσταση
(Εγώ) Θα χρησιμοποιήσουμε το Java για την ανάπτυξη ορισμών βημάτων. Λοιπόν, Πρώτη λήψη του προγράμματος εγκατάστασης JDK για παράθυρα από Μαντείο και εγκαταστήστε το Java στον υπολογιστή σας.
(ii) IDE (Ολοκληρωμένο Περιβάλλον Ανάπτυξης) : Έχω χρησιμοποιήσει το Eclipse ως IDE για την ανάπτυξη του Automation Test Suite. Μπορείτε να το κατεβάσετε από Εκλειψη
(iii) Λήψη Eclipse Plug-in για Αγγούρι:
Ακολουθήστε αυτά τα βήματα στο Eclipse:
- Επιλέξτε Βοήθεια -> Εγκατάσταση νέου λογισμικού από την επιλογή μενού.
- Εισαγω «Αγγούρι έκλειψη» στο πλαίσιο κειμένου αναζήτησης.
- Κάνε κλικ στο Εγκαθιστώ κουμπί.
Εγκατάσταση προσθήκης αγγουριού στο Eclipse
πώς να προγραμματίσετε έναν υπολογιστή για αρχάριους
- Συνεχίστε να κάνετε κλικ στο κουμπί Επόμενο μέχρι να φτάσετε στο Αναθεώρηση άδειας οθόνη.
Τέλος, κάντε κλικ στο πλαίσιο ελέγχου για αποδοχή της άδειας χρήσης και κάντε κλικ στο Φινίρισμα κουμπί. Αυτό θα ολοκληρώσει την εγκατάσταση. Τώρα, κάντε επανεκκίνηση του Eclipse IDE. Αυτό απαιτείται για να εφαρμοστεί η εγκατάσταση προσθηκών.
(iv) Βάζα με ελατήρια: Καθώς πρόκειται να χρησιμοποιήσουμε την κατηγορία RestTemplate που ανήκει στο πλαίσιο ελατηρίου, πρέπει να έχετε βάζα ελατηρίου. Μπορείτε να κατεβάσετε βάζα με ελατήρια από το Άνοιξη πλαίσιο και να το αποθηκεύσετε στον τοπικό φάκελο. Για παράδειγμα, C: / projectJar
(v) Απλά βάζα JSON: Πρέπει να εκτελέσουμε την ανάλυση JSON. Ως εκ τούτου, θα χρησιμοποιήσουμε ένα ελαφρύ API JSON-απλό. Λοιπόν, κατεβάστε το JSON-simple-1.1.jar και αποθηκεύστε το στο C: / projectJar
(vi) Βάζα αγγουριού:
Θα χρειαστείτε τα ακόλουθα βάζα αγγουριού, για να εκτελέσετε το έργο Cucumber:
- αγγούρι-πυρήνας
- αγγούρι-java
- αγγούρι-JUnit
- αγγούρι-JVM-deps
- αναφορά αγγουριών
- αγγουράκι
- JUnit
- mockito-all
- κάλυψη
- cucumber-HTML (Για αναφορές σε html)
Μπορείτε να κατεβάσετε αυτά τα αρχεία χρησιμοποιώντας το αρχείο pom.xml. Όμως, ο απλούστερος τρόπος είναι να κατεβάσετε αυτά τα αρχεία βάζων από το Κεντρικό αποθετήριο και αποθηκεύστε αυτά τα αρχεία βάζων στον τοπικό φάκελο, Για παράδειγμα, C: / projectJar
Τώρα, με αυτό, έχουμε ολοκληρώσει όλες τις απαραίτητες εγκαταστάσεις. Ας δημιουργήσουμε λοιπόν το έργο αυτοματοποίησης δοκιμών BDD.
# 2) Ρύθμιση έργου
- Δημιουργία αρχείου -> Νέο -> Java Project -> Ονομάστε το ως ' CRUD_ Αγγούρι ».
- Τώρα, Δημιουργήστε ένα νέο πακέτο Java διαδήλωση.
- Ρύθμιση παραμέτρων BuildPath του έργου:
- Όπως είδατε στην προηγούμενη ενότητα, έχουμε εγκαταστήσει το Cucumber plug-in, download spring και JSON-simple βάζα. Λοιπόν, ήρθε η ώρα να προσθέσετε διαδρομή δημιουργίας στο έργο μας για να τα καταναλώσετε. Για αυτό, δημιουργήστε ένα lib φάκελο στο Φάκελος CRUD_Cucumber και τώρα αντιγράψτε όλα τα βάζα από το C: / projectJar στο lib / Αγγούρι, lib / Άνοιξη ντοσιέ.
- Κάντε δεξί κλικ στο ' CRUD_ Αγγούρι » -> Διαδρομή κατασκευής -> Διαμόρφωση διαδρομής δημιουργίας.
- Κάνε κλικ στο Βιβλιοθήκες αυτί.
- Κάντε κλικ στο Προσθέστε βάζα κουμπί-> Επιλέξτε όλα τα βάζα από το lib / Αγγούρι φάκελο και lib / Άνοιξη ντοσιέ. Αυτό θα προσθέσει όλα τα βάζα αγγουριού, τα βάζα με ελατήρια και το απλό βάζο JSON στη διαδρομή κατασκευής του έργου σας.
Η δομή του έργου σας θα εμφανίζεται ως εξής στον Eclipse Package Explorer.
Δομή πακέτου έργου δοκιμής
# 3) Αρχείο χαρακτηριστικών
Τώρα, ας δημιουργήσουμε το αρχείο χαρακτηριστικών μας DemoFeature.feature Έχοντας το χαρακτηριστικό ως Εκτέλεση λειτουργιών CRUD στην υπηρεσία υπαλλήλων.
Στο παράδειγμά μας, έχω χρησιμοποιήσει ένα εικονικό http://dummy.restapiexample.com/api δείγμα REST Service.
Αυτό το αρχείο δυνατοτήτων περιγράφει τα σενάρια για την εκτέλεση των λειτουργιών CRUD, δηλαδή για την κάλυψη του CRUD (Δημιουργία-Ανάγνωση-Ενημέρωση-Διαγραφή).
- Ας καθορίσουμε πρώτα το χαρακτηριστικό, στην περίπτωσή μας, είναι οι μέθοδοι Testing CRUD, οι οποίες μπορούν να περιγραφούν ως εξής.
Feature: Test CRUD methods in Sample Employee REST API testing
- Τώρα, αυτό έχει διαφορετικά σενάρια όπως Δημιουργία, Ενημέρωση, Ανάγνωση και Διαγραφή της εγγραφής υπαλλήλου. Ρίξτε μια ματιά στο σενάριο POST:
Scenario: Add Employee record
- Περιγράψτε την προϋπόθεση για τη δοκιμή που καθορίζει τη διεύθυνση URL της υπηρεσίας υπαλλήλων.
Given I Set POST employee service api endpoint
- Καθορίστε το πραγματικό βήμα δοκιμής της αποστολής ενός αιτήματος δημοσίευσης.
When I Set request HEADER And Send a POST HTTP request
- Τώρα, περιγράψτε την επαλήθευση του σώματος απόκρισης.
Then I receive valid Response
Έτσι, στο αρχείο χαρακτηριστικών μας, το σενάριο θα έχει ως εξής:
Scenario: Add Employee record Given I Set POST employee service api endpoint When I Set request HEADER And Send a POST HTTP request Then I receive valid Response
Ομοίως, μπορείτε να γράψετε τα υπόλοιπα σενάρια όπως φαίνεται παρακάτω.
DemoFeature.feature
# 4) Εφαρμογή ορισμού βημάτων
Για βήματα χαρακτηριστικών που χρησιμοποιούνται στα παραπάνω σενάρια, πρέπει να γράψετε υλοποιήσεις μέσω προγραμματισμού, σε αυτήν την περίπτωση, είναι Java.
Ο ορισμός βημάτων είναι μια μέθοδος γραμμένη σε Java με έκφραση. Συνδέει τη μέθοδο με ένα ή περισσότερα βήματα. Έτσι, όταν το Cucumber εκτελεί τα βήματα που περιγράφονται σε ένα σενάριο του αρχείου δυνατοτήτων, αναζητά πρώτα ένα ταίριασμα ορισμός βημάτων να εκτελέσει.
Για παράδειγμα, όταν ο ορισμός βημάτων για Προσθήκη υπαλλήλου που χρησιμοποιεί POST μπορεί να γραφτεί ως εξής.
Για δεδομένο βήμα, η εφαρμογή γράφεται ως εξής:
@Given('^I Set POST employee service api endpoint$') public void setPostEndpoint(){ addURI = 'http://dummy.restapiexample.com/api/v1/create'; System.out.println('Add URL :'+addURI); }
Ομοίως, για το βήμα When, ακολουθεί η μέθοδος ορισμού:
@When ('^Send a POST HTTP request$') public void sendPostRequest(){ doublename_id = Math.random(); emp_name = 'zozo_'+name_id;//Just to avoid Duplicate Name entry String jsonBody'{'name':''+emp_name+'','salary':'123','age':'23'}'; System.out.println('
' + jsonBody); HttpEntityentity = new HttpEntity(jsonBody, headers); //POST Method to Add New Employee restTemplate = newRestTemplate (); response = restTemplate.postForEntity(addURI, entity, String.class); }
Τώρα, ακολουθεί το μέρος του βήματος επαλήθευσης, δηλαδή η εφαρμογή Τότε βήμα:
@Then ('^I receive valid Response$') Public void verifyPostResponse(){ responseBodyPOST = response.getBody(); // Write response to file responseBody = response.getBody().toString(); System.out.println('responseBody --->' + responseBody); // Get ID from the Response object employeeId = getEmpIdFromResponse(responseBody); System.out.println('empId is :' + employeeId); // Check if the added Employee is present in the response body. Assert.hasText(responseBody,employeeId); // Check if the status code is 201 Assert.isTrue(response.getStatusCode()==HttpStatus.OK); System.out.println('Employee is Added successfully employeeId:'+employeeId); }
Σημείωση: Εδώ, χρησιμοποιούμε τη μέθοδο RestTemplate για αποστολή αιτήματος. Αυτό είναι ίδιο με τη μέθοδο που χρησιμοποιείται στο « Δοκιμή REST API με Spring RestTemplate και TestNG ' . Για να μάθετε περισσότερα σχετικά με τις μεθόδους Rest Template, μπορείτε να ανατρέξετε στο σεμινάριο.
Έτσι, ο ορισμός των βημάτων σας θα έχει ως εξής.
StepDefinition.java
Μπορείτε να εφαρμόσετε τους ορισμούς βημάτων για τα υπόλοιπα σενάρια Ενημέρωση, ανάγνωση και διαγραφή υπαλλήλου με τον ίδιο τρόπο.
# 5) Εκτέλεση των δοκιμών
Τώρα, ολοκληρώσαμε το σενάριο και το βήμα ανάπτυξης σεναρίου, οπότε ας κάνουμε τις δοκιμές μας. Για αυτό, πρέπει να γράψουμε μια τάξη δρομέων JUnit.
publicclassRunner { }
Εδώ, πρέπει να προσθέσετε τους ακόλουθους σχολιασμούς πάνω από το όνομα της τάξης:
@RunWith (Cucumber.class): Για να τρέξετε ως δοκιμαστική τάξη για το Αγγούρι.
@CucumberOptions: Εδώ καθορίζετε τη θέση του αρχείου δυνατοτήτων και τη θέση αρχείου ορισμού βημάτων για το πλαίσιο Cucumber που θα εξετάσει κατά την εκτέλεση.
features='' glue=''
Συνδέω: Αυτό χρησιμοποιείται για τον καθορισμό διαφορετικών επιλογών μορφοποίησης για την αναφορά που δημιουργείται ως έξοδος.
Ως εκ τούτου, η τάξη των δρομέων σας θα μοιάζει με αυτό.
TestRunner.java
Απλώς κάντε δεξί κλικ στο TestRunner.java και ορίστε την επιλογή « Εκτέλεση ως δοκιμή JUnit » . Αυτό θα εμφανίσει το αποτέλεσμα εκτέλεσης δοκιμής ως εξής.
Έξοδος καρτέλας Junit
Θα δείτε τα ακόλουθα μηνύματα στην Κονσόλα.
Έξοδος κονσόλας
# 6) Αναφορές
Έχουμε δει το αποτέλεσμα στην κονσόλα. Ωστόσο, το Cucumber παρέχει αποτελέσματα δοκιμών σε μια πιο εμφανή μορφή HTML που μπορεί να κοινοποιηθεί στους ενδιαφερόμενους.
Ανοιξε στόχος -> αγγούρι-αναφορές στο πρόγραμμα περιήγησης.
Σημείωση : Θυμάστε το Junit runner class CucucmberOptions;
@CucumberOptions (features='Features',glue={'demo'},plugin={'pretty', 'html:target/cucumber-reports'})
Εδώ η προσθήκη είναι η επιλογή που καθορίζουμε για αναφορές μορφής HTML μαζί με το φάκελο.
target/cucumber-reports
Τώρα ανοίξτε τη σελίδα target cucumber-report index.html. Η σελίδα αναφοράς είναι η σελίδα HTML όπου μπορείτε να δείτε το όνομα της δυνατότητας με τα σενάρια που εκτελέστηκαν με επιτυχία.
Έτσι, η Αναφορά σας θα έχει ως εξής.
Αποτέλεσμα CucumberTest σε μορφή HTML
βασικές ερωτήσεις αντιμετώπισης προβλημάτων που τέθηκαν στη συνέντευξη
συμπέρασμα
Για να ολοκληρώσουμε αυτό το σεμινάριο, ας συνοψίσουμε τι έχουμε μάθει μέχρι τώρα.
Είδαμε όλα τα βήματα από την αρχή για να ρυθμίσουμε το BDD Cucumber REST API Test Automation Framework.
Σε αυτήν τη διαδικασία μάθαμε τα εξής:
- Για αυτοματοποιημένο έλεγχο, επιλέξαμε τη Java ως γλώσσα προγραμματισμού.
- Επιλέξαμε το Αγγούρι ως δοκιμαστικό πλαίσιο για τη δημιουργία μιας δοκιμαστικής σουίτας με τον τρόπο δοκιμής Behavior Driven Development.
- Για την αποστολή πραγματικών αιτημάτων HTTP στο διακομιστή, καταναλώσαμε την κλάση RestTemplate Spring framework.
- Για την κατανάλωση αυτών των API, κάναμε την εγκατάσταση του Cucumber plug-in, κατεβάσαμε τα αρχεία βάζων εξαρτήσεων Cucumber, Spring βάζα και JSON-απλό βάζο για parser API.
- Δημιουργήσαμε το αρχείο Feature για να περιγράψουμε τα σενάρια στα απλά αγγλικά, το Step Definition file για να χαρτογραφήσουμε τα Steps και JUnit Runner class για να τρέξουμε το αρχείο Feature.
- Τέλος, εκτελέσαμε το Test Runner class και είδαμε το αποτέλεσμα στην κονσόλα σε μια πιο ευπαθή και ευανάγνωστη μορφή HTML.
Εν ολίγοις, αυτό το άρθρο εξήγησε πώς να ξεκινήσετε με τον αυτοματισμό δοκιμής REST API με το αγγούρι. Καλύψαμε τη ρύθμιση του δοκιμαστικού αυτοματοποιημένου πλαισίου μας από την εγκατάσταση όλου του βασικού λογισμικού, του Project Setup, της δοκιμαστικής ανάπτυξης έως την εκτέλεση της δοκιμής και την προβολή δημιουργημένων αναφορών.
Αυτό αρκεί για να ξεκινήσει κάθε αυτοματισμός QA με το πλαίσιο δοκιμής αυτοματισμού. Αλλά αν κάποιος θέλει να καταλάβει λεπτομερώς πώς λειτουργεί το αγγούρι εσωτερικά, πώς λειτουργεί η γλώσσα Gherkin, τότε μπορεί να διερευνηθεί στο Αγγούρι.
Ελπίζω να είστε έτοιμοι να ξεκινήσετε με το Testing Of REST API In BDD Style With Cucumber !!
Συνιστώμενη ανάγνωση
- 10 καλύτερα εργαλεία δοκιμών API το 2021 (SOAP και REST API Testing Tools)
- Τα καλύτερα εργαλεία δοκιμής λογισμικού 2021 (QA Test Automation Tools)
- Δοκιμή REST API με Spring RestTemplate και TestNG
- Testing Primer eBook Λήψη
- Κορυφαίες 20 πιο σημαντικές ερωτήσεις και απαντήσεις συνέντευξης δοκιμών API
- Δοκιμή SaaS: Προκλήσεις, εργαλεία και προσέγγιση δοκιμών
- Απλοποίηση της δοκιμής API με το Katalon Studio
- Έλεγχος αυτοματισμού με χρήση εργαλείου αγγουριού και σεληνίου - Σελήνιο σεμινάριο # 30