Τι είναι το αρνητικό τεστ; Δοκιμαστικές περιπτώσεις με Παράδειγμα
Αρνητικός έλεγχος
Αρνητικός έλεγχος είναι ένας τύπος δοκιμής λογισμικού που χρησιμοποιείται για τον έλεγχο της εφαρμογής λογισμικού για μη αναμενόμενα δεδομένα εισόδου και συνθήκες. Τα απροσδόκητα δεδομένα ή συνθήκες μπορεί να είναι οτιδήποτε, από λάθος τύπο δεδομένων έως ισχυρή επίθεση hacking. Ο σκοπός της αρνητικής δοκιμής είναι να αποτρέψει τη συντριβή της εφαρμογής λογισμικού λόγω αρνητικών εισόδων και να βελτιώσει την ποιότητα και τη σταθερότητα.
Κάνοντας απλώς θετικές δοκιμές μπορούμε μόνο να βεβαιωθούμε ότι το σύστημά μας λειτουργεί υπό κανονικές συνθήκες. Πρέπει να βεβαιωθούμε ότι το σύστημά μας μπορεί να χειριστεί απροσδόκητες συνθήκες για να διασφαλίσουμε ένα σύστημα 100% χωρίς σφάλματα.
Παράδειγμα αρνητικού τεστ
Εξετάστε την περίπτωση ενός ανελκυστήρα που είναι ένα κοινώς θεωρούμενο παράδειγμα αρνητικού ελέγχου.
Όλοι γνωρίζουμε τη λειτουργικότητα ενός ανελκυστήρα. Αυτά θα θεωρηθούν ότι οι απαιτήσεις ενός ανελκυστήρα, όπως το πάτημα του αριθμού ορόφου, κάνουν τον ανελκυστήρα να πάει στον συγκεκριμένο όροφο.
Η πόρτα ανοίγει αυτόματα μόλις ο ανελκυστήρας φτάσει στον καθορισμένο όροφο και ούτω καθεξής.
Ας εξετάσουμε τώρα μερικά αρνητικά σενάρια για ανύψωση. Κάποιοι από αυτούς είναι,
Αρνητικός έλεγχος | Θετικό τεστ |
---|---|
Τι συμβαίνει εάν ο αριθμός των ατόμων (βάρος) υπερβεί το καθορισμένο όριο; | Υποθέτει ότι ο μόνος καθορισμένος αριθμός ατόμων θα εισέλθει στον ανελκυστήρα |
Τι συμβαίνει εάν κάποιος καπνίσει ή προκαλέσει φωτιά μέσα στον ανελκυστήρα; | Δεν θα υπάρχει καπνός ή φωτιά μέσα στον ανελκυστήρα |
Τι συμβαίνει εάν υπάρξει διακοπή ρεύματος κατά τη λειτουργία; | Δεν θα υπάρξει διακοπή ρεύματος κατά τη λειτουργία του ανελκυστήρα |
Όλες αυτές οι περιπτώσεις θα υποβληθούν σε αρνητικό έλεγχο. Η σημασία αυτού είναι ότι δεν μπορούμε να βεβαιωθούμε ότι όλα τα προαναφερθέντα δεν θα συμβούν, επομένως χρειαζόμαστε να τα περιορίσουμε.
Σκεφτείτε την περίπτωση που ελέγχεται η κατάσταση υπέρβαρου και κατά την εφαρμογή, η ανύψωση δεν λειτουργεί φυσιολογικά όταν υπάρχει κατάσταση υπέρβαρου. Αυτό θα έχει πιθανό αντίκτυπο στην αξιοπιστία του συστήματος και μπορεί να προκαλέσει ακόμη και κίνδυνο για τη ζωή. Αυτό εξηγεί τι είναι το αρνητικό τεστ και τη σημασία του.
Η ίδια περίπτωση ισχύει και στο λογισμικό. Για αρνητικό τεστ, έχουμε παρεκκλίνει από την κανονική λειτουργική διαδικασία. Ας δούμε μερικά παραδείγματα.
Εξετάστε για παράδειγμα μια φόρμα εγγραφής.
Αρνητικός έλεγχος | Θετικό τεστ |
---|---|
Προσπαθήστε να εισαγάγετε ένα μη έγκυρο αναγνωριστικό email στο πεδίο email | Μόνο έγκυρα αναγνωριστικά email θα εισαχθούν σε ένα πεδίο email |
Προσπαθήστε να εισαγάγετε έναν μη έγκυρο αριθμό τηλεφώνου σε ένα πεδίο αριθμού τηλεφώνου (χαρακτήρες) | Ο μόνος αριθμός θα εισαχθεί στο πεδίο αριθμών |
Μεταφόρτωση εικόνας με μέγεθος εκτός καθορισμένου ορίου | Θα μεταφορτωθούν μόνο εικόνες με μέγεθος κάτω από καθορισμένο όριο |
Μεταφόρτωση μη έγκυρων αρχείων όπως XMLαρχεία , SQL κ.λπ. στο πεδίο μεταφόρτωσης εικόνων | Μεταφορτώστε μόνο έγκυρες μορφές εικόνας όπως jpg.png κ.λπ. |
Όπως είπαμε νωρίτερα, πρέπει να βεβαιωθούμε ότι σε όλες αυτές τις αρνητικές περιπτώσεις το σύστημά μας θα λειτουργεί σωστά. Εξετάστε την περίπτωση εάν κάποιος προσπαθήσει να εισαγάγει έναν χαρακτήρα στο πεδίο αριθμών και το σύστημα δεν μπορεί να επεξεργαστεί τα απροσδόκητα δεδομένα, καθώς αναμένει έναν αριθμό και τελικά, το σύστημα κολλάει. Ή τι γίνεται αν κάποιος προσπαθήσει να κάνει ένα SQL injection και να διαγράψουμε όλα τα δεδομένα μας από τη βάση δεδομένων. Δεν αντέχουμε τέτοιες πιθανές απώλειες. Επομένως, το αρνητικό τεστ είναι σημαντικό.
Γιατί να κάνετε αρνητικό τεστ;
Δεδομένου ότι η δοκιμή είναι εργασία που απαιτεί χρόνο και κόστος, είναι πολύ σημαντικό να αποφασίσετε «τι», «πώς» και «πόσο» να δοκιμάσετε. Πρέπει να επιλέξουμε με σύνεση αν πρέπει να κάνουμε αρνητικό τεστ στο σύστημά μας ή όχι. Ας ρίξουμε λοιπόν μια ματιά στη σημασία του αρνητικού τεστ.
Προοπτική οργάνωσης
Είναι ευθύνη του οργανισμού να παρέχει ένα προϊόν καλής ποιότητας στον πελάτη του. Για να επιτευχθεί αυτό, πρέπει κανείς να κάνει αρνητικό τεστ.
Ως μέρος της επιβεβαίωσης έναντι μιας αποτυχίας, ένας οργανισμός πρέπει να κάνει αρνητικό τεστ.
Ίσως δεν μπορούμε να δημιουργήσουμε ένα σύστημα 100% χωρίς σφάλματα, αλλά πρέπει να βεβαιωθούμε ότι έχουμε κάνει τα πάντα για να αποτρέψουμε μια αποτυχία, προκειμένου να το πετύχουμε αυτό θα πρέπει να κάνουμε αρνητικό τεστ.
Ο αντίκτυπος είναι ένας παράγοντας που πρέπει να λάβουμε υπόψη. Σκεφτείτε ότι έχουμε κάνει θετικές δοκιμές σε έναν ιστότοπο ηλεκτρονικού εμπορίου και βεβαιωθείτε ότι όλα είναι καλά. Τι γίνεται όμως αν υπάρχει ένα κενό στο σύστημά μας ότι κάποιος μπορεί να κάνει SQL injection και να διαγράψει όλα τα δεδομένα μας. Αυτό θα είναι μια μεγάλη παραβίαση ασφάλειας. Για να αποφύγετε αυτό το είδος περιπτώσεων, πρέπει να κάνετε και αρνητικό τεστ.
Για εφαρμογές ανοιχτές για κοινό, κυρίως ιστότοπους, πρέπει να έχουμε πάντα υπόψη μας ότι δεν ελέγχουμε πολύ τη διαδικασία χρήσης της εφαρμογής, επομένως πρέπει να κάνουμε αρνητικό έλεγχο για να βεβαιωθούμε ότι όλες αυτές οι περιπτώσεις καλύπτονται και περιορίζονται.
Ένα άλλο πράγμα που πρέπει να προσέξουμε είναι ότι υπάρχουν πολλοί μαύροι χάκερ εκεί έξω που αναζητούν μια ευκαιρία να καταστρέψουν το σύστημα. Το hacking είναι μια σημαντική περίπτωση που καλύπτεται από αρνητικές δοκιμές
Προοπτική πελάτη
Οι πελάτες αναμένουν πάντα προϊόντα μηδενικής ευπάθειας, προκειμένου να διασφαλίσουν ότι η αρνητική δοκιμή είναι απαραίτητη
Εάν πρόκειται για ένα ευαίσθητο προϊόν όπως το ηλεκτρονικό εμπόριο, το ηλεκτρονικό απόθεμα κ.λπ., τότε η ασφάλεια και οι αρνητικές δοκιμές είναι απαραίτητες.
Η μόνη ανησυχία για τον πελάτη σχετικά με το αρνητικό τεστ είναι ότι το κόστος. Αλλά μόλις αναλυθεί ο αντίκτυπος, εναπόκειται στον πελάτη να αποφασίσει αν θα κάνει ή όχι αρνητικό τεστ.
Πώς να κάνετε αρνητικό τεστ
Για να κάνουμε αρνητικό τεστ πρέπει να εξετάσουμε όλες τις πιθανές περιπτώσεις. Αυτό είναι αν είναι δυνατόν θα πρέπει να το εξετάσουμε στο Δοκιμαστική θήκη ανεξάρτητα από το αν δεν είναι ο σωστός τρόπος χρήσης. Για παράδειγμα, αν δούμε ένα πεδίο email σκεφτείτε όλες τις πιθανές εισόδους που μπορούμε να βάλουμε εκεί εκτός από τη σωστή μορφή email. Με τον ίδιο τρόπο, όταν βλέπουμε μια επιλογή μεταφόρτωσης εικόνας, πρέπει να τη δοκιμάσουμε με όλα τα πιθανά αρχεία.
Ενώ δημιουργούμε αρνητικές περιπτώσεις δοκιμών, πρέπει να δώσουμε προτεραιότητα στις εισροές, διαφορετικά θα υπάρξουν πολλές πιθανές περιπτώσεις. Για παράδειγμα, για ένα πεδίο εικόνας όπου υποτίθεται ότι εισάγονται μόνο αρχεία '.png' μπορούμε να έχουμε πολλές επιλογές για μεταφόρτωση όπως 'jpeg', 'xml', 'xls' κ.λπ.. Επομένως, πρέπει να δώσουμε προτεραιότητα στις επιλογές όπως XML και SQL μπορεί να έχει μεγαλύτερο αντίκτυπο από αυτό των jpeg και xls, επομένως θα πρέπει να φροντίσουμε πρώτα τις περιπτώσεις SQL και XML. Όπως αυτό, πρέπει να ιεραρχήσουμε τις περιπτώσεις πριν από την εκτέλεση για να εξοικονομήσουμε χρόνο και κόστος δοκιμής.
Πλεονεκτήματα και μειονεκτήματα του αρνητικού τεστ
Όπως όλες οι άλλες τεχνικές δοκιμών, υπάρχουν πλεονεκτήματα και μειονεκτήματα για τις αρνητικές δοκιμές που βασίζονται κυρίως στο «πού», «πότε» και «πώς» να χρησιμοποιείται. Ας ρίξουμε μια ματιά σε αυτό.
Πλεονεκτήματα του αρνητικού τεστ
- Όπως όλοι γνωρίζουμε οι αρνητικές δοκιμές είναι πολύ σημαντικές για τη διασφάλιση της ποιότητας ενός προϊόντος. Ένα προϊόν καλής ποιότητας είναι ένα προϊόν μηδενικής ευπάθειας, για να διασφαλιστεί ότι η αρνητική δοκιμή είναι πολύ σημαντική.
- Κάνοντας αρνητικό τεστ διασφαλίζετε ότι καλύπτονται όλες οι πιθανές περιπτώσεις. Εκούσια ή ακούσια υπάρχει πιθανότητα να εμφανιστούν αρνητικά κρούσματα τεστ. Για να βεβαιωθούμε λοιπόν ότι καλύπτονται όλες οι περιπτώσεις, πρέπει να κάνουμε αρνητικό τεστ μαζί με θετικό τεστ.
- Οι αρνητικές δοκιμές θα ενισχύσουν την εμπιστοσύνη στον πελάτη πριν βγουν ζωντανά.
Μειονεκτήματα του αρνητικού τεστ
- Στη Μηχανική Λογισμικού, οι αρνητικές δοκιμές σε ορισμένες περιπτώσεις γίνονται χάσιμο χρόνου και ενέργειας. Σε πολλές περιπτώσεις, δεν υπάρχει ανάγκη για υπερβολικό αρνητικό τεστ. Για παράδειγμα, εάν μια εφαρμογή έχει δημιουργηθεί για χρήση από ένα άτομο, τότε δεν χρειάζεται να εξετάσουμε την περίπτωση που 100 χρήστες χρησιμοποιούν το σύστημα τη φορά. Επομένως, ο καθορισμός των συνθηκών σε περιπτώσεις αρνητικών τεστ είναι πολύ σημαντικός. Θα υπάρξουν στιγμές που δεν χρειάζεται να κάνουμε αρνητικό τεστ σε ένα συγκεκριμένο σύστημα.
- Απαιτήστε ειδικευμένους και έμπειρους ανθρώπους για να δημιουργήσουν αρνητικές περιπτώσεις.
- Για τον πελάτη, ο αρνητικός έλεγχος είναι ένα άλλο πράγμα που προκαλεί άσκοπη καθυστέρηση στην έκδοση και τον αθροιστή κόστους.
- Μια πιθανότητα μια ομάδα να ξοδεύει περισσότερο χρόνο και ενέργεια σε αρνητικά τεστ. Υπάρχει πιθανότητα οι δοκιμαστές να ξοδεύουν πολύ χρόνο και ενέργεια σε αρνητικές δοκιμές που έχουν ως αποτέλεσμα χαμηλότερη συγκέντρωση στη θετική δοκιμή.