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

Όταν δημιουργείτε πολύπλοκα κομμάτια λογισμικού, ανεξάρτητα από τη γλώσσα, αρχίζετε να παρατηρείτε ένα μοτίβο στις δοκιμαστικές σας συνήθειες. Τα ίδια παρόμοια ζητήματα θα προκύψουν σε διαφορετικές πλατφόρμες ή έργα. Ανεξάρτητα από το αν δημιουργείτε ένα άλλο απλό demo λίστας υποχρεώσεων για μια ομιλία ή δημιουργείτε ένα ολοκληρωμένο back-end για μια εκκίνηση PaaS, αρχίζουν να εμφανίζονται τα ίδια γενικά μοτίβα.

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

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

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

Οι έξι δοκιμές έχουν ως εξής:

  • Μηδέν
  • Ενας
  • Δύο
  • Δύο έως max-1
  • Μέγιστη
  • μέγιστο + 1

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

Μηδέν

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

Ενας

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

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

Δύο

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

Εάν κάποιος έπρεπε να υποβάλει ένα αίτημα ΔΙΑΓΡΑΦΗ HTTP δύο φορές στη σειρά στον ίδιο πόρο, τι θα συμβεί; Εάν η συνάρτηση ταξινόμησης με προσαρμοσμένο συγκριτή καλείται δύο φορές στη σειρά, συμπεριφέρεται όπως αναμένεται;

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

Καταλήγει σε τροποποιήσεις της κατάστασης και στην κατανόηση της συμπεριφοράς μιας συνάρτησης. Εάν το μόνο που έχουμε είναι το όνομα της συνάρτησης, τότε αυτός ο κωδικός συμπεριφέρεται ακριβώς όπως αναμενόταν. Έχετε μια μεταβλητή που ονομάζεται 0, καλείτε τη συνάρτηση setVarToOne και στη συνέχεια δηλώνετε ότι είναι ίση με μία.

Με την πρώτη ματιά, αυτό συμπεριφέρθηκε ακριβώς όπως αναμενόταν. Ωστόσο, το να το δοκιμάσουμε με την ιδέα του Two θα τονίσει βαθύτερα ζητήματα με τον κώδικα. Θα το δοκιμάζατε κάνοντάς το δύο φορές και ισχυρίζονταν ότι και στις δύο περιπτώσεις, το mVar ισούται με 1.

Δύο έως max-1

Δύο έως το μέγιστο 1 είναι ο έλεγχος υγιεινής. Είναι πολύ παρόμοιο με το One test, αλλά υπάρχει μια λεπτή διαφορά. Αυτό θα πρέπει να είναι μια μέση περίπτωση χρήσης - όχι η απλούστερη ή πιο απλή, ή η ευκολότερη ανάγνωση. Απλώς μια μέση περίπτωση χρήσης που ίσως δεν είναι ιδιαίτερα απλή, αλλά αυτό είναι αρκετά κοινό .

Μέγιστη

Το Max είναι αρκετά απλό: απλά ελέγχει τα όρια της εφαρμογής σας, ειδικά γύρω από καθορισμένες μέγιστες σταθερές.

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

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

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

Μέγιστο + 1

Το Max + 1 είναι μια δοκιμή που χρησιμοποιείται ως επί το πλείστον για την επαλήθευση των προτύπων ή των κανόνων που εφαρμόζει ο προγραμματιστής. Αυτό περιλαμβάνει τη δοκιμή οτιδήποτε στο θεωρητικό του όριο + epsilon.

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

Εάν έχετε μέγιστο μέγεθος μεταφόρτωσης αρχείου 2mb, δοκιμάστε να ανεβάσετε ένα αρχείο με μέγεθος 2mb + 1b. Εάν έχετε όριο στον αριθμό καταχωρίσεων σε έναν κατάλογο χρηστών, βεβαιωθείτε ότι η επαλήθευση πραγματοποιείται τόσο από την πλευρά του πελάτη όσο και από τοπλευρά του διακομιστή.

συμπέρασμα

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

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