Τι είναι οι Καταστροφικές Δοκιμές στο Λογισμικό;

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

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

  • 💥 Βασική ιδέα: Η εφαρμογή έχει σχεδιαστεί για να αποτυγχάνει σκόπιμα, έτσι ώστε τα σημεία αποτυχίας της να γίνονται ορατά και μετρήσιμα.
  • 🔎 Δεν απαιτούνται απαιτήσεις: Η προηγούμενη γνώση της προδιαγραφής είναι προαιρετική, αν και βελτιώνει τη στρατηγική της δοκιμής.
  • Αντίθετο ζεύγος: Οι μη καταστροφικές δοκιμές ακολουθούν την ευτυχή πορεία. Οι καταστροφικές δοκιμές τις επιτίθενται από κάθε λάθος οπτική γωνία.
  • 🧰 Προσεγγίσεις: Ανάλυση σημείων αποτυχίας, αξιολόγηση από ομοτίμους ελεγκτές, επιχειρηματική αξιολόγηση και διερευνητικές εκτελέσεις με φύλλα εκτέλεσης.
  • 🧪 Επαναχρησιμοποιούμενες μέθοδοι: Η παλινδρόμηση, η διεπαφή, η διαμέριση ισοδυναμίας, ο βρόχος και ο έλεγχος αποδοχής εξυπηρετούν όλα καταστροφικούς στόχους.
  • 📉 Ειλικρινή όρια: Η κάλυψη είναι δύσκολο να εγγυηθεί, η προσπάθεια είναι μεγάλη και τα ευρήματα μπορεί να είναι δύσκολο να αναπαραχθούν.

Τι είναι οι καταστροφικές δοκιμές σε λογισμικό με μεθόδους και τεχνικές;

Τι είναι ο καταστροφικός έλεγχος;

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

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

Η παρακάτω εικόνα αποτυπώνει την ιδέα — ο δοκιμαστής εργάζεται εναντίον του προϊόντος και όχι με αυτό.

Έννοια καταστροφικών δοκιμών: μια εφαρμογή που ωθείται σκόπιμα στο σημείο αποτυχίας

Γιατί να κάνετε καταστροφικές δοκιμές;

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

Καταστροφικές δοκιμές έναντι μη καταστροφικών δοκιμών

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

Άποψη Καταστροφικές δοκιμές Μη καταστρεπτική δοκιμή
Πρόθεση Αναγκάστε την εφαρμογή να αποτύχει Επιβεβαιώστε ότι η εφαρμογή λειτουργεί όπως ορίζεται
Χρησιμοποιήθηκε εισαγωγή Μη έγκυρο, λανθασμένης μορφής, εκτός εύρους, εκτός ακολουθίας Έγκυρα δεδομένα εντός του αναμενόμενου εύρους
Η ερώτηση απαντήθηκε Πού και πώς σπάει; Κάνει αυτό που πρέπει;
Γνώσεις απαιτήσεων Προαιρετικός Ουσιώδης
Τυπικό κόστος Ανώτερο — διερευνητικό και ανοιχτό Κάτω — γραμμένο σε σενάριο και επαναλήψιμο
Αποτέλεσμα Σημεία αστοχίας, όρια εμβέλειας, συμπεριφορά ανάκτησης Επιτυχία ή αποτυχία στην προδιαγραφή

Τι ελέγχετε στις καταστροφικές δοκιμές;

Οι καταστροφικές δοκιμές εξετάζουν και τις δύο πλευρές του ορίου συμπεριφοράς:

  • Σωστή συμπεριφορά λογισμικού
  • Ακατάλληλη συμπεριφορά λογισμικού
  • Ακατάλληλη χρήση
  • Λανθασμένα δεδομένα εισαγωγής
  • Σωστά δεδομένα εξόδου

Δύο προϋποθέσεις πρέπει να ισχύουν καθ' όλη τη διάρκεια της άσκησης:

  • Το λογισμικό δεν θα επεξεργάζεται ή δεν θα δέχεται ποτέ μη έγκυρα δεδομένα εισόδου.
  • Ανεξάρτητα από την εγκυρότητα ή την ορθότητα των δεδομένων εισόδου, το λογισμικό θα πρέπει πάντα να παράγει σωστά δεδομένα εξόδου.

Πώς να κάνετε καταστροφικές δοκιμές;

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

Υπάρχουν πολλοί τρόποι για να το εκτελέσετε. Ακολουθούν μερικά παραδείγματα.

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

Παράδειγμα Καταστροφικών Δοκιμών

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

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

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

Καταστροφικές μέθοδοι δοκιμών

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

Τεχνικές καταστροφικών δοκιμών

Οι παρακάτω τεχνικές μπορούν να χρησιμοποιηθούν με τροποποιήσεις:

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

Πλεονεκτήματα και μειονεκτήματα των καταστροφικών δοκιμών

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

Πλεονεκτήματα

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

Μειονεκτήματα

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

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

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

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

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

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

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

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

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

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

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