Ισχυρισμοί σε SoapUI: Σενάρια, XQuery, Τύποι XPath

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

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

  • 🔘 Κατηγορίες: Περιεχόμενο Ιδιότητας, Συμμόρφωση/Κατάσταση/Πρότυπα, Σενάριο, SLA, JMS και Ασφάλεια.
  • ☑️ Περιέχει: Επιβεβαιώνει την ύπαρξη μιας συμβολοσειράς στην απόκριση, με υποστήριξη κανονικών εκφράσεων.
  • Δεν Περιέχει: Επιβεβαιώνει ότι μια συμβολοσειρά απουσιάζει, χρήσιμο για διακριτικά σφάλματος και πεδία διαρροής.
  • 🧪 Αγώνας XPath: Δηλώστε πρώτα τον χώρο ονομάτων, στη συνέχεια στοχεύστε έναν κόμβο και συγκρίνετε την τιμή του.
  • Ταίριασμα XQuery: Επικυρώνει επαναλαμβανόμενα σύνολα κόμβων που διαφορετικά θα χρειάζονταν εκατοντάδες ελέγχους XPath.
  • 📊 script: Groovy Οι ισχυρισμοί χειρίζονται δυναμικές απαντήσεις και λογική εγκατάστασης ή απεγκατάστασης.
  • 🔍 Αντιμετώπιση προβλημάτων: Λάθος χώρος ονομάτων και σύνταξη με τελεία αντί για άνω και κάτω τελεία προκαλούν τις περισσότερες αποτυχίες.

Ισχυρισμοί σε SoapUI

Τι είναι ο ισχυρισμός;

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

Μόλις αποσταλεί ένα αίτημα σε έναν διακομιστή ιστού, λαμβάνεται μια απάντηση. Πρέπει να επαληθεύσουμε εάν η απάντηση περιέχει τα δεδομένα που περιμένουμε. Για να επικυρώσουμε την απάντηση, πρέπει να χρησιμοποιήσουμε ισχυρισμούς. Χωρίς ισχυρισμό, ένα βήμα δοκιμής αποδεικνύει μόνο ότι η υπηρεσία απάντησε, όχι ότι απάντησε σωστά, γι' αυτό και κάθε Δοκιμή API θα πρέπει να έχει μαζί του τουλάχιστον ένα.

Τύποι ισχυρισμών

Υπάρχουν διάφοροι τρόποι για να εκφράσουμε μια απάντηση, ωστόσο, θα επικεντρωθούμε στους πιο συνηθισμένους. SoapUI τύποι ισχυρισμών κατά την επικύρωση μιας απάντησης. Παρακάτω παρατίθενται οι κατηγορίες που είναι διαθέσιμες στην έκδοση ανοιχτού κώδικα του SoapUI.

  1. Περιεχόμενο ιδιοκτησίας
  2. Πρότυπο κατάστασης συμμόρφωσης
  3. Γραφή
  4. SLA
  5. JMS
  6. Ασφάλεια

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

Κατηγορίες ισχυρισμών που αναφέρονται στο SoapUI Παράθυρο διαλόγου Προσθήκης Διεκδίκησης
Τύποι ισχυρισμών σε SoapUI

Εκτός από αυτά που αναφέρονται παραπάνω, η έκδοση Pro διαθέτει επίσης μια ενσωματωμένη JDBC Assertion, χρησιμοποιώντας την οποία μπορούμε να επιβεβαιώσουμε εάν η υπηρεσία web έχει ενημερώσει σωστά τη βάση δεδομένων.

Σημείωση έκδοσης: ρεύμα SoapUI η τεκμηρίωση αναφέρει επίσης ένα JDBC κατηγορία (Κατάσταση JDBC και Χρονικό όριο JDBC) παράλληλα με τις παραπάνω κατηγορίες, και ένα Περιεχόμενο μηνύματος ισχυρισμός εντός του Περιεχομένου Ιδιοτήτων για πλουσιότερη σύγκριση XML. Η εμπορική έκδοση που αναφέρεται εδώ ως "Pro" πωλείται πλέον ως ReadyAPI από το SmartBear, επομένως οι ετικέτες μενού σε νεότερες εκδόσεις ενδέχεται να διαβάζονται διαφορετικά, ενώ η συμπεριφορά διεκδίκησης παραμένει η ίδια.

Περιέχει Ισχυρισμό

Αναζητά την ύπαρξη της καθορισμένης συμβολοσειράς. Υποστηρίζει επίσης κανονική έκφραση.

Θα συνεχίσουμε με το ίδιο παράδειγμα από το προηγούμενο σεμινάριο με αίτημα WSDL όπως http://www.dneonline.com/calculator.asmxΑν δεν έχετε κατασκευάσει ακόμα αυτό το έργο, επεξεργαστείτε το δημιουργία έργου, σουίτας δοκιμών και περίπτωσης δοκιμών πρώτη.

Βήμα 1: Από προεπιλογή, δεν υπάρχουν ισχυρισμοί.

  1. Ο αριθμός των ισχυρισμών εμφανίζεται στην καρτέλα Δηλώσεις.
  2. Για να προσθέσετε έναν νέο ισχυρισμό, κάντε κλικ στο κουμπί «Προσθήκη νέου ισχυρισμού».

SoapUI Καρτέλα "Δηλώσεις" που δεν εμφανίζει ισχυρισμούς και το κουμπί "Προσθήκη νέας δήλωσης"

Βήμα 2: Τώρα,

  1. Επιλέξτε την κατηγορία ισχυρισμών.
  2. Επιλέξτε τον Τύπο βεβαίωσης.
  3. Κάντε κλικ στο "Προσθήκη"

Προσθήκη παραθύρου διαλόγου "Διεκδίκηση" με επιλεγμένη την κατηγορία και τον τύπο διεκδίκησης

Βήμα 3: Ας επαληθεύσουμε εάν η συμβολοσειρά '46' υπάρχει στην απάντηση. Κάντε κλικ στο 'OK'.

Σημείωση: Μπορούμε επίσης να αγνοήσουμε πεζά και να προσθέσουμε τυπική έκφραση.

Περιέχει παράθυρο διαλόγου διαμόρφωσης διεκδίκησης με την τιμή 46 που έχει εισαχθεί

Βήμα 4: Μόλις προστεθεί, εκτελείται αμέσως η διεκδίκηση και εμφανίζεται αν είναι ΕΓΚΥΡΗ ή ΜΗ ΑΚΥΡΗ.

Η καρτέλα "Δικαιολογήσεις" αναφέρει τον ισχυρισμό "Περιέχει" ως ΕΓΚΥΡΟ

Βήμα 5: Ας υποθέσουμε τώρα ότι αλλάζουμε το περιεχόμενο του 'Περιέχει ισχυρισμό' στο SoapUI' στο '47' και δείτε τι θα συμβεί.

Επεξεργασία του περιεχομένου "Περιέχει ισχυρισμό" από 46 σε 47

Βήμα 6: Η διεκδίκηση εκτελείται και το αποτέλεσμα εμφανίζεται στον χρήστη. Δεδομένου ότι δεν έχουμε τη συμβολοσειρά '47' στην απόκριση, η διεκδίκηση έχει αποτύχει.

Η καρτέλα "Δικαιολογήσεις" αναφέρει τον ισχυρισμό "Περιέχει" ως αποτυχημένο

Δεν περιέχει ισχυρισμό

Το αντίστοιχο λειτουργεί αντίστροφα. Αναζητά την ανυπαρξία της καθορισμένης συμβολοσειράς. Υποστηρίζει επίσης κανονική έκφραση.

Βήμα 1: Αφού κάνετε κλικ στο κουμπί «Προσθήκη νέων δηλώσεων»,

  1. Επιλέξτε την κατηγορία ισχυρισμών.
  2. Επιλέξτε τον τύπο δήλωσης – Σε αυτήν την περίπτωση «ΔΕΝ περιέχει»
  3. Κάντε κλικ στο "Προσθήκη"

Προσθήκη παραθύρου διαλόγου διεκδίκησης με επιλεγμένο το NOT Contains

Βήμα 2: Ας επαληθεύσουμε αν η συμβολοσειρά 'intA' υπάρχει στην απάντηση. Εισαγάγετε τη συμβολοσειρά 'FromCurrency' και κάντε κλικ στο 'OK'.

Παράθυρο διαλόγου "Δεν περιέχει ισχυρισμό" με καταχωρημένη τη συμβολοσειρά FromCurrency

Βήμα 3: Μόλις προστεθεί μια διεκδίκηση, εκτελείται και εμφανίζει το αποτέλεσμα. Μέχρι στιγμής έχουμε προσθέσει δύο διεκδικήσεις, επομένως και οι δύο διεκδικήσεις εκτελούνται και εμφανίζουν το αποτέλεσμα.

Καρτέλα "Δικαιολογήσεις" που παραθέτει τα αποτελέσματα "Περιέχει" και "Δεν Περιέχει"

Βήμα 4: Τώρα ας αλλάξουμε τα περιεχόμενα του 'Not Contains Assertion' και ας δούμε τι θα συμβεί. Θα ελέγξουμε για την ανυπαρξία της συμβολοσειράς "AddResult".

Δεν Περιέχει Παράθυρο διαλόγου Διεκδίκησης που ελέγχει για το διακριτικό AddResult

Βήμα 5: Η συμβολοσειρά 'AddResult' υπάρχει στην απόκριση, επομένως η διεκδίκηση 'NOT Contains' θα αποτύχει, όπως φαίνεται παρακάτω.

Η διεκδίκηση "Δεν περιέχει" αποτυγχάνει επειδή υπάρχει το AddResult

Δήλωση αντιστοίχισης XPath

Η αντιστοίχιση συμβολοσειρών είναι άμεση, επομένως η επόμενη διεκδίκηση στοχεύει έναν μόνο κόμβο. Χρησιμοποιεί την έκφραση XPath για να επιλέξει τον κόμβο-στόχο και τις τιμές του. XPath, είναι μια γλώσσα ερωτημάτων XML για την επιλογή κόμβων από ένα έγγραφο XML.

Βήμα 1: Αφού κάνετε κλικ στο κουμπί «Προσθήκη νέων ισχυρισμών»,

  1. Επιλέξτε την κατηγορία ισχυρισμών.
  2. Επιλέξτε τον Τύπο διεκδίκησης – Σε αυτήν την περίπτωση «Αντιστοιχία XPath»
  3. Κάντε κλικ στο "Προσθήκη"

Παράθυρο διαλόγου Προσθήκης Διεκδίκησης με επιλεγμένο το XPath Match

Βήμα 2: Ανοίγει το παράθυρο Προσθήκη XPath.

Πριν από την προσθήκη ενός SoapUI Στο XPath, πρέπει να δηλώσουμε τον χώρο ονομάτων. Ένας χώρος ονομάτων XML είναι μια συλλογή ονομάτων, που αναγνωρίζονται από μια αναφορά Uniform Resource Identifier (URI), τα οποία χρησιμοποιούνται σε έγγραφα XML ως ονόματα στοιχείων και χαρακτηριστικών. Το ίδιο χρησιμοποιείται και στο SoapUI Δήλωση XPath.

Για να δηλώσουμε έναν χώρο ονομάτων XML, απλώς πρέπει να κάνουμε κλικ στο κουμπί «Δήλωση», το οποίο θα κάνει τη δουλειά για εμάς, διαφορετικά μπορούμε επίσης να δηλώσουμε έναν χώρο ονομάτων χειροκίνητα οι ίδιοι.

Αφού δηλώσουμε τον χώρο ονομάτων, πρέπει να αναφέρουμε το XPath χρησιμοποιώντας τον δημιουργημένο χώρο ονομάτων.

Κάνοντας κλικ στο κουμπί «Δήλωση», θα εμφανιστούν δύο χώροι ονομάτων, καθώς έχουμε δύο URI. Ένας από αυτούς είναι το σχήμα URL και το άλλο αντιστοιχεί στην πραγματική διαδικτυακή υπηρεσία URLΠρέπει να χρησιμοποιήσουμε τον πραγματικό χώρο ονομάτων όπου βρίσκεται η υπηρεσία web και ΟΧΙ τον χώρο ονομάτων σχήματος κατά την αναφορά στο XPath. Οι δηλωμένες γραμμές εμφανίζονται στο επάνω μέρος του πλαισίου XPath, όπως φαίνεται παρακάτω.

Δηλωμένοι χώροι ονομάτων soap και ns1 μέσα στο παράθυρο διεκδίκησης XPath

δήλωση namespace soap='http://schemas.xmlsoap.org/soap/envelope/';

δήλωση χώρου ονομάτων ns1='http://tempuri.org/';

Παράθυρο διεκδίκησης XPath αμέσως μετά το κλικ στην επιλογή Δήλωση

Βήμα 3: Τώρα πρέπει να εισαγάγουμε την XPath του κόμβου XML που πρέπει να επικυρώσουμε.

//ns1:AddResult Μας δίνει την τιμή του κόμβου που περικλείεται μεταξύ & και το ns1 αντιστοιχεί στον δηλωμένο χώρο ονομάτων που δείχνει το 'http://tempuri.org/'

Αφού εισαγάγουμε το XML, πρέπει να κάνουμε κλικ στο 'Επιλογή από το τρέχον' έτσι ώστε η τιμή από την τρέχουσα απόκριση να συλλέγεται για σύγκριση στο μέλλον.

Εισήχθη η έκφραση XPath με επισημασμένη την Επιλογή από την τρέχουσα

Βήμα 4: Μέχρι στιγμής,

  1. Αφού δηλώσουμε τους χώρους ονομάτων, έχουμε εισαγάγει τον κόμβο XPath του XML που πρέπει να επικυρώσουμε.
  2. Πρέπει να κάνουμε κλικ στο 'Επιλογή από το τρέχον' για να κάνουμε την τρέχουσα τιμή ως την αναμενόμενη τιμή.
  3. Η τρέχουσα τιμή εμφανίζεται στον χρήστη την οποία μπορούμε να τροποποιήσουμε εάν απαιτείται.
  4. Κάντε κλικ στο «Αποθήκευση».

Ρύθμιση παραμέτρων XPath Match που εμφανίζει την αναμενόμενη τιμή και το κουμπί Αποθήκευση

Βήμα 5: Η προστιθέμενη Δήλωση στο SoapUI θα εμφανιστεί όπως φαίνεται παρακάτω.

Καρτέλα "Διεκδικήσεις" που εμφανίζει την προστιθέμενη διεκδίκηση αντιστοίχισης XPath

Δηλώσεις σεναρίου

Αυτή η τεχνική του Assertion είναι η πιο ευρέως χρησιμοποιούμενη καθώς είναι εξαιρετικά δύσκολο να διαχειριστεί και να διατηρήσει εκατοντάδες ισχυρισμούς.

SoapUI χρησιμοποιεί είτε Groovy Σενάριο ή JavaΓραφή για ισχυρισμούς σεναρίου. Η τεχνική σεναρίου υιοθετείται για ανάπτυξηping ένα πλαίσιο για τον έλεγχο του SOAP. Οι ισχυρισμοί scripting χρησιμοποιούνται υπό τις ακόλουθες συνθήκες.

  • Η δημιουργία σεναρίων επιτρέπει στον χρήστη να εκτελέσει ορισμένες λειτουργίες πριν και μετά την εκτέλεση μιας δοκιμαστικής περίπτωσης χρησιμοποιώντας μεθόδους ρύθμισης και κατάργησης αντίστοιχα. Η ρύθμιση είναι μια διαδικασία που εκτελείται πριν από την εκτέλεση μιας συγκεκριμένης μεθόδου (παράδειγμα - Δημιουργία και Αρχικοποίηση Αντικειμένου), ενώ η κατάργηση είναι μια διαδικασία που εκτελείται μετά την εκτέλεση της μεθόδου (π.χ.: Καταστροφή αντικειμένων και καθαρισμός). Αυτή η λειτουργία δεν είναι διαθέσιμη σε άλλους τύπους ισχυρισμών και μπορεί να γίνει μόνο μέσω κωδικοποίησης.
  • Επιτρέπει στους χρήστες να ανοίγουν/κλείνουν ένα Έργο, προκειμένου να αρχικοποιήσουν ή να καθαρίσουν τις ρυθμίσεις που σχετίζονται με το Έργο, καθώς και να εργαστούν με μεταβλητές περιβάλλοντος, κάτι που είναι πολύ χρήσιμο κατά τη σύνταξη σεναρίων.
  • Μας βοηθά να διεκδικήσουμε ένα δυναμικό περιεχόμενο απόκρισης.
  • Οι ισχυρισμοί σεναρίων χρησιμοποιούνται για τη δημιουργία ισχυρισμών που ορίζονται από τον χρήστη και ΔΕΝ είναι προκαθορισμένοι από SoapUI.

Για την επίδειξη ενός ισχυρισμού Script σε SoapUI, θα χρησιμοποιήσουμε την αριθμομηχανή WSDL, την δοκιμαστική περίπτωση 'Προσθήκη' που είχαμε δημιουργήσει νωρίτερα.

Βήμα 1: Τα βήματα για την προσθήκη του groovy script είναι τα ίδια με αυτά άλλων ισχυρισμών, εκτός από το ότι ο ισχυρισμός δεν είναι προκαθορισμένος. Αντίθετα, είναι ένας ισχυρισμός που ορίζεται από τον χρήστη και προσφέρει μεγαλύτερη ευελιξία από τους ενσωματωμένους.

Επιλέξτε το βήμα δοκιμής στο οποίο πρέπει να προστεθεί ο ισχυρισμός.

Επιλέχθηκε το βήμα δοκιμής στο SoapUI πλοηγός πριν από την προσθήκη μιας δήλωσης

Κάντε κλικ στο κουμπί «Προσθήκη ισχυρισμού» όπως φαίνεται παρακάτω.

Προσθήκη κουμπιού "Διεκδίκηση" στη γραμμή εργαλείων διεκδικήσεων βημάτων δοκιμής

Βήμα 2: Τώρα επιλέξτε την κατηγορία Διεκδίκηση.

  1. Σε αυτή την περίπτωση είναι Script.
  2. Αγορά SoapUI Ισχυρισμός Script και δεν υπάρχουν υποτύποι που να σχετίζονται με αυτό.
  3. Κάντε κλικ στο «Προσθήκη».

Προσθήκη παραθύρου διαλόγου Διεκδίκησης με επιλεγμένη την κατηγορία Σενάριο

Βήμα 3: Ανοίγει το παράθυρο διαλόγου Scripting (Σενάριο) όπου ο χρήστης θα μπορεί να γράψει ένα σενάριο που ορίζεται από τον χρήστη για να επικυρώσει την XML απόκρισης.

Αδειάστε SoapUI παράθυρο διαλόγου επεξεργασίας διεκδίκησης σεναρίου

Βήμα 4: Ας γράψουμε τώρα ένα groovy script για να επικυρώσουμε το Conversion Rate. Το Script επισυνάπτεται παρακάτω με τα ενσωματωμένα σχόλια. Συνιστάται να έχετε γνώσεις σχετικά με Java Σενάριο ή Groovy Σενάριο πριν επιχειρήσετε να γράψετε το δικό σας σενάριο.

//Define Groovy Utils and holder for validating the XML reponse content
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)

//Define the NameSpace
holder.namespaces["ns1"] = "http://tempuri.org/"

//Get the Value of the Node 'AddResult' and assign to a variable
def addResult = holder.getNodeValue("//ns1:AddResult")

//print the value of the result in the Output panel
log.info "The result value for integers is " + addResult

//Comparing the value to print 'Pass' or 'Fail'
if(addResult=="46")
{ log.info "Pass" }
else
{ log.info "fail"}
  1. Κάντε κλικ στο κουμπί "Εκτέλεση" για να ενεργοποιήσετε την εκτέλεση.
  2. Η έξοδος του Script εμφανίζεται στο παράθυρο Output. Έχει εκτυπώσει τόσο την Αξία μετατροπής όσο και το τελικό αποτέλεσμα (Επιτυχία ή Αποτυχία)
  3. Εμφανίζεται η πληροφορία ότι «Πέρασε η δήλωση δέσμης ενεργειών». Κάντε κλικ στο OK.

Σημείωση: Το τελικό αναδυόμενο παράθυρο πληροφοριών θα εμφανίζεται πάντα με το μήνυμα "Η δέσμευση σεναρίου πέρασε" εφόσον το σενάριο είναι συντακτικά σωστό. Δεν έχει καμία σχέση με τον ισχυρισμό σου μέσα στο σενάριο.

Παράθυρο εξόδου διεκδίκησης σεναρίου που εκτυπώνει την τιμή αποτελέσματος και το Pass

κάντε κλικ στο OK

Βήμα 5: Τώρα, η καρτέλα ισχυρισμών εμφανίζει όλους τους ισχυρισμούς που είχαμε προσθέσει για αυτήν τη σουίτα δοκιμών με την Κατάσταση για κάθε έναν από αυτούς.

Καρτέλα "Ισχυρισμοί" που παραθέτει κάθε ισχυρισμό που προστέθηκε στη σουίτα δοκιμών

Βήμα 6: Τώρα

  1. Επιλέξτε το Test Suite από το δέντρο Navigator
  2. Κάντε κλικ στο κουμπί "Εκτέλεση".
  3. Τα αποτελέσματα θα εμφανίζονται για ολόκληρη τη δοκιμαστική σουίτα.

Η σουίτα δοκιμών εκτελεί τα αποτελέσματα μετά την εκτέλεση όλων των ισχυρισμών

Ισχυρισμός αντιστοίχισης XQuery

Χρησιμοποιεί μια έκφραση XQuery για να επιλέξει περιεχόμενο από την ιδιότητα-στόχο. Χρειαζόμαστε ένα πολύ μεγαλύτερο XML απόκρισης για να κατανοήσουμε καλύτερα τον ισχυρισμό XQuery στο SoapUIΑς εισαγάγουμε ένα άλλο WSDL όπως φαίνεται παρακάτω: http://www.webservicex.net/medicareSupplier.asmx?WSDL

Σημείωση: Τα δημόσια τελικά σημεία επίδειξης webservicex.net που χρησιμοποιούνται σε αυτήν την αναλυτική παρουσίαση δεν είναι πλέον αξιόπιστα προσβάσιμα, επομένως τα στιγμιότυπα οθόνης αιτήματος και απόκρισης παρακάτω διατηρούνται ως παράδειγμα αναφοράς. Οποιοδήποτε WSDL που επιστρέφει ένα επαναλαμβανόμενο σύνολο κόμβων θα ασκήσει την διεκδίκηση XQuery με τον ίδιο ακριβώς τρόπο.

Βήμα 1: Κάντε δεξί κλικ στο υπάρχον έργο και επιλέξτε «Προσθήκη WSDL».

Κάντε δεξί κλικ στο μενού SoapUI έργο που εμφανίζει την Προσθήκη WSDL

Βήμα 2: Ανοίγει το παράθυρο διαλόγου Προσθήκη WSDL. Αφήστε τις άλλες επιλογές ως προεπιλογές και κάντε κλικ στο κουμπί "OK".

Προσθήκη παραθύρου διαλόγου WSDL με τις προεπιλεγμένες επιλογές εισαγωγής

Βήμα 3: Όλες οι λειτουργίες παρατίθενται όπως φαίνεται παρακάτω.

Οι λειτουργίες WSDL του προμηθευτή του Medicare παρατίθενται στο δέντρο πλοήγησης

Βήμα 4: Τώρα ας προσθέσουμε ένα Δοκιμαστική θήκη μέσα στην ίδια δοκιμαστική σουίτα για την οποία είχαμε δημιουργήσει Δοκιμές ο μετατροπέας νομισμάτων.

Νέα επιλογή TestCase στην υπάρχουσα σουίτα δοκιμών

Βήμα 5: Εισαγάγετε το όνομα της δοκιμαστικής περίπτωσης και κάντε κλικ στο κουμπί «OK»

Εισαγωγή του ονόματος της δοκιμαστικής περίπτωσης στο παράθυρο διαλόγου Νέα Δοκιμαστική Περίπτωση

Βήμα 6: Η δοκιμαστική περίπτωση δημιουργείται όπως φαίνεται παρακάτω.

Νεοδημιουργημένη δοκιμαστική περίπτωση στο SoapUI δέντρο πλοηγού

Βήμα 7: Προσθέστε ένα νέο βήμα δοκιμής τύπου 'Soap Test Request' όπως φαίνεται παρακάτω.

Μενού Προσθήκη βημάτων με επιλεγμένο το Αίτημα δοκιμής SOAP

Βήμα 8: Εισαγάγετε το όνομα του βήματος δοκιμής. Ας πούμε – Supplier_by_City (Προμηθευτής_ανά_Πόλη), το οποίο θα ήταν πιο ουσιαστικό. Κάντε κλικ στο «OK».

Ονομασία του νέου βήματος δοκιμής Supplier_by_City

Βήμα 9: Επιλέξτε το Operaπου θα θέλαμε να επικυρώσουμε. Σε αυτήν την περίπτωση είναι «MedicareSupplierSoap -> GetSupplierByCity». Κάντε κλικ στο 'OK'.

Επιλογή της λειτουργίας GetSupplierByCity για το βήμα δοκιμής

Βήμα 10: Εισαγάγετε το όνομα της δοκιμαστικής περίπτωσης και κάντε κλικ στο «OK».

Επιβεβαίωση του ονόματος του αιτήματος δοκιμής SOAP

Βήμα 11: Το περίγραμμα αιτήματος XML θα εμφανιστεί όπως φαίνεται παρακάτω.

Δημιουργήθηκε περίγραμμα XML αιτήματος GetSupplierByCity

Βήμα 12: Ας βρούμε τώρα όλες τις πληροφορίες προμηθευτών για την πόλη της «Νέας Υόρκης».

Για να το κάνετε αυτό, προσθέστε τις ακόλουθες γραμμές στον κώδικά σας.

<GetSupplierByCity xmlns="http://www.webservicex.net/">

<City>New York</City>

</GetSupplierByCity>

WSDL παρακάτω URL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

Αίτημα XML που επεξεργάστηκε με τιμή Νέα Υόρκη ως Πόλη

Βήμα 13: Μετά την εκτέλεση της δοκιμής, λαμβάνουμε την παρακάτω απάντηση

Απόκριση GetSupplierByCity που περιέχει επαναλαμβανόμενες εγγραφές προμηθευτών

Βήμα 14: Ας υποθέσουμε ότι πρέπει να επικυρώσουμε όλους τους αριθμούς προμηθευτή. Δεν μπορούμε να χρησιμοποιήσουμε την διεκδίκηση XPath, καθώς χρειαζόμαστε εκατοντάδες διεκδικήσεις XPath. Επομένως, η χρήση του XQuery είναι αναπόφευκτη σε αυτήν την περίπτωση.

Το XQuery Assertion μας βοηθά να επικυρώσουμε μια ομάδα απόκρισης XML που είναι επαναλαμβανόμενης φύσης.

Επαναλαμβανόμενοι κόμβοι SupplierData πάνω στους οποίους θα επαναλάβει το XQuery

Βήμα 15: Τώρα κάντε κλικ στην επιλογή «Προσθήκη ισχυρισμού».

  1. Επιλέξτε την «Κατηγορία ισχυρισμών» – Περιεχόμενο ιδιοκτησίας σε αυτήν την περίπτωση.
  2. Επιλέξτε τον Τύπο διεκδίκησης ως "Διαφήμιση XQuery"
  3. Κάντε κλικ στο «Προσθήκη».

Επιλέχθηκε η Διεκδίκηση XQuery στην κατηγορία Περιεχόμενο Ιδιότητας

Βήμα 16: Όπως και με την διεκδίκηση XPath, πρέπει να δηλώσουμε τον χώρο ονομάτων.

  1. Κάντε κλικ στο κουμπί «Δήλωση» για αυτόματη ενεργοποίηση SoapUI για να δηλώσετε τον χώρο ονομάτων. Κάνοντας κλικ στο κουμπί δήλωσης, θα εμφανιστεί στον χρήστη ένα «ΑΝΑΔΥΟΜΕΝΟ παράθυρο» με το μήνυμα «δήλωση χώρου ονομάτων από σχήμα αντί αυτού». Κάντε κλικ στο «Ναι» για να συνεχίσετε όπως φαίνεται παρακάτω.
  2. Για την ανάκτηση όλου του Supplier Number, πρέπει να γράψουμε ένα ερώτημα XPath και θα το τοποθετήσουμε στο < SupplierNumber> και Ετικέτες.
  3. Κάντε κλικ στο «Επιλογή από το τρέχον» που θα εκτελεστεί από την τρέχουσα απάντηση.
  4. Κάνοντας κλικ στην επιλογή «Επιλογή από το τρέχον», εμφανίζονται όλοι οι αριθμοί προμηθευτή.
  5. Κάντε κλικ στο «Αποθήκευση».

Δήλωση χώρου ονομάτων από το αναδυόμενο παράθυρο επιβεβαίωσης σχήματος

Σημείωση: Πατώντας το κουμπί «Δήλωση» ενδέχεται να εμφανιστεί διαφορετικό URLως δήλωση ονοματοθέτη, ωστόσο, ο πραγματικός χώρος ονομάτων τοποθεσίας διαδικτυακής υπηρεσίας είναι αυτός που θα ληφθεί υπόψη για τον κωδικοποίηση.

Η ολοκληρωμένη έκφραση XQuery, με τις δηλώσεις ονομάτων της, μοιάζει με αυτό.

// Namespace declaration
declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://www.webservicex.net/';
declare namespace x = '';

// Placing the result in Myresult Tags

{
// Iterating through all the supplier number
for $x in //ns1:GetSupplierByCityResponse/ns1:SupplierDataLists/ns1:SupplierDatas/ns1:SupplierData

//Return all the Supplier number within ‘SupplierNumber’ Tags.
return {data($x/ns1:SupplierNumber)}
}

Παράθυρο έκφρασης XQuery που παραθέτει κάθε αριθμό προμηθευτή

Βήμα 17: Εκτελείται η εντολή XQuery Assertion και εμφανίζεται το τελικό αποτέλεσμα στον πίνακα «Διεκδίκηση» όπως φαίνεται παρακάτω. Τώρα έχουμε προσθέσει με επιτυχία μια εντολή XQuery, χρησιμοποιώντας την οποία έχουμε επικυρώσει όλες τις πληροφορίες του Αριθμού Προμηθευτή. Οι ίδιες πληροφορίες θα συγκρίνονται με τις πραγματικές, κάθε φορά που αποστέλλεται το αίτημα στον διακομιστή ιστού.

Σημείωση: Οι πραγματικές τιμές δεν θα εμφανιστούν. Εάν όλες οι πραγματικές τιμές είναι ίδιες με αυτές των αναμενόμενων τιμών, τότε εμφανίζεται η ένδειξη ΕΓΚΥΡΗ διαφορετικά θα εμφανιστεί η ένδειξη "Αποτυχία".

Πίνακας ισχυρισμών που εμφανίζει το αποτέλεσμα ισχυρισμού XQuery

Πότε να χρησιμοποιήσετε το Inbuilt Assertion;

Με καλυμμένες τόσο τις επιλογές point-and-click όσο και τις επιλογές scripted, το πρακτικό ερώτημα είναι ποια να επιλέξετε.

  • Όταν μια απάντηση είναι σύντομη ώστε να μπορεί να επικυρωθεί χρησιμοποιώντας έναν από αυτούς τους ενσωματωμένους ισχυρισμούς.
  • Μπορούμε επίσης να χρησιμοποιήσουμε το Inbuilt Assertion εάν η απάντηση που αποστέλλεται από τον διακομιστή web είναι πάντα στατική. Εάν είναι δυναμικό, δεν θα μπορούμε να το επιβεβαιώσουμε χρησιμοποιώντας ενσωματωμένους ισχυρισμούς.
  • Όταν η χρήση ενσωματωμένων βεβαιώσεων, όπως οι ισχυρισμοί χρονικού ορίου και οι ισχυρισμοί ασφάλειας καθίσταται αναπόφευκτη.
  • Το Inbuilt Assertions διατηρείται αρκετά καλά για εφάπαξ χρήση όπου οι δοκιμές δεν χρειάζεται να επαναληφθούν.

Επιλογές ισχυρισμών

Οι ισχυρισμοί που δημιουργούνται μπορούν να ελεγχθούν καλύτερα με τη βοήθεια του πίνακα ελέγχου που επισημαίνεται παρακάτω.

Πίνακας ελέγχου εργαλειοθήκης ισχυρισμών στο SoapUI

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

Επιλογή Περιγραφή
Εικονίδιο μετακίνησης ισχυρισμού προς τα πάνω Ο επιλεγμένος ισχυρισμός ανεβάζει τη σειρά.
Εικονίδιο μετακίνησης ισχυρισμού προς τα κάτω Ο επιλεγμένος ισχυρισμός μετακινείται προς τα κάτω στη σειρά.
Κατάργηση εικονιδίου διεκδίκησης Καταργεί τον επιλεγμένο ισχυρισμό
Ρύθμιση παραμέτρων ή επεξεργασία εικονιδίου διεκδίκησης Επαναδιαμόρφωση/Επεξεργασία του επιλεγμένου ισχυρισμού.

Παρακάτω παρατίθενται οι λειτουργίες που διατίθενται αποκλειστικά στην έκδοση Pro του SoapUI, τώρα αποστέλλεται ως ReadyAPIΗ έκδοση Pro μας βοηθά επίσης να ομαδοποιούμε τους ισχυρισμούς, ώστε να μπορούμε να προσθέσουμε ένα ακόμη επίπεδο επικύρωσης στους δημιουργημένους ισχυρισμούς.

  • ΚΑΙ: Όλοι οι ισχυρισμοί αξιολογούνται ως ΕΓΚΥΡΟΙ ισχυρισμοί, γεγονός που θα οδηγήσει σε ΕΠΙΤΥΧΗ συνθήκη ομάδας.
  • Ή: Τουλάχιστον ένας από τους ισχυρισμούς εντός της ομάδας πρέπει να είναι ΈΓΚΥΡΟς (VALID) για να δηλωθεί μια συνθήκη ομάδας PASSED (ΕΠΙΤΥΧΗΣ).
  • Η έκδοση Pro επιτρέπει επίσης Κλωνοποίηση ΙσχυρισμώνΑυτή η επιλογή επιτρέπει στους δοκιμαστές να επιτρέψουν την αντιγραφή ενός ισχυρισμού σε διαφορετικό βήμα δοκιμής στο ίδιο ή σε διαφορετικό έργο.
  • Απενεργοποίηση/Ενεργοποίηση ισχυρισμών: Αυτή η επιλογή επιτρέπει την απενεργοποίηση ή την ενεργοποίηση οποιασδήποτε ομαδοποιημένης ή μη ομαδοποιημένης ισχυρισμού. Εάν μια ισχυρισμός είναι απενεργοποιημένη, εμφανίζεται γκριζαρισμένη και όταν εκτελείται μια δοκιμαστική περίπτωση, οι απενεργοποιημένοι ισχυρισμοί δεν θα εκτελούνται.
  • Αποομαδοποίηση ισχυρισμών: Οποιοιδήποτε ομαδοποιημένοι ισχυρισμοί μπορούν να αποομαδοποιηθούν εάν οι δοκιμαστές αποφασίσουν να το κάνουν.

Πλήρης λίστα μεθόδων που διατίθενται σε διάφορους τύπους ισχυρισμών

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

Μηχανισμός Επιβολής Περιγραφή
ΠΕΡΙΕΧΟΜΕΝΟ ΑΚΙΝΗΤΟΥ
Περιέχει Αναζητά την ύπαρξη της καθορισμένης συμβολοσειράς. Υποστηρίζει επίσης κανονική έκφραση.
Δεν περιέχει Αναζητά την ανυπαρξία της καθορισμένης συμβολοσειράς. Υποστηρίζει επίσης κανονική έκφραση.
Ταίριασμα XPath Χρησιμοποιεί την έκφραση XPath για να επιλέξει τον κόμβο προορισμού και τις τιμές του.
XQuery Match Χρησιμοποιεί μια έκφραση XQuery για να επιλέξει περιεχόμενο από την ιδιότητα-στόχο.
Συμμόρφωση, Κατάσταση, Πρότυπα
HTTP Λήψη όλων των πόρων Επικυρώνει το Έγγραφο HTML μετά τη λήψη και διατηρείται καλά σε οποιαδήποτε ιδιότητα που περιέχει HTML.
Μη έγκυρη κατάσταση HTTP Codes Επαληθεύει εάν η απάντηση HTML περιέχει έναν κωδικό κατάστασης που δεν περιλαμβάνεται στη λίστα των καθορισμένων κωδικών.
Δεν είναι σφάλμα SOAP Επαληθεύει εάν το τελευταίο μήνυμα που ελήφθη δεν είναι σφάλμα SOAP. Είναι πολύ προφανές ότι ισχύει μόνο για SOAP Test Steps.
Συμμόρφωση Σχήματος Επαληθεύει εάν το τελευταίο ληφθέν μήνυμα είναι συμβατό με τον τυπικό ορισμό σχήματος WSDL ή WADL. Κρατάει καλά για SOAP και REST Test Steps.
Σφάλμα SOAP Επαληθεύει εάν το τελευταίο ληφθέν μήνυμα είναι σφάλμα SOAP. Είναι το αντίστροφο των βεβαιώσεων σφαλμάτων «NOT SOAP».
SOAP Response Επαληθεύει εάν η τελευταία ληφθείσα απάντηση είναι έγκυρη απόκριση SOAP και ισχύει μόνο για τα βήματα αιτήματος δοκιμής SOAP.
Έγκυρη κατάσταση HTTP Codes Επαληθεύει εάν η απόκριση HTML περιέχει έναν κωδικό κατάστασης που βρίσκεται στη λίστα των καθορισμένων κωδικών. Είναι το αντίστροφο του "Μη έγκυρη κατάσταση HTTP". Codes' Ισχυρισμός.
WS-Αίτημα Διεύθυνσης Επαληθεύει εάν το τελευταίο αίτημα που ελήφθη περιέχει κατάλληλες κεφαλίδες διεύθυνσης WS.
Απάντηση διεύθυνσης WS Επαληθεύει εάν η τελευταία ληφθείσα απάντηση περιέχει κατάλληλες κεφαλίδες διεύθυνσης WS.
WS-Security Status Επικυρώνεται εάν το τελευταίο ληφθέν μήνυμα περιέχει έγκυρες κεφαλίδες WS-Security και ισχύει μόνο για αιτήματα SOAP.
Γραφή
Διακήρυξη σεναρίου Επιτρέπει στους χρήστες να εκτελέσουν ένα προσαρμοσμένο σενάριο για την εκτέλεση επικυρώσεων που ορίζονται από το χρήστη.
SLA
SLA απόκρισης Επικυρώνεται εάν ο χρόνος απόκρισης της τελευταίας ληφθείσας απάντησης ήταν εντός του καθορισμένου ορίου.
JMS
Κατάσταση JMS Επαληθεύει εάν το αίτημα JMS του Βήματος δοκιμής έχει εκτελεστεί με επιτυχία και ισχύει για τα Βήματα δοκιμής με τελικό σημείο JMS.
Χρονικό όριο JMS Επαληθεύει εάν η απόκριση JMS ενός βήματος δοκιμής δεν κράτησε περισσότερο από την καθορισμένη διάρκεια.
Ασφάλεια
Έκθεση ευαίσθητων πληροφοριών Επαληθεύει εάν το μήνυμα απάντησης δεν εκθέτει ευαίσθητες πληροφορίες σχετικά με το σύστημα προορισμού. Μπορούμε να χρησιμοποιήσουμε αυτόν τον ισχυρισμό για Βήματα δοκιμής REST, SOAP και HTTP.

ΚΑΤΕΒΑΣΤΕ ΤΟ ΕΡΓΟ SOAPUI ΠΟΥ ΠΕΡΙΕΧΕΙ ΤΟΥΣ ΠΑΡΑΠΑΝΩ ΔΙΑΒΑΣΙΜΟΥΣ

Συνήθη σφάλματα και αντιμετώπιση προβλημάτων

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

  • Χρησιμοποιήστε τον σωστό χώρο ονομάτων. Ο χώρος ονομάτων θα πρέπει να είναι ο URL όπου βρίσκεται η διαδικτυακή υπηρεσία.
  • Εάν παρουσιαστεί σφάλμα κατά την ανάπτυξηping μια διεκδίκηση σεναρίου, χρησιμοποιήστε την εντολή 'log.info' για να εκτυπώσετε τα περιεχόμενα των μεταβλητών.
  • Εάν δεν έχετε την επιθυμητή έξοδο, βεβαιωθείτε ότι έχει περάσει μια έγκυρη είσοδος στο αίτημα.

Για παράδειγμα, στον μετατροπέα νομισμάτων, εάν εισαγάγετε το 'intA' ως 'x' που δεν είναι ακέραιος αριθμός, η έξοδος εμφανίζει έναν κωδικό σφάλματος ως 'SOAP-Client', που σημαίνει ότι το πρόβλημα αφορά την παράμετρο που διαβιβάζεται από την πλευρά του πελάτη. Το αίτημα που φέρει την μη έγκυρη τιμή εμφανίζεται πρώτο.

SoapUI αίτημα για τη διαβίβαση μη έγκυρης μη ακέραιης τιμής για τον intA

Η απόκριση επιστρέφει τον κωδικό σφάλματος αντί για αποτέλεσμα, όπως φαίνεται παρακάτω.

Κωδικός σφάλματος SOAP-Client που επιστράφηκε στο SoapUI πρόγραμμα επεξεργασίας απαντήσεων

Βεβαιωθείτε ότι χρησιμοποιείτε τη σωστή σύνταξη κατά τη χρήση των δηλώσεων XPath και XQuery. ΔΕΝ πρέπει να χρησιμοποιείτε dot(.) αντί για colon(:) κατά τη χρήση της παραπάνω δήλωσης. Η σύνταξη είναι //namespace:Tagname και ΟΧΙ //namespace.tagname. Με αυτόν τον τρόπο, ενδέχεται να εμφανιστεί το μήνυμα "ΔΕΝ υπάρχει αντιστοίχιση στην τρέχουσα απόκριση" παρόλο που το όνομα της ετικέτας είναι σωστό.

ΔΕΝ υπάρχει αντιστοιχία στην τρέχουσα απόκριση, σφάλμα που προκλήθηκε από εσφαλμένη σύνταξη XPath.

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

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

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

Ανοιχτή πηγή SoapUI Καλύπτει το Περιεχόμενο Ιδιότητας, τη Συμμόρφωση, το Σενάριο, το SLA, το JMS και την Ασφάλεια. ReadyAPI προσθέτει ομάδαping, κλωνοποίηση, έλεγχοι JDBC και ενεργοποίηση ή απενεργοποίηση ελέγχου.

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

Ναί. Δεύτερος πιλότος αυτόματες συμπληρώσεις GroovyΣυμβατό με τα Utils και XmlHolder. Πάντα να εκτελείτε πρώτα το σενάριο, επειδή ένα συντακτικά έγκυρο σενάριο αναφέρει την Επιτυχία Ισχυρισμού Σεναρίου ανεξάρτητα από τη σύγκρισή σας.

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

Μια αποτυχημένη διεκδίκηση επισημαίνει το βήμα δοκιμής της ως αποτυχημένο στην προβολή δοκιμαστικής περίπτωσης και γράφει μια αντίστοιχη καταχώρηση ΑΠΟΤΥΧΙΑΣ, με τις λεπτομέρειες της αποτυχίας, στο Αρχείο Καταγραφής Εκτέλεσης Δοκιμής στο κάτω μέρος του παραθύρου.

Περιέχει, Δεν περιέχει, Αντιστοίχιση XPath, Αντιστοίχιση XQuery, SLA απόκρισης, Σκριπτ, έγκυροι και μη έγκυροι κωδικοί κατάστασης HTTP, Έκθεση σε ευαίσθητες πληροφορίες και Συμμόρφωση σχήματος έναντι ενός WADL ή ενός συναγόμενου σχήματος.

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