Μονάδα 6 / 12

Εντοπισμός σφαλμάτων και ανάλυση ριζικών αιτιών

Κέρδη:

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

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

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

Γιατί η απόδειξη είναι το παν;

Ένα LLM δεν βλέπει το σφάλμα με τον τρόπο που βλέπετε. Ξέρει μόνο τι του λες. Μια πρόταση όπως «Η εφαρμογή κολλάει» δεν δίνει στο μοντέλο σχεδόν καμία πληροφορία και το μοντέλο καλύπτει το κενό με μια πρόβλεψη — δηλαδή μια ψευδαίσθηση. Με τη σειρά του, το πλήρες μήνυμα σφάλματος, ίχνος στοίβας — μια ανάλυση της οποίας η συνάρτηση καλεί το σφάλμα που προέκυψε, η είσοδος που προκάλεσε το σφάλμα και τι αναμενόταν, κ.λπ. Δεδομένης της παρατηρούμενης συμπεριφοράς, το μοντέλο μπορεί να ταξινομήσει τις πραγματικές πιθανότητες.

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

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

Βήμα προς βήμα: Ροή ανάλυσης ριζικής αιτίας

  1. Διευκρινίστε το σύμπτωμα. «Τι συμβαίνει, τι περίμενες να συμβεί;» Γράψε τα δύο σε μια πρόταση.
  2. Συγκεντρώστε στοιχεία. Πλήρες μήνυμα σφάλματος, ίχνος στοίβας, σχετικές γραμμές καταγραφής, καταχώρηση ενεργοποίησης, πληροφορίες έκδοσης.
  3. Δημιουργήστε την υπόθεση. Από την AI "3 πιθανές αιτίες που εξηγούν αυτό το σύμπτωμα και πώς μπορώ να δοκιμάσω για καθεμία;" παρακαλώ.
  4. Δοκιμάστε πρώτα τη φθηνότερη υπόθεση. Προσθέστε ένα αρχείο καταγραφής, εκτυπώστε μια τιμή, εκτελέστε μια δοκιμή. Επιβεβαιώνουν τα στοιχεία την υπόθεση;
  5. Διορθώστε τη βασική αιτία, όχι το σύμπτωμα. Αντί να αποσιωπήσετε το σύμπτωμα με ένα έμπλαστρο, αντιμετωπίστε τη βασική αιτία.
  6. Επικύρωση και προσθήκη δοκιμής παλινδρόμησης. Δείτε το σφάλμα να εξαφανίζεται. Στη συνέχεια, γράψτε μια δοκιμή που θα εντοπίσει αυτό το σφάλμα για να μην επανέλθει.

Τρεις Μίνι Θήκες

Περίπτωση 1 — Το ίχνος στοίβας οδήγησε στο σωστό αρχείο. Μια εφαρμογή επέστρεφε ένα σφάλμα 500 σε ορισμένα αιτήματα. Ο προγραμματιστής έδωσε το πλήρες stack trace και το αίτημα ενεργοποίησης στο AI. Το μοντέλο υπέθεσε ότι το σφάλμα προκλήθηκε από μια τιμή None σε ένα επίπεδο ανάλυσης ημερομηνίας. Ο προγραμματιστής πρόσθεσε ένα αρχείο καταγραφής σε αυτήν τη γραμμή, το επαλήθευσε και το έλυσε σε 15 λεπτά. Χάθηκαν 2 ώρες την προηγούμενη μέρα με μη αποδεδειγμένα πειράματα.

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

Περίπτωση 3 — Εντοπίστηκε ξεφλουδισμένο σφάλμα. Υπήρχε ένα τεστ που κατά καιρούς απέτυχε. Στο AI δόθηκε ο κωδικός δοκιμής, το μήνυμα αποτυχίας και οι πληροφορίες "μερικές φορές περνάει, μερικές φορές αποτυγχάνει". το μοντέλο έδειξε μια κοινή εξάρτηση χρόνου/παραγγελίας των δοκιμών. Η ανασκόπηση επιβεβαίωσε ότι η δοκιμή βασίστηκε στην τοπική ώρα του συστήματος. Μόλις το ρολόι διορθώθηκε (χλευάστηκε), το τεστ έγινε σταθερό.

Τέσσερα αντιγράψιμα πρότυπα

Δημιουργία υποθέσεων με βάση στοιχεία:

Διορθώνω ένα σφάλμα. Αποδεικτικά στοιχεία παρακάτω.- Αναμενόμενη συμπεριφορά: {{αναμενόμενη}}- Παρατηρούμενη συμπεριφορά: {{παρατηρήθηκε}}- Μήνυμα σφάλματος / ίχνος στοίβας: {{trace}}- Είσοδος ενεργοποίησης: {{input}}- Περιβάλλον/έκδοση: {{έκδοση}}Αναφέρετε τις 3 ΠΙΘΑΝΟΤΕΡΑ βασικές αιτίες που εξηγούν αυτό το σύμπτωμα. Για καθένα: πώς μπορώ να δοκιμάσω (φθηνότερος έλεγχος) και πώς να το διορθώσω εάν είναι αλήθεια. Εάν τα στοιχεία είναι ανεπαρκή, πείτε μου ποιες πρόσθετες πληροφορίες χρειάζεστε.

Ερμηνεία του ίχνους στοίβας:

Διαβάστε αυτό το ίχνος στοίβας. Διακρίνετε μεταξύ ποιας γραμμής ξεκινάει ΠΙΘΑΝΟΝ το σφάλμα (η ρίζα) και ποιες γραμμές είναι απλώς η συνέχεια της αλυσίδας. Προτείνετε 1-2 μέρη για να ψάξετε πρώτα. Σχετικός κώδικας:{{code}}Trace:{{trace}}

Ελάχιστη αφαίρεση επανάληψης:

Ο παρακάτω κώδικας παράγει ένα σφάλμα. Μειώστε το στην ΜΙΚΡΟΤΕΡΗ εμφάνιση που εξακολουθεί να προκαλεί το σφάλμα, αλλά απορρίπτει οτιδήποτε περιττό. Μην υποθέτετε ότι κάθε κομμάτι που αφαιρείτε δεν επηρεάζει το σφάλμα, αλλά προσθέστε μια σημείωση που λέει "εάν το σφάλμα εξαφανιστεί όταν το αφαιρέσετε, γι' αυτό".{{code}}

Έλεγχος επικύρωσης και παλινδρόμησης μετά τη διόρθωση:

Ας υποθέσουμε ότι η βασική αιτία είναι {{αιτία}} και κάνω την ακόλουθη διόρθωση: {{διόρθωση}}.1) Διορθώνει όντως αυτό το σύμπτωμα, θα έχει παρενέργειες; 2) Γράψτε μια δοκιμή παλινδρόμησης που θα εντοπίσει αυτό το σφάλμα στο μέλλον.

Αδύναμη προτροπή / Ισχυρή προτροπή

Αδύναμος: "Ο κωδικός δεν λειτουργεί, γιατί;"
Ισχυρή: "Κόμβος 20 / Express. Η POST / orders επιστρέφει 500 όταν τα στοιχεία είναι μια κενή συμβολοσειρά στο σώμα. Θα έπρεπε να είχε επιστρέψει 400. Ίχνη στοίβας: TypeError: Δεν είναι δυνατή η ανάγνωση των ιδιοτήτων του undefined (ανάγνωση '0') — επισυνάπτεται το πλήρες ίχνος και ο σχετικός χειριστής. Δώστε μου τους 3 πιο πιθανούς κωδικούς symp και εξηγήστε πώς να το δοκιμάσω.

Ισχυρή έκδοση. Δίνει το περιβάλλον, το τελικό σημείο, την είσοδο ενεργοποίησης, τον ακριβή τύπο σφάλματος και την αναμενόμενη συμπεριφορά. Το μοντέλο δεν μπορεί πλέον να κάνει προβλέψεις, αλλά ανάλυση.

βήμα

συνεισφορά του AI

τον έλεγχό σας

συλλογή αποδεικτικών στοιχείων

Τι στοιχεία χρειάζονται, υπενθυμίζει

Πραγματικά συλλέγει στοιχεία

δημιουργία υποθέσεων

Αναφέρετε πιθανούς λόγους

Δίνει προτεραιότητα με βάση το πλαίσιο

δοκιμή υποθέσεων

Συνιστά τη μέθοδο δοκιμής

Λειτουργεί και παρατηρεί προσωπικά

διόρθωση

το patch συνιστά

Λύνει τη βασική αιτία; Είναι αλήθεια.

παλινδρόμηση

γράφει ένα τεστ

Επαληθεύει ότι το τεστ έχει χαλάσει

Επίλυση της βασικής αιτίας, όχι του συμπτώματος

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

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

Συνήθη λάθη

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

Συνοπτικά

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

Εργασία εφαρμογής

Επιλέξτε ένα πραγματικό σφάλμα που αντιμετωπίσατε πρόσφατα (ή αναπαράγετε ένα δοκιμαστικό σφάλμα). Κάντε πρώτα το βήμα "ελάχιστης αναπαραγωγής". Καταργήστε τον μικρότερο κωδικό και είσοδο που προκαλεί το σφάλμα. Στη συνέχεια, λάβετε 3 πιθανές αιτίες και μεθόδους δοκιμής από την τεχνητή νοημοσύνη με το πρότυπο «δημιουργία υποθέσεων βάσει αποδεικτικών στοιχείων». Δοκιμάστε μόνοι σας τη φθηνότερη υπόθεση, βρείτε τη βασική αιτία, διορθώστε την και, τέλος, γράψτε μια δοκιμή παλινδρόμησης που θα εντοπίσει αυτό το σφάλμα στο μέλλον και θα επαληθεύσει ότι το τεστ είναι πραγματικά χαλασμένο.

λίστα ελέγχου

  • [ ] Μειώνω το σφάλμα στο μικρότερο αναπαραγώγιμο δείγμα πριν το μετακινήσω στο AI.
  • [ ] Προσθέτω το πλήρες μήνυμα σφάλματος, το ίχνος στοίβας, την είσοδο και την αναμενόμενη συμπεριφορά στο μήνυμα.
  • [ ] Ξεκινάω με το φθηνότερο ελεγχόμενο, χωρίς να εγκλωβίζομαι σε μία μόνο υπόθεση.
  • [ ] Επαληθεύω ότι έχω επιλύσει τη βασική αιτία αντί να επιδιορθώνω το σύμπτωμα.
  • [ ] Παρατηρώ ότι η επιδιόρθωση διορθώνει πραγματικά το σφάλμα.
  • [ ] Προσθέτω μια δοκιμή παλινδρόμησης για κάθε σφάλμα που επιλύεται.