Εκπαιδευτικό σεμινάριο δοκιμής REST Assured API

⚡ Έξυπνη Σύνοψη

Η REST Assured καθιερώνεται ως JavaΒιβλιοθήκη ανοιχτού κώδικα που βασίζεται σε REST API και βελτιστοποιεί τις δοκιμές αυτοματοποίησης. Το πλαίσιο δίνει τη δυνατότητα στους μηχανικούς ποιότητας να επικυρώνουν σύνθετες απαντήσεις JSON, κεφαλίδες, κωδικούς κατάστασης και χρόνους απόκρισης χρησιμοποιώντας καθαρή σύνταξη τύπου BDD με απρόσκοπτη ενσωμάτωση στο Maven.

  • ⚙️ Foundation Ρύθμιση: Διαμορφώστε Java, Eclipseκαι τις εξαρτήσεις Maven πριν γράψετε το πρώτο σας σενάριο δοκιμής REST Assured.
  • 📐 Συντακτική εξειδίκευση: Εφαρμόστε το μοτίβο Given-When-Then για να εκφράσετε αιτήματα API σε μια ευανάγνωστη και φιλική προς τις επιχειρήσεις μορφή.
  • 🔍 Λεπτομερής Επικύρωση: Extracσώμα απόκρισης t, κωδικοί κατάστασης, κεφαλίδες, τύπος περιεχομένου και χρονισμός μέσω μιας ομαλής αλυσίδας.
  • 🧩 Πλοήγηση διαδρομής: Διασχίστε τις ένθετες τιμές JSON χρησιμοποιώντας σημειογραφία κουκκίδων παρόμοια με το XPath στο Selenium για ακριβείς ισχυρισμούς.
  • Ενσωμάτωση CI/CD: Συνδυάστε το REST Assured με TestNG or JUnit για την ενσωμάτωση ελέγχων API απευθείας σε αυτοματοποιημένες διοχετεύσεις δημιουργίας.

Εκμάθηση REST Assured

Τι είναι το Rest Assured;

Μείνε ήσυχος σας δίνει τη δυνατότητα να δοκιμάσετε REST API χρησιμοποιώντας βιβλιοθήκες java και ενσωματώνεται καλά με το Maven. Διαθέτει πολύ αποτελεσματικές τεχνικές αντιστοίχισης, επομένως η επιβεβαίωση των αναμενόμενων αποτελεσμάτων είναι επίσης πολύ απλή. Το Rest Assured έχει μεθόδους ανάκτησης δεδομένων από σχεδόν κάθε τμήμα του αιτήματος και της απόκρισης, ανεξάρτητα από το πόσο περίπλοκες είναι οι δομές JSON.

Για την κοινότητα δοκιμών, το API Automation Testing είναι ακόμα νέο και εξειδικευμένο. Οι πολυπλοκότητες JSON διατηρούν ανεξερεύνητες τις δοκιμές API. Αλλά αυτό δεν το καθιστά λιγότερο σημαντικό στη διαδικασία της δοκιμής. Το πλαίσιο Rest Assured.io το έχει κάνει πολύ απλό χρησιμοποιώντας τα βασικά βασικά στοιχεία της Java, καθιστώντας το πολύ επιθυμητό πράγμα για εκμάθηση.

Γιατί χρειάζεται Rest-Sured;

Φανταστείτε ότι ανοίγετε την προβολή των Χαρτών Google και αναζητάτε ένα μέρος που θέλετε να πάτε. Βλέπετε αμέσως κοντινά εστιατόρια, επιλογές μετακίνησης από κορυφαίους παρόχους ταξιδιών και πολλές επιλογές στα χέρια σας. Όλοι γνωρίζουμε ότι αυτά δεν είναι προϊόντα της Google, οπότε πώς καταφέρνει η Google να τα εμφανίσει; Χρησιμοποιεί τα εκτεθειμένα API αυτών των παρόχων. Τώρα, εάν σας ζητηθεί να δοκιμάσετε αυτό το είδος ρύθμισης, ακόμη και πριν κατασκευαστεί ή αναπτυχθεί το περιβάλλον χρήστη, η δοκιμή των API γίνεται εξαιρετικά σημαντική. Η επανειλημμένη δοκιμή τους με διαφορετικούς συνδυασμούς δεδομένων το καθιστά μια πολύ κατάλληλη περίπτωση για αυτοματοποίηση.

Παλαιότερα, οι ομάδες χρησιμοποιούσαν δυναμικές γλώσσες όπως Groovy και Ruby για να επιτευχθεί αυτό, και ήταν δύσκολο. Ως εκ τούτου, οι δοκιμές API δεν διερευνήθηκαν ευρέως από τους λειτουργικούς δοκιμαστές.

Ωστόσο, με την Rest Assured, ο αυτοματοποιημένος έλεγχος των API και η αποστολή απλών αιτημάτων HTTPS με φιλικές προς το χρήστη προσαρμογές γίνονται απλές αν κάποιος έχει βασικό υπόβαθρο JavaΕίναι χρήσιμο για την κατανόηση των δοκιμών API και των δοκιμών ενσωμάτωσης. Το Rest Assured παρέχει ισχυρή εμπιστοσύνη στο backend, ενώ οι δοκιμαστές front-end μπορούν να επικεντρωθούν στο UI και στις λειτουργίες του client-side. Το Rest Assured είναι ανοιχτού κώδικα και η συνεχής προσθήκη μεθόδων και βιβλιοθηκών το έχει καταστήσει μια εξαιρετική επιλογή για αυτοματοποίηση API.

REST Assured vs. Postman: Βασικές διαφορές

Τόσο με εγγύηση REST όσο και Postman επικυρώνουν τα REST API, ωστόσο το καθένα ταιριάζει σε διαφορετικό στάδιο του κύκλου ζωής των δοκιμών. Η επιλογή του κατάλληλου εργαλείου εξαρτάται από τις δεξιότητες της ομάδας σας, το εύρος του έργου και τις ανάγκες ενσωμάτωσης.

Άποψη Εγγυημένη ΥΠΟΛΟΙΠΟ Postman
Χαρακτηριστικά Java βιβλιοθήκη για αυτοματοποίηση βασισμένη σε κώδικα Πρόγραμμα-πελάτης API βασισμένο σε GUI με υποστήριξη scripting
καλυτερα Use Case Συνεχείς αγωγοί ολοκλήρωσης και σουίτες παλινδρόμησης Μη αυτόματη εξερεύνηση και γρήγοροι έλεγχοι API
Απαίτηση δεξιοτήτων πυρήνας Java απαιτούμενες γνώσεις Ελάχιστη κωδικοποίηση· χρήσεις JavaΑποσπάσματα σεναρίου
Αναφορά Ενσωματώνεται με TestNG, JUnit, και Γοητεία Ενσωματωμένες περιλήψεις εκτέλεσης μέσω του Newman CLI

Πολλές ομάδες χρησιμοποιούν Postman για πρώιμο πρωτότυποping και μεταβείτε σε REST Assured για αυτοματοποιημένη παλινδρόμηση μόλις ολοκληρωθεί το APItracτο t σταθεροποιείται.

Πώς να ρυθμίσετε το Rest Assured.io με Eclipse

Η ρύθμιση του REST Assured περιλαμβάνει τρεις βασικές εξαρτήσεις: Java, ένα IDE και το Maven. Ακολουθήστε τα παρακάτω βήματα για να αποφύγετε σφάλματα δημιουργίας αργότερα.

Βήμα 1) Εγκατάσταση Java. Ανατρέξτε σε αυτό καθοδηγήσει

Βήμα 2) Κατεβάστε ένα IDE για να ξεκινήσετε: έκλειψη

Βήμα 3) Εγκαταστήστε το Maven και ρυθμίστε το eclipse σας. Αναφέρομαι εδώ.

Ρύθμιση Να είστε σίγουροι

  1. Δημιουργήστε ένα έργο Maven στο IDE σας. Χρησιμοποιούμε IntelliJ, αλλά θα έχετε μια παρόμοια δομή σε οποιοδήποτε IDE χρησιμοποιείτε.
  2. Ανοίξτε το POM.xml σας.

Δομή έργου για την εγκατάσταση του REST Assured Maven

Δομή έργου για έναν χώρο εργασίας REST Assured Maven

Για Rest Assured.io: Για Java έκδοση < 9 χρήστες:

Προσθέστε την παρακάτω εξάρτηση στο POM.xml:

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>xml-path</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

Για Rest Assured.io: Για Java χρήστες έκδοσης 9+:

<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured-all</artifactId>
<version>4.2.0</version>
<scope>test</scope>
</dependency>

Αντιμετώπιση προβλημάτων:

Σε περίπτωση που δείτε σφάλματα και δεν είστε σίγουροι αν οι εξαρτήσεις λήφθηκαν σωστά, ακολουθήστε τα εξής βήματα:

  1. Εκτελέστε μια κατασκευή Maven για να εισαγάγετε όλες τις εξαρτήσεις. Θα βρείτε βοήθεια για τη ρύθμιση του Maven στο Guru99.
  2. Εάν τα σφάλματα επιμένουν, εκτελέστε έναν καθαρισμό Maven και στη συνέχεια μια εγκατάσταση Maven. Η δημιουργία θα πρέπει να ολοκληρωθεί χωρίς σφάλματα.
  3. Προσθέστε τις παρακάτω εισαγωγές στο δικό σας Java κλάση και επιβεβαιώστε ότι δεν υπάρχουν σφάλματα μεταγλώττισης.
import io.restassured.RestAssured.*;
import io.restassured.matcher.RestAssuredMatchers.*;
import org.hamcrest.Matchers.*;

Το πρώτο απλό σενάριο Rest Assured

Με τις εξαρτήσεις στη θέση τους, μπορείτε πλέον να γράψετε το πρώτο σας σενάριο. Το πλαίσιο ακολουθεί ένα στυλ Ανάπτυξης με γνώμονα τη συμπεριφορά (BDD) που διαβάζεται σχεδόν σαν τα αγγλικά.

Σύνταξη:

Η σύνταξη του Rest Assured.io είναι το πιο ευανάγνωστο μέρος του πλαισίου, καθώς είναι πολύ παρόμοια με το BDD και κατανοητή.

Given().
        param("x", "y").
        header("z", "w").
when().
Method().
Then().
        statusCode(XXX).
        body("x", "y", equalTo("z"));

Επεξήγηση:

Code εξήγηση
Δεδομένος() Η λέξη-κλειδί «Δεδομένο» σάς επιτρέπει να ορίσετε ένα φόντο. Εδώ, μεταβιβάζετε τις κεφαλίδες αιτήματος, τις παραμέτρους ερωτήματος και διαδρομής, το σώμα και τα cookies. Αυτό είναι προαιρετικό εάν αυτά τα στοιχεία δεν χρειάζονται στο αίτημα.
Οταν() Η λέξη-κλειδί «πότε» υποδηλώνει την υπόθεση του σεναρίου σας. Για παράδειγμα, «όταν» λαμβάνετε/δημοσιεύετε/τοποθετείτε κάτι, κάνετε κάτι άλλο.
Μέθοδος() Αντικαταστήστε αυτό με οποιαδήποτε από τις λειτουργίες CRUD (get/post/put/delete).
Επειτα() Οι συνθήκες διεκδίκησης και αντιστοίχισης βρίσκονται εδώ.

Τώρα που έχετε τις απαραίτητες ρυθμίσεις και κάποιες γνώσεις σχετικά με τη σύνταξη, ας δημιουργήσουμε την πρώτη μας απλή δοκιμή. Είναι εντάξει αν η δομή σας φαίνεται καινούργια, καθώς κωδικοποιείτε περαιτέρω και ερμηνεύετε κάθε γραμμή, θα την κατανοήσετε.

Τι θα φέρεις;

Ανοίξτε το πρόγραμμα περιήγησής σας και πατήστε – https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1. Βεβαιωθείτε ότι βλέπετε κάτι όπως παρακάτω.

Δείγμα απόκρισης API σεναρίου Rest Assured

Δείγμα απόκρισης API που καταγράφηκε από το REST Assured

Σε περίπτωση που εμφανιστεί σφάλμα στο πρόγραμμα περιήγησης όταν προσπαθείτε να λάβετε απάντηση για το αίτημα:

  1. Ελέγξτε αν χρησιμοποιήσατε HTTPS ή HTTP. Το πρόγραμμα περιήγησής σας ενδέχεται να έχει ρυθμίσεις που αποκλείουν μη ασφαλείς ιστότοπους.
  2. Ελέγξτε αν κάποιος διακομιστής μεσολάβησης ή τείχος προστασίας εμποδίζει το πρόγραμμα περιήγησής σας να ανοίξει τον ιστότοπο.

*Σημείωση – δεν χρησιμοποιήσατε εδώ καμία κεφαλίδα, ούτε σώμα κειμένου ούτε cookie. Ήταν μια διεύθυνση URL και λαμβάνετε περιεχόμενο από το API αντί να δημοσιεύετε ή να ενημερώνετε οποιοδήποτε υπάρχον περιεχόμενο. Αυτό το καθιστά κλήση GET. Λάβετε υπόψη αυτό για να κατανοήσετε καλύτερα την πρώτη μας δοκιμή.

Ο στόχος της δοκιμής σας:

Ο στόχος του σεναρίου είναι να εκτυπώσει το ίδιο αποτέλεσμα στην κονσόλα IDE με αυτό που λάβατε στο πρόγραμμα περιήγησης μέσω του Rest Assured.

Ας το κωδικοποιήσουμε με τα παρακάτω βήματα:

Λήψη του σώματος απάντησης

Βήμα 1) Δημιουργήστε μια κλάση με το όνομα "myFirstRestAssuredClass".

Βήμα 2) Δημιουργήστε μια μέθοδο που ονομάζεται "getResponseBody".

Βήμα 3) Παρόμοια με τη δομή που μάθαμε νωρίτερα για τα given, when και then, πληκτρολογήστε τον παρακάτω κώδικα:

δεδομένος(). -> Δεν απαιτούνται κεφαλίδες, δεν απαιτείται ερώτημα ή παράμετρος διαδρομής.

when(). -> Δεν έχει οριστεί συγκεκριμένη συνθήκη.

παίρνω('https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1'). -> χρειάζεται να δοθεί μόνο η διεύθυνση URL.

then(). -> Δεν απαιτούνται συγκεκριμένοι ισχυρισμοί.

log().all() -> Μόλις ανακτηθεί όλη η απάντηση, καταγράφεται η απάντηση, οι κεφαλίδες και ουσιαστικά όλα όσα σας επιστρέφει το αίτημα.

public static void getResponseBody(){
   given().when().get("https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1").then().log()
  .all();

}

Τώρα, παρατηρήστε ότι η διεύθυνση URL που χρησιμοποιείται είναι μεγάλη και λιγότερο ευανάγνωστη. Παρατηρώντας προσεκτικά, θα παρατηρήσετε ότι χρησιμοποιούνται 3 παράμετροι ερωτήματος:

  1. Κωδικός πελάτη
  2. Κωδικός Πρόσβασης
  3. Αριθμός λογαριασμού

Το Rest Assured μας βοηθά να περάσουμε κάθε μέρος (ερώτημα, διαδρομή, παράμετρος κεφαλίδας) ξεχωριστά, καθιστώντας τον κώδικα πιο ευανάγνωστο και εύκολο στη συντήρηση. Επίσης, μπορούμε να παραμετροποιήσουμε τα δεδομένα από ένα εξωτερικό αρχείο, όπως απαιτείται.

Για τη χρήση παραμέτρων ερωτήματος, επιστρέφουμε στον ορισμό της σύνταξης και βλέπουμε ότι όλες περνούν ως μέρος του δεδομένου.

public static void getResponseBody(){

   given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log()
           .body();
}

**Σημειώστε ότι χρησιμοποιήσαμε το «body» αντί για το «all». Αυτό μας βοηθάει π.χ.tracμόνο το σώμα της απάντησης.

Παραγωγή:

Λήψη του κωδικού κατάστασης απάντησης

Η επόμενη μέθοδος που θα δημιουργήσουμε είναι να λάβουμε τον κωδικό κατάστασης και να βάλουμε μια δήλωση για να τον επικυρώσουμε.

Βήμα 1) Δημιουργήστε μια μέθοδο που ονομάζεται getResponseStatus().

Βήμα 2) Χρησιμοποιήστε την ίδια δομή αιτήματος που χρησιμοποιήθηκε παραπάνω. Αντιγράψτε και επικολλήστε το.

Βήμα 3) Αντί να το καταγράψετε, χρησιμοποιήστε την εντολή 'getStatus'.Code'ενσωματωμένη μέθοδος του Rest Assured για την ανάκτηση της τιμής του κωδικού κατάστασης.

Βήμα 4) Για να επιβεβαιώσετε ότι ο κωδικός κατάστασής σας είναι 200, χρησιμοποιήστε τις λέξεις-κλειδιά – assertThat().statusCode(αναμενόμενοCode).

**Σημείωση – Η διεύθυνση URL είναι μια μεταβλητή που χρησιμοποιείται για λόγους απλότητας. Η διεύθυνση URL περιέχει ολόκληρη τη διεύθυνση URL αιτήματος API.

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

Παραγωγή:

Επιχειρηματική Ανάγκη

Ένας από τους βασικούς κανόνες του αυτοματισμού είναι ότι πρέπει να βάζουμε σημεία ελέγχου ώστε το τεστ να προχωρήσει μόνο εφόσον πληρούνται όλες οι απαιτούμενες προϋποθέσεις. Στη δοκιμή API, η πιο βασική επικύρωση είναι να ελέγξετε εάν ο κωδικός κατάστασης του αιτήματος είναι σε μορφή 2XX.

Ο πλήρης κωδικός, μέχρι στιγμής:

import java.util.ArrayList;
import static io.restassured.RestAssured.*;
import static java.util.concurrent.TimeUnit.MILLISECONDS;

public class myFirstRestAssuredClass {

   final static String url="https://demo.guru99.com/V4/sinkministatement.php?CUSTOMER_ID=68195&PASSWORD=1234!&Account_No=1";

   public static void main(String args[]) {

      getResponseBody();
     getResponseStatus();

; }

   //This will fetch the response body as is and log it. given and when are optional here
   public static void getResponseBody(){
       given().when().get(url).then().log()
      .all();

  given().queryParam("CUSTOMER_ID","68195")
               .queryParam("PASSWORD","1234!")
               .queryParam("Account_No","1") .when().get("https://demo.guru99.com/V4/sinkministatement.php").then().log().body();
   }

public static void getResponseStatus(){
   int statusCode= given().queryParam("CUSTOMER_ID","68195")
           .queryParam("PASSWORD","1234!")
           .queryParam("Account_No","1")
           .when().get("https://demo.guru99.com/V4/sinkministatement.php").getStatusCode();
   System.out.println("The response status is "+statusCode);

   given().when().get(url).then().assertThat().statusCode(200);
}

}

* Σημείωση:

  1. Το 200 είναι μια επιτυχημένη απόκριση για αυτό το σενάριο. Κατά καιρούς, ενδέχεται να χρειαστεί να αποτύχει το αίτημα, οπότε σε αυτήν την περίπτωση μπορείτε να χρησιμοποιήσετε 4XX ή 5XX. Δοκιμάστε να αλλάξετε τον κωδικό κατάστασης παρέχοντας μη έγκυρες παραμέτρους και ελέγξτε.
  2. Όταν διεκδικούμε μια συνθήκη, δεν θα υπάρχει εκτύπωση στην κονσόλα εκτός εάν υπάρχει κάποιο σφάλμα.

Σενάριο για λήψη διαφορετικών τμημάτων μιας απάντησης

Πέρα από το σώμα της απόκρισης και τον κωδικό κατάστασης, το REST Assured εκθέτει επίσης κεφαλίδες, χρόνο απόκρισης και τύπο περιεχομένου μέσω αλυσιδωτών παραμέτρων.tracμέθοδοι tor. Η λέξη-κλειδί 'extracΤο t' είναι απαραίτητο για την ανάκτηση αυτών των συγκεκριμένων τμημάτων.

επικεφαλίδα

Το Rest Assured είναι μια πολύ απλή γλώσσα και η ανάκτηση κεφαλίδων είναι εξίσου απλή. Το όνομα της μεθόδου είναι headers(). Όπως και πριν, θα δημιουργήσουμε μια αυτόνομη μέθοδο για να κάνουμε το ίδιο.

public static void getResponseHeaders(){
   System.out.println("The headers in the response "+
                   get(url).then().extract()
           .headers());
}

Λάβετε υπόψη ότι η συνάρτηση 'given().when()' παραλείπεται εδώ και η γραμμή κώδικα ξεκινά από την συνάρτηση get(). Αυτό συμβαίνει επειδή δεν υπάρχει προϋπόθεση ή επαλήθευση πριν από την εκτέλεση του αιτήματος και τη λήψη απάντησης. Σε τέτοιες περιπτώσεις, η χρήση της είναι προαιρετική.

Έξοδος:

Επιχειρηματική ανάγκη:

Αρκετά συχνά, θα χρειαστεί να χρησιμοποιήσετε το διακριτικό εξουσιοδότησης ή ένα cookie περιόδου σύνδεσης για το επόμενο αίτημα και αυτές οι λεπτομέρειες επιστρέφονται ως επί το πλείστον ως κεφαλίδες της απόκρισης.

Χρόνος Απόκρισης

Για να λάβετε τον χρόνο που απαιτείται για την ανάκτηση της απόκρισης από το backend ή άλλα συστήματα κατάντη, το Rest Assured παρέχει μια μέθοδο που ονομάζεται "timeIn" με μια κατάλληλη μονάδα χρόνου για να λάβετε το χρόνο που απαιτείται για την επιστροφή της απόκρισης.

public static void getResponseTime(){
  System.out.println("The time taken to fetch the response "+get(url)
         .timeIn(TimeUnit.MILLISECONDS) + " milliseconds");
}

Παραγωγή:

Επιχειρηματική ανάγκη:

Ένα πολύ σημαντικό χαρακτηριστικό των δοκιμών API είναι ο χρόνος απόκρισης, ο οποίος μετρά την απόδοση της εφαρμογής. Ο χρόνος που απαιτείται για την κλήση σας μπορεί να διαρκέσει περισσότερο ή λιγότερο, ανάλογα με την ταχύτητα του διαδικτύου σας, την απόδοση του API εκείνη τη στιγμή, το φόρτο εργασίας του διακομιστή και άλλους παράγοντες που επηρεάζουν τον χρόνο.

Content-Type

Μπορείτε να λάβετε τον τύπο περιεχομένου της απόκρισης που επιστρέφεται χρησιμοποιώντας τη μέθοδο "contentType()".

public static void getResponseContentType(){
   System.out.println("The content type of response "+
           get(url).then().extract()
              .contentType());
}

Παραγωγή

Επιχειρηματική ανάγκη:

Κατά καιρούς, η λήψη του τύπου περιεχομένου είναι απαραίτητη για να διασφαλιστεί ότι δεν υπάρχουν κενά ασφαλείας για τυχόν απειλές διασταυρούμενης προέλευσης και για να επιβεβαιωθεί ότι το περιεχόμενο που διαβιβάζεται είναι σύμφωνο με τα πρότυπα του API.

Λήψη μεμονωμένου στοιχείου JSON

Από την απάντηση που δίνεται, σας ζητείται να υπολογίσετε το συνολικό ποσό. Πρέπει να βρείτε κάθε ποσό και να το αθροίσετε.

Βήματα:

Βήμα 1) Το πεδίο ποσό βρίσκεται μέσα σε έναν πίνακα με βασικές «δηλώσεις», ο οποίος με τη σειρά του βρίσκεται στη λίστα με το κλειδί «αποτέλεσμα».

Βήμα 2) Το Rest Assured παρέχει έναν μηχανισμό για την επίτευξη των τιμών στο API χρησιμοποιώντας τη "διαδρομή".

Βήμα 3) Η διαδρομή για να φτάσετε στα amounts είναι "result.statements.AMOUNT". Σκεφτείτε το σαν το XPath στο Selenium.

Βήμα 4) Ανακτήστε όλα τα ποσά σε μια συλλογή και, στη συνέχεια, επαναλάβετε όλες τις τιμές για να υπολογίσετε το άθροισμα.

public static void getSpecificPartOfResponseBody(){

ArrayList<String> amounts = when().get(url).then().extract().path("result.statements.AMOUNT") ;
int sumOfAll=0;
for(String a:amounts){

    System.out.println("The amount value fetched is "+a);
    sumOfAll=sumOfAll+Integer.valueOf(a);
}
System.out.println("The total amount is "+sumOfAll);

}

Σημείωση: Δεδομένου ότι η τιμή amount είναι ένας τύπος δεδομένων συμβολοσειράς, την μετατρέπουμε σε ακέραιο αριθμό για άθροιση.

Παραγωγή:

καλυτερα Practices for REST Assured Test Automation

Μόλις κατανοήσετε τα βασικά, η εφαρμογή πειθαρχημένων μοτίβων διατηρεί την αξιόπιστη σουίτα σας καθώς η επιφάνεια των API μεγαλώνει. Οι παρακάτω πρακτικές βοηθούν τις ομάδες να αποφεύγουν τις ασταθείς δοκιμές και το φόρτο συντήρησης.

  1. Κεντρικοποιήστε τη βασική διεύθυνση URL: Αποθηκεύστε το βασικό URI και τα διακριτικά ελέγχου ταυτότητας σε μία μόνο κλάση διαμόρφωσης ή αρχείο ιδιοτήτων. Αυτό αποφεύγει την επικάλυψη και απλοποιεί την εναλλαγή περιβάλλοντος.
  2. Προδιαγραφές αιτήματος και απάντησης χρήσης: Δημιουργήστε επαναχρησιμοποιήσιμα αντικείμενα RequestSpecBuilder και ResponseSpecBuilder. Μειώνουν τα στερεότυπα όταν πολλές δοκιμές μοιράζονται κοινές κεφαλίδες ή ισχυρισμούς.
  3. Επικύρωση σχήματος JSON: Συνδυάστε το REST Assured με την ενότητα json-schema-validator για να επιβεβαιώσετε τη συνθήκη.tracΑκεραιότητα t. Οι έλεγχοι του σχήματος εντοπίζουν τυχόν αλλαγές που προκαλούν σφάλματα πριν φτάσουν στους κατάντη καταναλωτές.
  4. Εξωτερικοποίηση Δεδομένων Δοκιμής: Αποθηκεύστε τα ωφέλιμα φορτία σε αρχεία JSON ή χρησιμοποιήστε παρόχους δεδομένων από TestNGΤα δεδομένα που έχουν ενσωματωθεί σε σκληρό κώδικα γρήγορα καθίστανται παλιά.
  5. Εκτέλεση ανεξάρτητων δοκιμών: Κάθε δοκιμή θα πρέπει να ρυθμίζει και να επεξεργάζεται τα δικά της δεδομένα. Οι σουίτες που εξαρτώνται από την παραγγελία αποτυγχάνουν απρόβλεπτα σε παράλληλες εκτελέσεις CI.
  6. Επιλεκτική καταγραφή αρχείων καταγραφής: Χρησιμοποιήστε την συνάρτηση log().ifError() σε σταθερές σουίτες και την συνάρτηση log().all() κατά τον εντοπισμό σφαλμάτων. Η λεπτομερής καταγραφή καταγράφει αργούς αγωγούς CI και αποκρύπτει πραγματικά προβλήματα.
  7. Συνδέστε στο CI/CD: Ενεργοποιήστε τις σουίτες REST Assured μέσω του Maven Surefire ή του Failsafe στο Jenkins, GitHub Actions ή GitLab. Εκτελέστε ελέγχους smoke σε κάθε υποβολή και πλήρη παλινδρόμηση όλη τη νύχτα.

Η υιοθέτηση αυτών των συνηθειών νωρίς μετατρέπει τον αυτοματισμό API σε μακροπρόθεσμο πλεονέκτημα και όχι σε εύθραυστο σημείο συμφόρησης.

Συχνές Ερωτήσεις

Ναι. Οι σύγχρονοι βοηθοί τεχνητής νοημοσύνης, όπως το ChatGPT και το GitHub Copilot, μπορούν να σχεδιάσουν σκαλωσιές δοκιμών REST Assured από τις προδιαγραφές API. Οι μηχανικοί θα πρέπει να ελέγξουν τον παραγόμενο κώδικα για ισχυρισμούς, χειρισμό δεδομένων και περιπτώσεις edge πριν από τη συγχώνευση.

Τα εργαλεία που βασίζονται στην τεχνητή νοημοσύνη αναλύουν μοτίβα απόκρισης και προτείνουν αυτοεπιδιορθούμενους εντοπιστές ή ισχυρισμούς. Επισημαίνουν την απόκλιση σχήματος, προτείνουν αναδιαμορφώσεις και ενημερώνουν αυτόματα τα δεδομένα δοκιμών, γεγονός που μειώνει τη χειροκίνητη συντήρηση όταν τα API εξελίσσονται συχνά.

Το REST Assured είναι ένα Java Βιβλιοθήκη που έχει κατασκευαστεί για αυτοματοποίηση βάσει κώδικα σε αγωγούς CI. Postman είναι ένα πρόγραμμα-πελάτης GUI για χειροκίνητη εξερεύνηση και γρήγορη δημιουργία σεναρίων. Οι ομάδες συχνά συνδυάζουν και τα δύο σε όλο τον κύκλο ζωής των δοκιμών.

Το REST Assured είναι βελτιστοποιημένο για REST και JSON. Μπορεί να στείλει ακατέργαστα φορτία XML για SOAP, αλλά ειδικά εργαλεία όπως SoapUI προσφέρουν πλουσιότερη υποστήριξη για ανάλυση WSDL και ισχυρισμούς ειδικά για SOAP.

Το REST Assured συνδυάζεται φυσικά με TestNG JUnit για ισχυρισμούς, lifecycle hooks και αναφορές. Τα Allure, Extent Reports και Maven Surefire προσθέτουν οπτικοποίηση και ενσωμάτωση CI επιπλέον.

Συνοψίστε αυτήν την ανάρτηση με: