Μετάβαση στο κύριο περιεχόμενο

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

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

Ένας επικεντρωμένος στον κίνδυνο τρόπος για να δοκιμάσετε έκδοση skew σε πελάτες, υπηρεσίες, περιεχόμενο, και τη διαμόρφωση πριν από ένα συνδεδεμένο παιχνίδι ή live-service απελευθέρωση.

Μια έκδοση είναι ένα πλέγμα, όχι ένας αριθμός έκδοσης

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

Ξεκινήστε με την κατονομασία των διαστάσεων της έκδοσης ξεχωριστά. Στο ελάχιστο, εγγραφή client build, backend ή service αναθεώρηση, έκδοση πρωτοκόλλου, σχήμα ή να αποθηκεύσετε την έκδοση, έκδοση καταλόγου περιεχομένου, έκδοση διαμόρφωσης, και κατάσταση μετάβασης. Ορισμένα προϊόντα χρειάζονται επίσης την έκδοση του περιουσιακού στοιχείου-bundle, σύνολο σημαδιών, ικανότητα λειτουργικού συστήματος, cohort λογαριασμού, ή περιοχή. Ο στόχος είναι να μην δημιουργήσετε ένα γιγαντιαίο υπολογιστικό φύλλο για το δικό του καλό.

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

Εγγραφή περιορισμών συμβατότητας και στις δύο κατευθύνσεις

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

Γράψτε κάθε περιορισμό ως σχέση με μια αναμενόμενη συμπεριφορά. Για παράδειγμα: ο πελάτης 5 μπορεί να επικυρώσει κατά της υπηρεσίας 7 μέσω πρωτοκόλλου 2; ο πελάτης 4 μπορεί να διαβάσει τον κατάλογο 10 μόνο όταν τα στοιχεία του τύπου X εξαιρεθούν; εκτός από το σχήμα 3 μπορεί να μεταναστεύσει στο 5 μέσω υποστηριζόμενων ακμών; η διαμόρφωση 12 δεν πρέπει να ενεργοποιήσει ένα χαρακτηριστικό για τους πελάτες κάτω από την κατασκευή 6. Συμπεριλάβετε μια διάθεση για μη υποστηριζόμενους συνδυασμούς: μπλοκ πριν από τη μετάλλαξη, εξυπηρετούν μια συμβατή αναπαράσταση, διαδρομή σε μια απαιτούμενη ενημέρωση, ή να κρατήσει την αλλαγή μέχρι τις παλιές αποχετεύσεις κοόρδων.

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

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

Δημιουργία μήτρας εστιασμένης στον κίνδυνο

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

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

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

Δοκιμάστε τους παλιούς και νέους πελάτες που ζουν μαζί

Η συνύπαρξη είναι μια κανονική κατάσταση rollout. Προσομοίωση ενός παλιού πελάτη που δημιουργεί ή τροποποιεί κατάσταση ενώ ένας νέος πελάτης την διαβάζει, στη συνέχεια αντιστρέφει την εντολή. Δοκιμή επανασυνδέεται, ταυτόχρονα συνεδρίες, διακόπτεται λήψη ενημερώσεων, και ένας χρήστης που ξαναρχίζει σε μια άλλη συσκευή. Για κάθε διαδρομή, προσδιορίστε ποια πλευρά κατέχει έγκυρη ερμηνεία. Ένας πελάτης δεν πρέπει να εφεύρει μια νέα τιμή πεδίου που η υπηρεσία αργότερα αντιμετωπίζει ως αξιόπιστη ακριβώς επειδή και οι δύο ενημερώθηκαν σε μια τοπική δοκιμή.

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

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

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

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

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

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

Αποδείξτε rollback πριν από την κυκλοφορία χρειάζεται

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

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

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

Αποθήκευση των αποδεικτικών στοιχείων στο CI

Εκτέλεση ενός μικρού καπνού συμβατότητας που ορίζεται σε κάθε αλλαγή που αγγίζει τις κοινές συμβάσεις. Εκτέλεση διευρυμένων θραύσματα όταν ο πελάτης, πρωτόκολλο, αποθήκευση, περιεχόμενο, διαμόρφωση, ή αλλαγές κώδικα rollout. Shard από την οικογένεια σενάριο και όχι από τυχαίους συνδυασμούς: ταυτοποίηση και αποκατάσταση συνεδρίας, αγορά και δικαίωμα, μετανάστευση και αποθηκευμένη κατάσταση, απόδοση περιεχομένου, χαρακτηριστικό-gated συμπεριφορά, και rollback. Αυτό διατηρεί τις αποτυχίες νόημα και καθιστά το κόστος μιας νέας διάστασης ορατό.

Η έκθεση CI θα πρέπει να διατηρήσει τον υπό δοκιμή tuple και την ταξινόμηση αποτελεσμάτων. Συμπεριλάβετε την κατασκευή του πελάτη, την αναθεώρηση υπηρεσιών, το πρωτόκολλο, το περιεχόμενο και τις εκδόσεις διαμόρφωσης, fixture ή το σενάριο ID, τον τύπο περιβάλλοντος, και τον πρώτο αποτυχημένο κανόνα συμβατότητας. Αποφύγετε τον λογαριασμό ντάμπινγκ ή την κατάσταση του παίκτη. Όταν ένα σενάριο προσομοιώνεται, την ετικέτα. Όταν ένα σενάριο τρέχει ενάντια σε έναν εκτελέσιμο προσαρμογέα ή το πλαίσιο άμμου, ετικέτα ότι επίσης.

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

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

Πρακτικός κατάλογος ελέγχου

  • Όνομα πελάτη, υπηρεσία, πρωτόκολλο, σχήμα, περιεχόμενο, διαμόρφωση, και διαστάσεις μετανάστευσης ξεχωριστά.
  • Γράψτε υποστηριζόμενες, μεταφρασμένες και απαγορευμένες σχέσεις συμβατότητας με την αναμενόμενη συμπεριφορά.
  • Συμπεριλάβετε παλαιότερα υποστηριζόμενα, νεότερα υποστηριζόμενα, μεταβατικά, και σενάρια σε σχήμα αναστροφής.
  • Προσθέστε το όνομα πολυδιάστατων δοκιμών όπου η κάλυψη κατά ζεύγη είναι ανεπαρκής.
  • Δοκιμάστε παλιούς και νέους πελάτες δημιουργώντας, διαβάζοντας, και επαναλαμβάνοντας κατάσταση πέρα από το ίδιο όριο υπηρεσιών.
  • Αντιμετωπίστε τις αλλαγές καταλόγου και ρύθμισης ως εξαρτήσεις εκτελέσιμης συμβατότητας.
  • Δηλώστε μετατοπίσεις μόνο προς τα εμπρός και παράσχετε ένα κλιμακωτό σχέδιο rollout ή αποκατάστασης.
  • Καταγράψτε κατά πόσον τα αποδεικτικά στοιχεία είναι προσομοιώσιμα, εκτελέσιμα τοπικά, αμμοθυλάκια ή εξωτερικά επαληθευμένα.
  • Διατήρηση της ελάχιστης υπολειπόμενης τιπλ ως αναθεωρημένο σενάριο παλινδρόμησης.

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

Είναι οι δοκιμές κατά ζεύγη αρκετά για συμβατότητα απελευθέρωσης;

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

Πότε πρέπει να μπλοκαριστεί ένας παλιός πελάτης;

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

Μπορεί μια χαρακτηριστική σημαία να λύσει τη συμβατότητα από μόνη της;

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

Τι σημαίνει αυτό για το Persistium;

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

Σχετικό σύστημαΕξερευνήστε το Persistium