Μονάδα 6 / 12

Αυτοματισμός Δοκιμών και Διασφάλιση Ποιότητας

Κέρδη:

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

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

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

Έννοιες: Δοκιμή μονάδων: Δοκιμάζει μια μεμονωμένη συνάρτηση/κλάση μεμονωμένα. Έλεγχος ολοκλήρωσης: Δοκιμές κατά τις οποίες πολλά μέρη συνεργάζονται σωστά. Ισχυρισμός: Μια δήλωση που ελέγχει ότι ένα αποτέλεσμα είναι ίσο με αυτό που αναμενόταν. Αυτή είναι η καρδιά της δοκιμής. Κάλυψη: Πόσο από τον κώδικα εκτελείται από δοκιμές; Η υψηλή κάλυψη δεν εγγυάται την ποιότητα.

Παραγωγή Τεστ με νόημα

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

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

Ολοκληρωμένη προτροπή δημιουργίας τεστ: "Γράψτε μοναδιαίες δοκιμές για την ακόλουθη συνάρτηση "εφαρμογή έκπτωσης(ποσό, κουπόνι)". Έχετε ΤΟΥΛΑΧΙΣΤΟΝ ένα σενάριο στις ακόλουθες κατηγορίες: (1) κανονικό έγκυρο κουπόνι, (2) σημεία διακοπής (0 ποσό, 100% έκπτωση), (3) αρνητικό (μη έγκυρο κουπόνι, αναμενόμενο ποσό CO2). τιμή σε κάθε δοκιμή (όχι απλώς «δούλεψε» Ονομάστε τα τεστ που μπορούν να αναγνωσθούν: [κωδικός]».

Προτροπή εξαγωγής οριακής τιμής: "Εκτελέστε μια ανάλυση οριακής τιμής για τις εισόδους αυτής της συνάρτησης. Για κάθε παράμετρο, εξάγετε τις τιμές "ακριβώς στο όριο", "ακριβώς κάτω από το όριο", "ακριβώς πάνω από το όριο" ως πίνακα. Στη συνέχεια, παραθέστε τα σενάρια δοκιμής που καλύπτουν αυτά τα όρια. Μην γράψετε ακόμα κώδικα: [Ανάλυση].

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

Δοκιμάζοντας το ίδιο το τεστ: Η λογική της μετάλλαξης

Ο πιο πρακτικός τρόπος για να καταλάβετε εάν η δοκιμή που δημιουργείται από AI λειτουργεί πραγματικά είναι να σπάσετε σκόπιμα τον κώδικα (λογική δοκιμής μετάλλαξης). Αντιστρέψτε μια συνθήκη, κάντε ένα σύμβολο + -; Εάν κανένα τεστ δεν γίνει κόκκινο, οι δοκιμές σας δεν διατηρούν αυτή τη συμπεριφορά.

Δοκιμή προτροπής κυνηγιού ευπάθειας: "Πείτε μου ποια πιθανά σφάλματα σε αυτόν τον κώδικα ΜΠΟΡΕΙ ΝΑ ΜΗΝ εντοπίσουν οι ακόλουθες δοκιμές. Προτείνετε 5 μικρές μεταλλάξεις που θα μπορούσαν να γίνουν στον κώδικα (π.χ. >= αντί για >, - αντί για +) και υποδείξτε για καθεμία εάν οι υπάρχουσες δοκιμές θα το εντοπίσουν. Για όσους δεν εντοπίστηκαν, προτείνετε τη δοκιμή που πρέπει να προστεθεί. Κωδικός: [code]"

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

WEAK: "Γράψτε μια δοκιμή σε αυτήν τη συνάρτηση." (Αποτέλεσμα: συνήθως ένα χαρούμενο σενάριο, αδύναμος ισχυρισμός, χάνει σφάλματα.) STRONG: "Γράψτε μια δοκιμή σε αυτήν τη συνάρτηση "passwordStrong". Κανόνας: τουλάχιστον 8 χαρακτήρες, 1 κεφαλαίο γράμμα, απαιτείται 1 ψηφίο. Καλύψτε τα ακόλουθα σενάρια ως ΞΕΧΩΡΙΣΤΕΣ δοκιμές: ακριβώς 8 χαρακτήρες (κάτω γράμματα, χωρίς γράμματα), 7 χαρακτήρες συμβολοσειρά, μόνο κενά, πολύ μεγάλο (1000 χαρακτήρες) Δηλώστε ρητά την αναμενόμενη τιμή true/false σε κάθε δοκιμή και ονομάστε τη δοκιμή σύμφωνα με αυτό που ελέγχει."

Η ισχυρή προτροπή δίνει κανόνες και πλήρη σενάρια ορίων. Τα ζεύγη ορίων όπως "ακριβώς 8 / 7 χαρακτήρες" είναι τα πιο συνηθισμένα σημεία για να κάνετε λάθη (μπερδεμένα > με >=). Το αδύναμο μήνυμα παρακάμπτει αυτά τα όρια και μεταφέρει το σφάλμα στην παραγωγή.

Τύποι δοκιμών και πού να χρησιμοποιηθούν

Τύπος δοκιμής

Τι επιβεβαιώνει;

συνεισφορά AI

Προσοχή

μονάδα

Ενιαία λειτουργία/κλάση

Δημιουργεί πολλά σενάρια γρήγορα

Απαιτείται ισχυρισμός με νόημα

ενσωμάτωσης

Μέρη που συνεργάζονται

Σενάριο και προσχέδιο εικονικών δεδομένων

Αληθινή εθιστική συμπεριφορά

τέλος/αποδέχομαι

Ολόκληρη η ροή χρηστών

Λίστα βημάτων και προσδοκίες

επιρρεπής σε ευθραυστότητα

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

Το παλιό σφάλμα δεν επιστρέφει

Έλεγχος συγκεκριμένου σφάλματος

Θα πρέπει να προστίθεται σε κάθε επιδιόρθωση

Μίνι Θήκες

Περίπτωση 1 — Το τεστ που περνάει πάντα. Το AI γράφει 12 τεστ σε μια συνάρτηση και όλα περνούν. Ο μηχανικός γίνεται ύποπτος και σκόπιμα παραμορφώνει την τιμή επιστροφής της συνάρτησης. Μόνο 3 από τα τεστ γίνονται κόκκινα. Τα άλλα 9 τεστ δεν περιέχουν αξιόλογους ισχυρισμούς. Οι δοκιμές ενισχύονται με το κυνήγι μεταλλάξεων. Η πραγματική προστασία επιτυγχάνεται σε 9 σενάρια.

Περίπτωση 2 — Σφάλμα ορίου. Μια συνάρτηση επαλήθευσης ηλικίας θα πρέπει να λέει "18 και άνω είναι έγκυρη", αλλά γράφεται >18, που σημαίνει ότι η ηλικία 18 απορρίπτεται. Το σφάλμα εμφανίζεται αμέσως στη δοκιμή, επειδή το AI δημιουργεί το σενάριο «ακριβώς 18» μέσω ανάλυσης σημείου διακοπής. Μια δοκιμή ενιαίου ορίου αποτρέπει τυχόν πραγματικές καταγγελίες χρηστών.

Περίπτωση 3 — Διόρθωση της τρέχουσας συμπεριφοράς. Όταν το AI λέγεται να "γράψει μια δοκιμή με βάση αυτόν τον κωδικό", παράγει μια δοκιμή που δέχεται ως "σωστό" ένα σφάλμα στρογγυλοποίησης που υπάρχει ήδη στον κώδικα. Όταν ο μηχανικός εκτυπώνει τη δοκιμή σύμφωνα με την απαίτηση (αναμενόμενη σωστή τιμή) και όχι τον κωδικό, η δοκιμή γίνεται κόκκινο και εμφανίζεται το πραγματικό σφάλμα. Οι δοκιμές πρέπει να προέρχονται από προσδοκίες, όχι από κώδικα.

Συνήθη λάθη

  • Ανούσιος ισχυρισμός. Το "Δεν έριξα ένα σφάλμα" δεν είναι αρκετό. Η σωστή τιμή πρέπει να επαληθευτεί.
  • Συγχέοντας το πεδίο εφαρμογής με την ποιότητα. Η υψηλή κάλυψη δεν αποτελεί εγγύηση για ακριβή αποτελέσματα.
  • Εκτύπωση του τεστ με κωδικό. Διορθώνει το τρέχον σφάλμα σε "true". Οι δοκιμές πρέπει να προέρχονται από τις προσδοκίες.
  • Παράλειψη οριακών τιμών. Η σύγχυση > με >= είναι το πιο συνηθισμένο λάθος. Τα ζεύγη ορίων πρέπει να ελέγχονται.
  • Όχι έλεγχος του ίδιου του τεστ. Μια δοκιμή που δεν γίνεται κόκκινο όταν σπάτε τον κωδικό δεν παρέχει προστασία.

Συνοπτικά

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

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

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

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

  • [ ] Εκτύπωσα τις δοκιμές με βάση την αναμενόμενη/σωστή συμπεριφορά, όχι τον κωδικό.
  • [ ] Κάλυψα σενάρια κανονικών, ορίων, αρνητικών και σφαλμάτων.
  • [ ] Υποστήριξα τη συγκεκριμένη αναμενόμενη τιμή σε κάθε δοκιμή.
  • [ ] Δοκίμασα ζεύγη περιγράμματος (λίγο πάνω-κάτω / ακριβώς πάνω-κάτω).
  • [ ] Παραβιάζοντας σκόπιμα τον κωδικό, επιβεβαίωσα ότι τα τεστ έγιναν κόκκινα.
  • [ ] Πρόσθεσα ένα νέο τεστ για μη ανιχνεύσιμες μεταλλάξεις.