TestMace. Γρήγορη εκκίνηση

TestMace. Γρήγορη εκκίνηση

Γεια σε όλους. Βγαίνουμε σιγά σιγά από τη σκιά και συνεχίζουμε τη σειρά άρθρων για το προϊόν μας. Μετά προηγούμενος άρθρο κριτικής, λάβαμε πολλά σχόλια (κυρίως θετικά), προτάσεις και αναφορές σφαλμάτων. Σήμερα θα δείξουμε TestMace σε δράση και θα μπορείτε να εκτιμήσετε μερικές από τις δυνατότητες της εφαρμογής μας. Για πιο ολοκληρωμένη εμβάπτιση, σας συμβουλεύω να ανατρέξετε στην τεκμηρίωσή μας στο http://docs-ru.testmace.com. Λοιπόν πάμε!

Εγκατάσταση

Ας ξεκινήσουμε με την κοινοτοπία. Η εφαρμογή είναι διαθέσιμη και έχει δοκιμαστεί σε τρεις πλατφόρμες - Linux, Windows, MacOS. Μπορείτε να κάνετε λήψη του προγράμματος εγκατάστασης για το λειτουργικό σύστημα που σας ενδιαφέρει το site μας. Για χρήστες Linux είναι δυνατή η εγκατάσταση snap πακέτο. Ελπίζουμε πραγματικά ότι το Microsoft Store και το App Store θα το προσεγγίσουν σύντομα (Είναι απαραίτητο; Τι πιστεύετε;).

Πειραματικό σενάριο

Επιλέξαμε το ακόλουθο τυπικό σενάριο ως θέμα δοκιμής:

  • Είσοδος: χρήστης - διαχειριστής, κωδικός πρόσβασης - κωδικός πρόσβασης
  • προσθέστε μια νέα καταχώρηση
  • Ας ελέγξουμε ότι η εγγραφή προστέθηκε σωστά

Θα δοκιμάσουμε https://testmace-quick-start.herokuapp.com/. Αυτό είναι φυσιολογικό json-server, ιδανικό για δοκιμή τέτοιων εφαρμογών. Μόλις προσθέσαμε εξουσιοδότηση ανά διακριτικό σε όλες τις διαδρομές διακομιστή json και δημιουργήσαμε μια μέθοδο σύνδεσης για να λάβουμε αυτό το διακριτικό. Θα προχωρήσουμε προοδευτικά βελτιώνοντας σταδιακά το έργο μας.

Δημιουργία έργου και προσπάθεια δημιουργίας μιας οντότητας χωρίς εξουσιοδότηση

Αρχικά, ας δημιουργήσουμε ένα νέο έργο (Αρχεία->νέο έργο). Εάν εκκινείτε την εφαρμογή για πρώτη φορά, θα ανοίξει αυτόματα ένα νέο έργο. Αρχικά, ας προσπαθήσουμε να υποβάλουμε ένα αίτημα για τη δημιουργία μιας νέας εγγραφής (σε περίπτωση που η δημιουργία εγγραφών είναι διαθέσιμη χωρίς εξουσιοδότηση). Επιλέξτε στοιχεία από το μενού περιβάλλοντος του κόμβου έργου Προσθήκη κόμβου -> RequestStep. Ορίστε το όνομα του κόμβου σε δημιουργία-ανάρτηση. Ως αποτέλεσμα, θα δημιουργηθεί ένας νέος κόμβος στο δέντρο και θα ανοίξει μια καρτέλα για αυτόν τον κόμβο. Ας ορίσουμε τις ακόλουθες παραμέτρους αιτήματος:

  • Τύπος αιτήματος: POST
  • url: https://testmace-quick-start.herokuapp.com/posts
  • Σώμα αιτήματος: json με τιμή {"title": "New testmace quick start post"}
    Εάν τα κάνατε όλα σωστά, η διεπαφή θα μοιάζει με αυτό:

TestMace. Γρήγορη εκκίνηση

Ωστόσο, εάν προσπαθήσουμε να εκπληρώσουμε το αίτημα, ο διακομιστής θα επιστρέψει έναν κωδικό 401 και χωρίς εξουσιοδότηση δεν θα λάβουμε τίποτα σε αυτόν τον διακομιστή. Λοιπόν, γενικά, όπως αναμενόταν).

Προσθήκη αιτήματος εξουσιοδότησης

Όπως είπαμε ήδη, έχουμε ένα τελικό σημείο POST /login, το οποίο παίρνει το json ως σώμα αιτήματος της φόρμας: {"username": "<username>", "password": "<password>"}Όπου username и password (και πάλι, από την εισαγωγική παράγραφο παραπάνω) έχουν έννοιες admin и password αντίστοιχα. Σε απόκριση, αυτό το τελικό σημείο επιστρέφει json like {"token": "<token>"}. Θα το χρησιμοποιήσουμε για εξουσιοδότηση. Ας δημιουργήσουμε RequestStep κόμβος με όνομα Σύνδεση, θα λειτουργήσει ως πρόγονος Σχέδιο κόμβος Χρησιμοποιώντας μεταφορά και απόθεση, μετακινήστε έναν δεδομένο κόμβο στο δέντρο ψηλότερα από τον κόμβο δημιουργία-ανάρτηση. Ας ορίσουμε τις ακόλουθες παραμέτρους στο αίτημα που δημιουργήθηκε πρόσφατα:

Ας εκτελέσουμε το αίτημα και ας λάβουμε τον διακόσιο κωδικό με το διακριτικό στην απάντηση. Κάτι σαν αυτό:

TestMace. Γρήγορη εκκίνηση

Refactoring: κατάργηση διπλασιασμού τομέα

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

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

Ας ορίσουμε μια μεταβλητή στο επίπεδο κόμβου Project domain με το νόημα https://testmace-quick-start.herokuapp.com. Για αυτό είναι απαραίτητο

  • Ανοίξτε την καρτέλα με αυτόν τον κόμβο και κάντε κλικ στο εικονίδιο της αριθμομηχανής επάνω δεξιά
  • Κάντε κλικ στο + ΠΡΟΣΘΗΚΗ ΜΕΤΑΒΛΗΤΗΣ
  • Εισαγάγετε το όνομα και την τιμή της μεταβλητής
    Στην περίπτωσή μας, το παράθυρο διαλόγου με την προστιθέμενη μεταβλητή θα μοιάζει με αυτό:

TestMace. Γρήγορη εκκίνηση

ΕΝΤΑΞΕΙ. Τώρα, λόγω κληρονομικότητας, μπορούμε να χρησιμοποιήσουμε αυτή τη μεταβλητή σε απογόνους οποιουδήποτε επιπέδου φωλιάς. Στην περίπτωσή μας πρόκειται για κόμβους Σύνδεση и δημιουργία-ανάρτηση. Για να χρησιμοποιήσετε μια μεταβλητή σε ένα πεδίο κειμένου, πρέπει να γράψετε ${<variable_name>}. Για παράδειγμα, η διεύθυνση URL σύνδεσης μετατρέπεται σε ${domain}/login, αντίστοιχα για δημιουργία-ανάρτηση το url του κόμβου θα μοιάζει ${domain}/posts.

Έτσι, με γνώμονα την αρχή DRY, έχουμε βελτιώσει ελαφρώς το σενάριο.

Αποθηκεύστε το διακριτικό σε μια μεταβλητή

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

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

  • μονοπάτι — ποιο μέρος της απάντησης λαμβάνεται (στην περίπτωσή μας είναι body.token)
  • Τρέχουσα τιμή — ποια αξία βρίσκεται κατά μήκος του μονοπατιού (στην περίπτωσή μας αυτή είναι η συμβολική αξία)
  • Όνομα μεταβλητής — όνομα της μεταβλητής όπου Τρέχουσα τιμή θα διατηρηθεί. Στην περίπτωσή μας θα είναι token
  • Κόμβος — σε ποιον από τους προγόνους θα δημιουργηθεί η μεταβλητή Όνομα μεταβλητής. Ας επιλέξουμε Project

Το ολοκληρωμένο παράθυρο διαλόγου μοιάζει με αυτό:

TestMace. Γρήγορη εκκίνηση

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

Για να αποκτήσετε πρόσβαση σε δυναμικές μεταβλητές, πρέπει να χρησιμοποιήσετε ενσωματωμένη μεταβλητή $dynamicVar. Για παράδειγμα, για να αποκτήσετε πρόσβαση σε ένα αποθηκευμένο διακριτικό, πρέπει να καλέσετε ${$dynamicVar.token}.

Μεταβιβάζουμε το διακριτικό εξουσιοδότησης στα αιτήματα

Στα προηγούμενα βήματα λάβαμε το διακριτικό εξουσιοδότησης και το μόνο που χρειάζεται να κάνουμε είναι να προσθέσουμε μια κεφαλίδα Authorization με νόημα Bearer <tokenValue> σε όλα τα αιτήματα που απαιτούν εξουσιοδότηση, συμπεριλαμβανομένων δημιουργία-ανάρτηση. Υπάρχουν διάφοροι τρόποι για να γίνει αυτό:

  1. Αντιγράψτε μη αυτόματα το διακριτικό και προσθέστε μια κεφαλίδα εξουσιοδότησης στα αιτήματα που σας ενδιαφέρουν. Η μέθοδος λειτουργεί, αλλά η χρήση της περιορίζεται μόνο σε αιτήματα του τύπου "φτιαγμένα και πεταμένα". Δεν είναι κατάλληλο για επαναλαμβανόμενη εκτέλεση σεναρίων
  2. Χρησιμοποιήστε τη λειτουργικότητα εξουσιοδότηση.
  3. Χρήση προεπιλεγμένες κεφαλίδες

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

Ένα άλλο πράγμα είναι οι προεπιλεγμένες κεφαλίδες! Με λίγα λόγια, οι προεπιλεγμένες κεφαλίδες είναι κληρονομημένες κεφαλίδες HTTP που προστίθενται στο αίτημα από προεπιλογή, εκτός εάν είναι ρητά απενεργοποιημένες. Χρησιμοποιώντας αυτήν τη λειτουργία, μπορείτε, για παράδειγμα, να εφαρμόσετε προσαρμοσμένη εξουσιοδότηση ή απλά να απαλλαγείτε από την αντιγραφή σε σενάρια. Ας χρησιμοποιήσουμε αυτή τη δυνατότητα για να περάσουμε ένα διακριτικό στις κεφαλίδες.

Προηγουμένως, αποθηκεύαμε με σύνεση το διακριτικό σε μια δυναμική μεταβλητή $dynamicVar.token σε επίπεδο κόμβου έργου. Το μόνο που μένει είναι να κάνετε τα εξής:

  1. Ορισμός προεπιλεγμένου τίτλου Authorization με το νόημα Bearer ${$dynamicVar.token} σε επίπεδο κόμβου έργου. Για να γίνει αυτό, στη διεπαφή Project του κόμβου πρέπει να ανοίξετε ένα παράθυρο διαλόγου με προεπιλεγμένες επικεφαλίδες (κουμπί Κεφαλίδες στην επάνω δεξιά γωνία) και προσθέστε έναν αντίστοιχο τίτλο. Το παράθυρο διαλόγου με τις συμπληρωμένες τιμές θα μοιάζει με αυτό:
    TestMace. Γρήγορη εκκίνηση
  2. Απενεργοποιήστε αυτήν την κεφαλίδα από το αίτημα σύνδεσης. Αυτό είναι κατανοητό: τη στιγμή της σύνδεσης, δεν έχουμε ακόμη ένα διακριτικό και θα το εγκαταστήσουμε με αυτό το αίτημα. Επομένως, στη διεπαφή σύνδεσης του αιτήματος στην καρτέλα Κεφαλίδες στην περιοχή του Κληρονόμησε καταργήστε την επιλογή της κεφαλίδας Εξουσιοδότηση.

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

Έλεγχος της ορθότητας της δημιουργίας ανάρτησης

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

  • Στείλτε ένα αίτημα για να λάβετε μια ανάρτηση με αναγνωριστικό,
  • Ελέγξτε ότι το όνομα που λάβατε από τον διακομιστή ταιριάζει με το όνομα που στάλθηκε κατά τη δημιουργία της ανάρτησης

Ας δούμε το πρώτο βήμα. Δεδομένου ότι η τιμή id καθορίζεται κατά την εκτέλεση σεναρίου, πρέπει να δημιουργήσετε μια δυναμική μεταβλητή (ας την ονομάσουμε postId) από τον κόμβο δημιουργία-ανάρτηση σε επίπεδο κόμβου έργου. Ξέρουμε ήδη πώς να το κάνουμε αυτό, απλώς ανατρέξτε στην ενότητα Αποθηκεύστε το διακριτικό σε μια μεταβλητή. Το μόνο που μένει είναι να δημιουργήσετε ένα αίτημα για λήψη μιας ανάρτησης χρησιμοποιώντας αυτό το αναγνωριστικό. Για να το κάνουμε αυτό, ας δημιουργήσουμε ένα RequestStep λήψη-ανάρτηση με τις παρακάτω παραμέτρους:

  • Τύπος αιτήματος: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Για να εφαρμόσουμε το δεύτερο βήμα, πρέπει να εξοικειωθούμε Ισχυρισμός κόμπος. Ένας κόμβος επιβεβαίωσης είναι ένας κόμβος που σας επιτρέπει να γράφετε επιταγές για συγκεκριμένα αιτήματα. Κάθε κόμβος βεβαίωσης μπορεί να περιέχει πολλούς ισχυρισμούς (επιταγές). Μπορείτε να διαβάσετε περισσότερα για όλους τους τύπους ισχυρισμών από το δικό μας τεκμηρίωση. Θα το χρησιμοποιησουμε Compare ισχυρισμός με χειριστή equal. Υπάρχουν διάφοροι τρόποι δημιουργίας ισχυρισμών:

  1. Μακρύς. Δημιουργήστε με μη αυτόματο τρόπο έναν κόμβο Assertion από το μενού περιβάλλοντος του κόμβου RequestStep. Στον κόμβο Assertion που δημιουργήθηκε, προσθέστε τον ισχυρισμό ενδιαφέροντος και συμπληρώστε τα πεδία.
  2. Γρήγορα. Δημιουργήστε έναν κόμβο Assertion μαζί με έναν ισχυρισμό από την απόκριση κόμβου RequestStep χρησιμοποιώντας το μενού περιβάλλοντος

Ας χρησιμοποιήσουμε τη δεύτερη μέθοδο. Έτσι θα μοιάζει για την περίπτωσή μας.

TestMace. Γρήγορη εκκίνηση

Για όσους δεν καταλαβαίνουν, ιδού τι συμβαίνει:

  1. Κάντε ένα αίτημα στον κόμβο λήψη-ανάρτηση
  2. Στην καρτέλα Αναλύθηκε απαντήστε, καλέστε το μενού περιβάλλοντος και επιλέξτε Δημιουργία ισχυρισμού -> Συγκρίνω -> Ισος

Συγχαρητήρια, δημιουργήσαμε την πρώτη μας δοκιμή! Απλό, έτσι δεν είναι; Τώρα μπορείτε να εκτελέσετε πλήρως το σενάριο και να απολαύσετε το αποτέλεσμα. Το μόνο που μένει είναι να το αναμορφώσουμε λίγο και να το βγάλουμε title σε ξεχωριστή μεταβλητή. Αλλά θα το αφήσουμε αυτό για εσάς ως εργασία)

Συμπέρασμα

Σε αυτόν τον οδηγό, δημιουργήσαμε ένα πλήρες σενάριο και ταυτόχρονα εξετάσαμε ορισμένα από τα χαρακτηριστικά του προϊόντος μας. Φυσικά, δεν χρησιμοποιήσαμε όλη τη λειτουργικότητα και στα επόμενα άρθρα θα παρέχουμε μια λεπτομερή επισκόπηση των δυνατοτήτων του TestMace. Μείνετε συντονισμένοι!

Υ.Γ. Για όσους τεμπελιάζουν να αναπαράγουν όλα τα βήματα, ευγενικά καταγράψαμε αποθήκη με το έργο από το άρθρο. Μπορείτε να το ανοίξετε με Αρχεία -> Ανοιχτό έργο και επιλέξτε το φάκελο Project.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο