Χρησιμοποιώντας SoapUI μαζί σου, Selenium για Δοκιμές Υπηρεσιών Ιστού

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

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

  • 🔘 Δύο εργαλεία, δύο επίπεδα: SoapUI ασκεί το τελικό σημείο SOAP ή REST, ενώ Selenium Το WebDriver οδηγεί το πρόγραμμα περιήγησης που το καλεί.
  • ☑️ Groovy είναι η κόλλα: SoapUI υποστηρίζει Groovy εκτενώς, και Groovy κουβαλάει το σύνολο Java σύνολο βιβλιοθήκης, έτσι Selenium ο κώδικας εκτελείται αμετάβλητος.
  • Κατηγορία δρομέων: SoapUIΤο TestCaseRunner ανοίγει ένα αρχείο έργου, επιλέγει μια σουίτα δοκιμών και μια περίπτωση δοκιμών και τα εκτελεί από Java.
  • 🧪 Δυναμικά δεδομένα: Η συνάρτηση setProjectProperties() μεταβιβάζει τιμές όπως η πόλη και ο ταχυδρομικός κώδικας κατά τον χρόνο εκτέλεσης αντί για ένα στατικό αρχείο ιδιοτήτων.
  • Απαιτούμενα: The Groovy SDK, ένα JDK, Selenium και SoapUI πρέπει όλα να εγκατασταθούν πριν από την πρώτη εκτέλεση.
  • 📊 Ίχνος αποδεικτικών στοιχείων: Κάθε ενέργεια γράφεται στο soapui.log στον φάκελο bin του καταλόγου εγκατάστασης.

Χρησιμοποιώντας SoapUI μαζί σου, Selenium για δοκιμές διαδικτυακών υπηρεσιών μέσω Groovy

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

Τι είναι το SOAP;

SOAP είναι ένα απλό πρωτόκολλο που βασίζεται σε XML. Επιτρέπει στις εφαρμογές να ανταλλάσσουν πληροφορίες μέσω HTTP. Χρησιμοποιεί τις Υπηρεσίες Ιστού Descriptγλώσσα ion (WSDL) για επικοινωνία και άλλες εφαρμογές μπορούν να αλληλεπιδράσουν με διαδικτυακές υπηρεσίες μέσω αυτής της διεπαφής WSDL.

SOAP vs REST Web Services στο SoapUI

SoapUI Ξεκίνησε ως πρόγραμμα-πελάτης SOAP και το όνομά του το λέει ακόμα, αλλά δοκιμάζει και τελικά σημεία REST. Γνωρίζοντας σε ποιο στυλ υποδεικνύετε, καθορίζεται ο τρόπος με τον οποίο θα κατασκευαστεί η δοκιμή.

Άποψη SOAP ΠΕΡΙΦΕΡΕΙΑ
μεtract Ένα αρχείο WSDL περιγράφει κάθε λειτουργία, επομένως SoapUI μπορεί να δημιουργήσει αιτήματα αυτόματα. Συνήθως ένας ορισμός OpenAPI ή Swagger, ή καμία επίσημη παραδοχήtracκαθόλου.
Μορφή μηνύματος Μόνο φάκελος XML. Συνήθως JSON, αν και επιτρέπονται XML και άλλες μορφές.
Μεταφορά Τις περισσότερες φορές HTTP, αλλά το SOAP είναι ανεξάρτητο από τη μεταφορά. HTTP, με τη μέθοδο και URL φέροντας την πρόθεση.
Ισχυρισμοί σε SoapUI Τα XPath και XQuery ταιριάζουν με τον φάκελο απόκρισης. Οι δηλώσεις JSONPath και script ταιριάζουν με το ωφέλιμο φορτίο.
Τυπική χρήση Τραπεζικές, τηλεπικοινωνιακές και άλλες επιχειρήσειςtracΕνσωματώσεις επιχειρήσεων με μεγάλο t-heavy περιεχόμενο. Δημόσιες και κινητές υπηρεσίες όπου τα ωφέλιμα φορτία παραμένουν ελαφριά.

Η παρακάτω αναλυτική παρουσίαση χρησιμοποιεί μια υπηρεσία καιρού SOAP, αλλά η ίδια κλάση runner εκτελεί μια δοκιμαστική περίπτωση REST χωρίς καμία αλλαγή στην Java κώδικας.

Τι είναι το SOAPUI;

SOAPUI είναι ένα εργαλείο δοκιμών διαδικτυακών υπηρεσιών ανοιχτού κώδικα για πολλαπλές πλατφόρμες. Η έκδοση SOAPUI-Pro διαθέτει επιπλέον λειτουργικότητα για εταιρείες που ασχολούνται με κρίσιμες διαδικτυακές υπηρεσίες. Οι διαδικτυακές υπηρεσίες παίζουν σημαντικό ρόλο στις εφαρμογές διαδικτύου.

⚠️ Σημείωση για το όνομα του προϊόντος: Η SmartBear έχει διακοπεί SoapUI Pro ως αυτόνομο προϊόν και το συγχώνευσε, μαζί με τα LoadUI Pro και ServiceV Pro, σε ReadyAPIΗ δωρεάν έκδοση διατηρεί το SoapUI όνομα και εξακολουθεί να κυκλοφορεί ενεργά. Τα παρακάτω βήματα λειτουργούν είτε σε, είτε σε υπάρχοντα SoapUI έργα ανοιχτά σε ReadyAPI.

Τι είναι Selenium?

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

  • Selenium — ένα εργαλείο δοκιμών που αυτοματοποιεί τα προγράμματα περιήγησης σε πολλές πλατφόρμες.
  • Selenium Πρόγραμμα οδήγησης Web — πραγματοποιεί απευθείας κλήσεις στα προγράμματα περιήγησης, χρησιμοποιώντας την εγγενή υποστήριξη αυτοματισμού κάθε προγράμματος περιήγησης.

Γιατί Συνδυάστε SoapUI και Selenium σε μία δοκιμή

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

  • Αποδείξτε το ταξίδι μετ' επιστροφής. Μια κράτηση που υποβάλλεται στο πρόγραμμα περιήγησης θα πρέπει να εμφανίζεται στην απόκριση της υπηρεσίας. Μόνο μια συνδυασμένη δοκιμή μπορεί να επιβεβαιώσει και τα δύο μισά.
  • Ρυθμίστε γρήγορα την κατάσταση. Η δημιουργία ενός πελάτη μέσω του API διαρκεί ένα δευτερόλεπτο. Η δημιουργία ενός έως δώδεκα πεδίων φόρμας διαρκεί ένα λεπτό και αποτυγχάνει συχνότερα.
  • Εντοπίστε μια βλάβη. Όταν το περιβάλλον χρήστη εμφανίζει λανθασμένο σύνολο, η διεκδίκηση API στην ίδια εκτέλεση σάς ενημερώνει αμέσως εάν η υπηρεσία ή η σελίδα φέρει το σφάλμα.
  • Επαναχρησιμοποιήστε ένα σύνολο δεδομένων. Τα ζεύγη ταχυδρομικού κώδικα και πόλης στο παρακάτω παράδειγμα τροφοδοτούν την κλήση υπηρεσίας και θα μπορούσαν εξίσου να τροφοδοτήσουν τους ισχυρισμούς του προγράμματος περιήγησης.
  • Κόψτε την διπλή κάλυψη. Οι κανόνες επικύρωσης που έχουν ήδη αποδειχθεί στο επίπεδο υπηρεσιών δεν χρειάζονται αργή δοκιμή προγράμματος περιήγησης ο καθένας.

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

Selenium μαζί σου, SoapUI

Ο απλούστερος και ευκολότερος τρόπος ενσωμάτωσης Selenium μαζί σου, SoapUI είναι να χρησιμοποιήσει Groovy, Το οποίο SoapUI υποστηρίζει εκτενώς.

Groovy είναι μια αντικειμενοστρεφής γλώσσα σεναρίων που περιλαμβάνει όλα τα Java βιβλιοθήκες, έτσι κάθε Java λέξη-κλειδί και συνάρτηση μπορούν να χρησιμοποιηθούν σε ένα Groovy script απευθείας. Εκτελείται στο JVM (Java Εικονική Μηχανή), η οποία επιτρέπει σε ένα Groovy μπες μέσα SoapUI και σε έναν Java Selenium δοκιμή για να μοιραστείτε τις ίδιες τάξεις.

Προϋποθέσεις χρήσης Selenium μαζί σου, SoapUI

Εγκαταστήστε τα παρακάτω πριν γράψετε οποιονδήποτε κώδικα:

⚠️ Σημείωση έκδοσης: Groovy Η τρέχουσα σταθερή έκδοση 5.0 είναι η τρέχουσα και απαιτεί JDK 11 ή νεότερη έκδοση, επομένως εγκαταστήστε πρώτα το JDK και αφήστε το Groovy έκδοση ακολουθήστε το. Selenium προστίθεται σε ένα Java έργο ως Maven ή Gradle εξάρτηση αντί για φάκελο που έχει ληφθεί και το SoapUI Το jar πρέπει να βρίσκεται στην ίδια διαδρομή κλάσεων με το τεστ σας — σε αυτό το μοναδικό σημείο αποτυγχάνουν οι περισσότερες πρώτες προσπάθειες.

Τηλεφώνησε στο SoapUI Εκτελώνταs δοκιμαστικήs περίπτωσηs στο Selenium

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

Σημείωση: Η τιμή usePropertyFileFlag=true χρησιμοποιείται εδώ αντί για ένα στατικό αρχείο ιδιοτήτων για την αποθήκευση του ταχυδρομικού κώδικα και της πόλης. Ο ταχυδρομικός κώδικας και η πόλη διαβιβάζονται δυναμικά κατά τον χρόνο εκτέλεσης από τη μέθοδο setProjectProperties().

Οδηγίες για την εκτέλεση του κώδικα:

  1. Ξεκίνα SoapUI.
  2. Ξεκινήστε μια νέα δοκιμαστική περίπτωση.
  3. Προσθέστε μια νέα Groovy βήμα.
  4. Αντιγράψτε και επικολλήστε το δείγμα κώδικα στο βήμα.
  5. Κάντε κλικ στο Play.
  6. Μπορείς να δεις Firefox εκκίνηση και πλοήγηση προς GoogleΜετά από αυτό, μπορείτε να δείτε το SoapUI καταχωρήσεις αρχείου καταγραφής.
  7. Ο κώδικας εκτελείται χρησιμοποιώντας JUnit.

Code Παράδειγμα

@when("<I use the weather service to get the weather information")						
    public void i_use_the_weather_service_to_get_the_information() {
        Set<Entry<String, string>> set = zipAndCities.entrySet();
        while (iterator,hasNext)) {
            Entry<String, String> entry = iterator.next();
            String zipCode = entry.getkey();
            String city = entry.getValue();
            String[] prop = {"usePropertyFileFlag=true","zipCode=" +zipCode, "city=" +city};									
            
            try{
                SoapUITestCaseRunner soapUITestCaseRunner = new	SoapUITestCaseRunner();
                soapUITestCaseRunner.setProjectFile("src/test/resources/WeatherSoapTest-soapui-project.xml");					
                soapUITestCaseRunner.setProjectProperties(prop);
                soapUITestCaseRunner.setTestSuite("TestSuite1");
                soapUITestCaseRunner.setTestCase("TestCase1");
                soapUITestCaseRunner.run();
                
            } catch (Exception e) {
                System.err.println("checking" + zipCode + " failed!");
                failureCount++;
                zipCodes.append(zipCode + " [" + city +"] ");
                e.printStackTrace();
            }finally{					
                totalCount++;
            }
}
}
}

⚠️ Code σημειώσεις: Αυτό το απόσπασμα αναπαράγεται ακριβώς όπως δημοσιεύτηκε και είναι ένα τμήμα και όχι μια μεταγλωττιζόμενη κλάση. Πριν από τη δημιουργία του, πρέπει να δηλώσετε τον επαναλήπτη που λαμβάνεται από set.iterator(), σωστός ενώ (επαναλήπτης, έχειΕπόμενο)) προς την ενώ (iterator.hasNext()) και entry.getkey() προς την entry.getKey(), γράψτε με κεφαλαίο την σημείωση ως @Οταν, αφαιρέστε τον αδέσποτο χαρακτήρα στην αρχή του κειμένου βήματος και χρησιμοποιήστε Σπάγγος αντί κορδόνι στη δήλωση Set. Το αρχικό κείμενο διατηρείται, επομένως το δημοσιευμένο παράδειγμα παραμένει άθικτο.

Η προβολή κονσόλας σάς επιτρέπει να δείτε όλα τα περίπτωση δοκιμήςs εκτελέστηκε. Θα βρείτε μια λίστα με τους ταχυδρομικούς κώδικες και τις πόλεις που ανακτήθηκαν και διαβιβάστηκαν SoapUI Δοκιμαστική Περίπτωση 1.

Προβολή SoapUI Αρχείο καταγραφής

Τα αρχεία καταγραφής καταγράφουν κάθε ενέργεια που λαμβάνει χώρα σε ένα λειτουργικό σύστημα ή μια εφαρμογή λογισμικού. Για να δείτε το SoapUI αρχείο καταγραφής, μεταβείτε στον κύριο κατάλογο, όπου θα δείτε ένα αρχείο με το όνομα soapui.log.

SoapUI λίστα καταλόγου εγκατάστασης με ορατό το αρχείο soapui.log

In SoapUI, το αρχείο καταγραφής βρίσκεται στον φάκελο bin μέσα στον κατάλογο εγκατάστασης, για παράδειγμα C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. Σε μια τρέχουσα εγκατάσταση, ο φάκελος έκδοσης διαφέρει και ReadyAPI Η εγκατάσταση γράφει στον δικό της φάκελο bin.

φάκελος bin του SoapUI κατάλογος εγκατάστασης όπου αποθηκεύεται το αρχείο καταγραφής

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

Περιεχόμενα του αρχείου soapui.log που εμφανίζει τις καταγεγραμμένες καταχωρήσεις δοκιμαστικής εκτέλεσης

Πού SoapUI και Selenium Η ενσωμάτωση συχνά διακόπτεται

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

Σύμπτωμα Πιθανή αιτία Τι να ελέγξετε
NoClassDefFoundError ή ClassNotFoundException σε SoapUITestCaseRunner The SoapUI Το jar δεν βρίσκεται στη διαδρομή κλάσεων δοκιμής. Προσθέστε το SoapUI εξάρτηση από το αρχείο δημιουργίας ή κατευθύνετε τη διαδρομή κλάσης στο jar στο SoapUI φάκελος lib. Ένα jar που λείπει εμφανίζεται ως ένα συνηθισμένο Selenium εξαίρεση στην κονσόλα.
Το αρχείο του έργου δεν μπορεί να βρεθεί Η setProjectFile() επιλύει μια σχετική διαδρομή σε σχέση με τον κατάλογο εργασίας, η οποία διαφέρει μεταξύ ενός IDE και ενός εργαλείου δημιουργίας. Εκτέλεση από τη ρίζα του έργου ή μετάβαση σε μια απόλυτη διαδρομή.
Δεν βρέθηκε η σουίτα δοκιμών ή η περίπτωση δοκιμών Τα ονόματα στις συναρτήσεις setTestSuite() και setTestCase() πρέπει να ταιριάζουν ακριβώς με το έργο. Αντιγράψτε τα ονόματα κατευθείαν από το SoapUI δέντρο έργου· κάνουν διάκριση πεζών-κεφαλαίων.
Το ακίνητο δεν ανταποκρίνεται ποτέ στο αίτημα Η setProjectProperties() εκτελέστηκε μετά την run() ή το αίτημα δεν αναφέρει την ιδιότητα. Ορίστε κάθε ιδιότητα πριν από την run() και χρησιμοποιήστε τη σύνταξη placeholder ιδιότητας μέσα στο αίτημα.
Το πρόγραμμα περιήγησης δεν ξεκινά Το πρόγραμμα οδήγησης και το εγκατεστημένο πρόγραμμα περιήγησης είναι διαφορετικές κύριες εκδόσεις. Ας Selenium Ο διαχειριστής επιλύει το πρόγραμμα οδήγησης ή αντιστοιχίζει το πρόγραμμα οδήγησης με την έκδοση του προγράμματος περιήγησης.
Μια λειτουργία λειτουργεί στο IDE αλλά όχι από τον εκτελεστή Το βήμα βασίζεται σε μια λειτουργία μόνο για Pro, όπως μια πηγή δεδομένων. Επιβεβαιώστε την άδεια χρήσης ή δημιουργήστε ξανά το βήμα με ισοδύναμα ανοιχτού κώδικα.

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

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

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

Ναι, και είναι η κατοπτρική εικόνα αυτής της αναλυτικής παρουσίασης. A Groovy το βήμα μπορεί να δημιουργήσει ένα WebDriver απευθείας, υπό την προϋπόθεση ότι το Selenium τα βάζα τοποθετούνται στο SoapUI lib, ώστε το σενάριο να μπορεί να τα επιλύσει.

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

Τυλίξτε το ως ένα JUnit or TestNG δοκιμάστε και αφήστε το Maven ή Gradle να το καλέσετε, ακριβώς όπως κάνει το παράδειγμα. Στον πράκτορα, το πρόγραμμα περιήγησης πρέπει να εκτελείται χωρίς κεφαλή και το SoapUI Το αρχείο έργου πρέπει να υποβληθεί μαζί με τον κώδικα δοκιμής.

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

Είναι, εντός ορίων. Ο συγκυβερνήτης χειρίζεται Groovy σύνταξη και κοινό Java καλεί καλά, αλλά έχει ελάχιστη γνώση του SoapUI αντικείμενα scripting όπως testRunner, context και log, επομένως αυτές οι προτάσεις χρειάζονται προσεκτική εξέταση.

Αποθηκεύστε τα ως μεταβλητές περιβάλλοντος ή σε έναν διαχειριστή μυστικών στοιχείων και διαβάστε τα στις ιδιότητες του έργου κατά τον χρόνο εκτέλεσης, με τον ίδιο μηχανισμό που χρησιμοποιεί εδώ η setProjectProperties(). Ένα δεσμευμένο αρχείο έργου με κωδικό πρόσβασης απλού κειμένου είναι μια διαρροή που περιμένει να συμβεί.

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

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