Τι είναι το αρνητικό τεστ; Δοκιμαστικές περιπτώσεις με Παράδειγμα

⚡ Έξυπνη Σύνοψη

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

  • ???? Σκοπός: Επιβεβαιώστε ότι η εφαρμογή απορρίπτει πλήρως τα μη έγκυρα δεδομένα αντί να αποτυγχάνει ή να παρουσιάζει σφάλματα.
  • Αντίθεση: Τα θετικά τεστ αποδεικνύουν την ευτυχή πορεία, ενώ τα αρνητικά τεστ διερευνούν οτιδήποτε βρίσκεται έξω από αυτήν.
  • 🛗 Αναλογία: Ένας ανελκυστήρας πρέπει να αντέχει σε υπερφόρτωση, πυρκαγιά και απώλεια ισχύος, όχι μόνο σε κανονικές μετακινήσεις επιβατών.
  • 🔒 Ασφάλεια: Οι μη έγκυρες μεταφορτώσεις και οι προσπάθειες έγχυσης SQL είναι κλασικά σενάρια αρνητικών δοκιμών.
  • 🧪 σχεδιασμού: Οι οριακές τιμές, οι κλάσεις ισοδυναμίας, η εικασία σφαλμάτων και η ασάφεια δημιουργούν τις περιπτώσεις.
  • 📊 Προτεραιότητα: Κατατάξτε τις μη έγκυρες εισόδους με βάση τον αντίκτυπο, επειδή η εξαντλητική αρνητική κάλυψη είναι αβάσταχτη.
  • ⚠️ Ανταλλαγή: Τα υπερβολικά αρνητικά τεστ καταναλώνουν προϋπολογισμό, ο οποίος μπορεί να χρειαστεί περισσότερο για την θετική κάλυψη.

Αρνητικές δοκιμές σε δοκιμές λογισμικού με μη έγκυρα παραδείγματα εισόδου

Αρνητικός έλεγχος

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

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

Παράδειγμα αρνητικού τεστ

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

Οι απαιτήσεις ενός ανελκυστήρα είναι οικείες: πατώντας έναν αριθμό ορόφου, ο ανελκυστήρας στέλνεται σε αυτόν τον όροφο και η πόρτα ανοίγει αυτόματα μόλις ο ανελκυστήρας φτάσει στον καθορισμένο όροφο.

Ορισμένα αρνητικά σενάρια για την ίδια αύξηση παρατίθενται παρακάτω, δίπλα στην υπόθεση που κάνουν αντ' αυτού τα θετικά τεστ.

Αρνητικός έλεγχος Θετικό τεστ
Τι συμβαίνει εάν ο αριθμός των ατόμων (βάρος) υπερβεί το καθορισμένο όριο; Υποθέτει ότι μόνο ο καθορισμένος αριθμός ατόμων θα εισέλθει στον ανελκυστήρα
Τι συμβαίνει εάν κάποιος καπνίσει ή προκαλέσει πυρκαγιά μέσα στον ανελκυστήρα; Υποθέτει ότι δεν θα υπάρχει καπνός ή φωτιά μέσα στον ανελκυστήρα
Τι συμβαίνει εάν υπάρξει διακοπή ρεύματος κατά τη λειτουργία; Υποθέτει ότι δεν θα υπάρξει διακοπή ρεύματος όσο λειτουργεί ο ανελκυστήρας

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

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

Το λογισμικό συμπεριφέρεται με τον ίδιο τρόπο. Ένα αρνητικό τεστ αποκλίνει σκόπιμα από την κανονική διαδικασία λειτουργίας. Σκεφτείτε μια φόρμα εγγραφής.

Αρνητικός έλεγχος Θετικό τεστ
Εισαγάγετε ένα μη έγκυρο αναγνωριστικό ηλεκτρονικού ταχυδρομείου στο πεδίο ηλεκτρονικού ταχυδρομείου Μόνο έγκυρα αναγνωριστικά email εισάγονται σε ένα πεδίο email
Εισαγάγετε έναν μη έγκυρο αριθμό τηλεφώνου, όπως χαρακτήρες, σε ένα πεδίο αριθμού τηλεφώνου Στο πεδίο αριθμών εισάγονται μόνο αριθμοί
Μεταφορτώστε μια εικόνα με μέγεθος εκτός του καθορισμένου ορίου Μόνο εικόνες εντός του καθορισμένου ορίου μεγέθους μεταφορτώνονται
Μεταφόρτωση μη έγκυρων αρχείων, όπως π.χ. XML or SQL αρχεία σε ένα πεδίο μεταφόρτωσης εικόνας Μεταφορτώνονται μόνο έγκυρες μορφές εικόνας όπως .jpg ή .png

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

Γιατί να κάνετε αρνητικό τεστ;

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

Προοπτική οργάνωσης

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

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

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

Προοπτική πελάτη

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

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

Πώς να κάνετε αρνητικό τεστ

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

Η λίστα πιθανών μη έγκυρων εισροών είναι ουσιαστικά ατελείωτη, επομένως οι περιπτώσεις αρνητικών δοκιμών πρέπει να ιεραρχούνται κατά προτεραιότητα. Για ένα πεδίο εικόνας που δέχεται μόνο αρχεία .png, οι υποψήφιες μεταφορτώσεις περιλαμβάνουν .jpeg, .xml, .xls και πολλά άλλα. Ένα αρχείο XML ή SQL έχει πολύ μεγαλύτερο πιθανό αντίκτυπο από ένα .jpeg, επομένως αυτές οι περιπτώσεις εκτελούνται πρώτες. Η κατάταξη των περιπτώσεων με βάση τον αντίκτυπο πριν από την εκτέλεση είναι αυτό που διατηρεί τις αρνητικές δοκιμές προσιτές.

Οι περισσότερες αρνητικές περιπτώσεις δοκιμών προέρχονται από ένα μικρό σύνολο καθιερωμένων τεχνικών σχεδιασμού και όχι από αυτοσχεδιασμό:

  • Οριακές τιμές: ασκήστε τις τιμές αμέσως εκτός ενός έγκυρου εύρους, όπως 0 και 101 για ένα πεδίο που δέχεται τιμές από 1 έως 100.
  • Μη έγκυρες κλάσεις ισοδυναμίας: επιλέξτε έναν εκπρόσωπο από κάθε κατηγορία απορριφθείσας εισόδου, για παράδειγμα γράμματα σε ένα αριθμητικό πεδίο.
  • Σφάλμα κατά την εκτίμηση: Χρησιμοποιήστε την εμπειρία από προηγούμενα ελαττώματα για να στοχεύσετε τις εισόδους που είναι πιο πιθανό να προκαλέσουν σφάλμα σε αυτό το είδος χαρακτηριστικού.
  • Λανθασμένης μορφής και ακατάλληλα δεδομένα: ετικέτες script, τμήματα SQL και υπερμεγέθη ωφέλιμα φορτία που εξετάζουν την επικύρωση και τον χειρισμό ασφάλειας.
  • Δοκιμή Fuzz: δημιουργήστε αυτόματα μεγάλους όγκους τυχαίων ή μεταλλαγμένων δεδομένων εισόδου για να εντοπίσετε ανεξέλεγκτα σφάλματα.
  • Διακοπείσες ροές: ακύρωση, ανανέωση, λήξη χρονικού ορίου ή απώλεια συνδεσιμότητας στη μέση μιας συναλλαγής.

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

Πλεονεκτήματα και μειονεκτήματα των αρνητικών εξετάσεων

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

Πλεονεκτήματα του αρνητικού τεστ

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

Μειονεκτήματα του αρνητικού τεστ

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

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

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

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

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

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

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

Ναι. Οι περιπτώσεις μη έγκυρης εισαγωγής είναι ιδιαίτερα επαναλήψιμες, επομένως ταιριάζουν δοκιμές αυτοματισμού και σουίτες παλινδρόμησης. Τα εργαλεία fuzzing αυτοματοποιούν την παραγωγή τυχαίων εισόδων, ενώ οι ισχυρισμοί ελέγχουν ότι εμφανίζονται μηνύματα επικύρωσης.

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

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

Συνοψίστε αυτήν την ανάρτηση με: