Σε αυτή τη σελίδα
Ένα πράσινο τεστ μπορεί να κρύβει κανόνα που λείπει. Σε αυτό το υποθετικό σενάριο, ζητείται από πράκτορα να συνδέσει κατάστημα με πλατφόρμα email. Ένας δοκιμαστικός διακομιστής δέχεται ενημέρωση επαφής και επιστρέφει ένα καθαρό 200. Ο πράκτορας τελειώνει και η δοκιμή περνά.
Ο πραγματικός προορισμός έχει έναν ακόμη κανόνα: το προσαρμοσμένο χαρακτηριστικό πρέπει να δηλωθεί πριν μια ενημέρωση επαφής το ορίσει. Ο δοκιμαστικός διακομιστής δεν μοντελοποίησε τον κανόνα. Το πράσινο αποτέλεσμά του αποδεικνύει κάτι για τον πράκτορα στον δοκιμαστικό κόσμο. Δεν αποδεικνύει τίποτα για τον κανόνα που λείπει από το πραγματικό σύστημα.
Αυτή είναι η βασική ανταλλαγή στην προσομοίωση. Κάνει επικίνδυνες ή ακριβές ενέργειες επαναλήψιμες. Δημιουργεί όμως δεύτερο σύστημα, του οποίου η συμπεριφορά μπορεί να αποκλίνει από το πρώτο.
Ένα υποκατάστατο επιτρέπει δοκιμές ενεργειών
Για να δοκιμάσετε έναν πράκτορα που ενεργεί, δώστε στόχο, περιβάλλον και παρατηρήσιμη τελική κατάσταση. Μια συζήτηση για προσομοιωμένα περιβάλλοντα πρακτόρων περιγράφει αυτή τη δομή σε εργασίες περιήγησης και γνώσης. Το περιβάλλον επιτρέπει στον ελεγκτή να συγκρίνει ό,τι άφησε ο πράκτορας με γνωστό σωστό αποτέλεσμα.
Για ενσωμάτωση, το υποκατάστατο μπορεί να προσφέρει λίγες λειτουργίες προορισμού: εμφάνιση πεδίων, δημιουργία επαφής, ενημέρωση επαφής και ανάγνωσή της. Μπορεί να κρατά δοκιμαστικά δεδομένα με δηλωμένο πεδίο FNAME και χωρίς το CUSTOM_TIER. Μια δοκιμή μπορεί να ζητήσει πρόταση αντιστοίχισης και έπειτα να απορρίψει εγγραφή που χρησιμοποιεί CUSTOM_TIER πριν υπάρξει ορισμός.
Το υποκατάστατο είναι χρήσιμο γιατί κάθε εκτέλεση αρχίζει από την ίδια κατάσταση. Μπορείτε να αλλάζετε μία συνθήκη τη φορά: πεδίο που λείπει, απορριφθείσα άδεια, παλιά έκδοση σχήματος, αμφίσημο αναγνωριστικό. Μπορείτε να συγκρίνετε σειρά κλήσεων και τελική κατάσταση ανάμεσα σε μοντέλα ή prompts.
Αυτό είναι ισχυρότερο από ερώτηση κειμένου για το τι ο πράκτορας θα έκανε. Δοκιμάζει τι πραγματικά κάλεσε σε ελεγχόμενο κόσμο.
Δώστε στα δοκιμαστικά δεδομένα κατάσταση πριν και μετά από κάθε κλήση, όχι μόνο έτοιμη απάντηση. Αν ο πράκτορας δημιουργήσει την ίδια επαφή δύο φορές, η δεύτερη κλήση πρέπει να δείχνει τη συμπεριφορά διπλοτύπων που θέλετε να δοκιμάσετε. Αν διαβάσει πεδίο μετά την εγγραφή, η ανάγνωση πρέπει να επιστρέφει την αποθηκευμένη κατάσταση. Αλλιώς μπορεί να περάσει στέλνοντας εύλογο αίτημα χωρίς η δοκιμή να ελέγξει αν η ακολουθία παρήγαγε την επιθυμητή εγγραφή.
Η πιστότητα είναι μέρος της δοκιμής
Η εύλογη αντίρρηση είναι: «Ο προμηθευτής έχει δοκιμαστικό περιβάλλον. Γιατί να χτίσουμε άλλο;» Χρησιμοποιήστε το περιβάλλον προμηθευτή όταν υποστηρίζει την περίπτωση και κρατά τα δεδομένα ασφαλή. Ένα τοπικό υποκατάστατο αξίζει τη θέση του όταν χρειάζεστε επαναφορά στην ίδια κατάσταση, σκόπιμα σφάλματα ή δοκιμή κλήσεων που το περιβάλλον του προμηθευτή δεν επιτρέπει να στηθούν. Έχει όμως κόστος συντήρησης. Κάθε κανόνας που μοντελοποιείται μπορεί να είναι λάθος ή να παλιώσει.
Η επίσημη αναφορά API επαφών του Brevo λέει ότι τα χαρακτηριστικά επαφών πρέπει να υπάρχουν στον λογαριασμό και ότι τιμές με λάθος δηλωμένο τύπο αγνοούνται. Ένα υποκατάστατο που απορρίπτει κάθε λανθασμένη τιμή θα συμπεριφερόταν διαφορετικά από αυτή την τεκμηριωμένη περίπτωση. Μπορεί να διδάξει στον πράκτορα να περιμένει σφάλμα που δεν θα εμφανιστεί.
Καταγράψτε ποιες συμπεριφορές του προμηθευτή καλύπτει το υποκατάστατο. Διατηρήστε λίγες δοκιμές σύμβασης με το πραγματικό API ή το υποστηριζόμενο δοκιμαστικό του περιβάλλον. Όταν βρεθεί διαφορά, ενημερώστε το υποκατάστατο και προσθέστε την περίπτωση που την αποκάλυψε. Η προσομοίωση είναι μοντέλο του προμηθευτή, όχι αντικατάστασή του.
Η ίδια πειθαρχία ισχύει για τον χρόνο. Ένα υποκατάστατο όπου κάθε εγγραφή εμφανίζεται αμέσως μπορεί να χάσει ροή που διαβάζει πολύ νωρίς. Αν καθυστερεί κάθε εγγραφή, μπορεί να επινοήσει σφάλματα που δεν έχει ο προμηθευτής. Μοντελοποιήστε χρόνους μόνο όπου επηρεάζουν την απόφαση που δοκιμάζεται και ονομάστε τα υπόλοιπα εκτός προσομοίωσης. Έτσι η επιτυχημένη δοκιμή έχει ακριβές νόημα: αυτός ο πράκτορας ολοκλήρωσε αυτές τις ενέργειες με αυτούς τους μοντελοποιημένους κανόνες.
Ο οδηγός συνδέσμου Brevo της Tajo περιγράφει το ίδιο πρακτικό πρόβλημα από την πλευρά του εμπόρου: επιτυχημένο αίτημα μπορεί να αφήσει πεδίο άδειο. Η δοκιμή είναι χρήσιμη μόνο αν ελέγξει το πεδίο, όχι μόνο την απάντηση HTTP.
Ο προσομοιωμένος προορισμός δοκιμάζει τον πράκτορα με μοντελοποιημένους κανόνες. Οι δοκιμές σύμβασης τους συγκρίνουν με τον πραγματικό προορισμό πριν από περιορισμένη προεπισκόπηση.
Από την ασφαλή πρόβα στα περιορισμένα πραγματικά στοιχεία
Μια επιτυχημένη προσομοίωση πρέπει να ακολουθείται από μικρή προεπισκόπηση στον πραγματικό προορισμό. Επιλέξτε λίγες εγγραφές με σαφή αναμενόμενη κατάσταση: μία συνηθισμένη, μία χωρίς προαιρετικό πεδίο και μία όπου η συναίνεση απαγορεύει χρήση για μάρκετινγκ. Ελέγξτε τι αποθηκεύει πραγματικά ο προορισμός. Μην συμπεραίνετε το αποτέλεσμα μόνο από το σώμα του αιτήματος.
Η συνθετική προεπισκόπηση και ο έλεγχος προορισμού απαντούν σε διαφορετικά ερωτήματα. Η προεπισκόπηση αντιστοίχισης του Tajo δοκιμάζει τη μετατροπή χωρίς εγγραφές στον προορισμό. Η προτεινόμενη προβολή δραστηριότητας παρακάτω δείχνει το επόμενο όριο: ακόμη και μια εφαρμοσμένη αλλαγή απαιτεί έλεγχο της κατάστασης στον προορισμό. Το τελευταίο βήμα παραμένει σε εκκρεμότητα, ώστε η πρόβα να μην εκληφθεί ως απόδειξη.
Μια ολοκληρωμένη εγγραφή χρειάζεται ακόμη αποδείξεις
Ολοκληρώθηκε ο συγχρονισμός πελατών;
Η εγγραφή εφαρμόστηκε. Η επαλήθευση εκκρεμεί.
Η κατάσταση στον προορισμό δεν έχει ελεγχθεί ακόμη.
Δραστηριότητα συγχρονισμού
- Το αίτημα έγινε δεκτό
- Η αλλαγή εφαρμόστηκε
- Εκκρεμεί έλεγχος προορισμού
Ενδεικτική εκτέλεση · 14:32 UTC
Τι γνωρίζουμε
- Απάντηση παρόχου
- Έγινε δεκτό
- Αποτέλεσμα εγγραφής
- Εφαρμόστηκε
- Επανάγνωση από τον προορισμό
- Σε εκκρεμότητα
Μια επιτυχημένη κλήση δεν αποδεικνύει την τελική κατάσταση.
Προτεινόμενη διάταξη βασισμένη στη ροή δραστηριότητας του Tajo. Η απεικόνιση προσθέτει κατάσταση επαλήθευσης, χωρίς να ισχυρίζεται ότι η επανάγνωση από τον προορισμό έχει ήδη υλοποιηθεί.
Η προεπισκόπηση πρέπει να έχει στενό πεδίο και σαφή συνθήκη διακοπής. Μια αποτυχία πρέπει να εμποδίζει ευρεία ενεργοποίηση και να δείχνει την ακριβή απόκλιση: ορισμό πεδίου, αναγνωριστικό, τύπο, άδεια ή χρονισμό. Μια επιτυχία δεν αποδεικνύει ότι όλες οι μελλοντικές εγγραφές θα φερθούν ίδια, αλλά ότι η σύμβαση δουλεύει για τις επιλεγμένες περιπτώσεις σήμερα.
Η σειρά χωρίζει δύο ερωτήσεις. Η προσομοίωση ρωτά «Ακολουθεί ο πράκτορας τον σχεδιασμένο κανόνα όταν ελέγχουμε τον κόσμο;» Η πραγματική προεπισκόπηση ρωτά «Ταιριάζει ο κανόνας σε αυτόν τον λογαριασμό προμηθευτή;» Καμία δεν υποκαθιστά την άλλη.
Ο οδηγός Reverse ETL εξηγεί γιατί η τελική εργασία επαναλαμβάνεται σε πολλές εγγραφές. Η επανάληψη μεγεθύνει κάθε απόκλιση ανάμεσα στην προσομοιωμένη και την πραγματική σύμβαση.
Κάντε πρόβα σε έναν κόσμο που μπορείτε να επαναφέρετε. Έπειτα εξετάστε τον κόσμο που δεν μπορείτε.
Έχετε Ερωτήσεις; Έχουμε Απαντήσεις
Τι μπορεί να δοκιμάσει ένας προσομοιωμένος προορισμός;
Μπορεί να ελέγξει αν ο πράκτορας επιλέγει τις αναμενόμενες κλήσεις, σέβεται άδειες, χειρίζεται γνωστά σφάλματα και αφήνει την αναμενόμενη κατάσταση μέσα στην προσομοίωση.
Τι δεν μπορεί να αποδείξει;
Δεν μπορεί να αποδείξει ότι το μοντέλο του προμηθευτή είναι πλήρες. Ατεκμηρίωτη συμπεριφορά, χρόνοι και ρυθμίσεις συγκεκριμένου λογαριασμού μπορεί να διαφέρουν.
Τι πρέπει να ακολουθεί μια επιτυχημένη προσομοίωση;
Εκτελέστε περιορισμένη προεπισκόπηση ή μικρή δοκιμή στον πραγματικό προορισμό και εξετάστε την τελική κατάσταση πριν από ευρεία ενεργοποίηση.