Τι είναι το Loop Testing; Μεθοδολογία, Παράδειγμα

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

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

  • 🔘 Ορισμός: Μια τεχνική δομής ελέγχου λευκού κουτιού που στοχεύει στην εγκυρότητα του βρόχου και όχι στις οθόνες.
  • 🔁 Τέσσερις τάξεις: Οι απλοί, ένθετοι, συνενωμένοι και μη δομημένοι βρόχοι χρειάζονται ο καθένας τη δική του στρατηγική.
  • 📍 Τρία σημεία ελέγχου: Είσοδος στον βρόχο, συμπεριφορά κατά την εκτέλεση και συνθήκη εξόδου.
  • 🧪 Περάσματα ορίων: Μηδέν, ένα, δύο, μια τυπική μέτρηση, έπειτα b-1, b και b+1 επαναλήψεις.
  • 🪜 Ενσωματωμένη σειρά: Ξεκινήστε από την εσωτερική θηλιά, κρατήστε τις εξωτερικές στο ελάχιστο και στη συνέχεια εργαστείτε προς τα έξω.
  • 🐞 Βρέθηκαν ελαττώματα: Όρια εκτός λειτουργίας, μη αρχικοποιημένοι μετρητές, άπειροι βρόχοι και σημεία συμφόρησης χωρητικότητας.
  • ⚠️ Περιορισμός: Τα σφάλματα βρόχου εντοπίζονται σε κώδικα χαμηλού επιπέδου και σπάνια είναι ανεπαίσθητα μόλις επιτευχθούν.

Μεθοδολογία δοκιμής βρόχων, τύποι βρόχων και παραδείγματα περιπτώσεων δοκιμής

Τι είναι το Loop Testing;

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

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

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

Δοκιμή βρόχου που παρουσιάζεται ως κλάδος της δοκιμής δομής ελέγχου

Τύποι βρόχου Δοκιμασμένο

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

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

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

Γιατί να κάνετε Loop Testing;

Το Loop Testing γίνεται για τους παρακάτω λόγους

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

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

Πώς να κάνετε Loop Testing: Ολοκληρωμένη Μεθοδολογία

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

  • Όταν εισέλθει ο βρόχος
  • Κατά την εκτέλεσή του, και
  • Όταν μείνει ο βρόχος

Η στρατηγική ελέγχου για όλους αυτούς τους βρόχους έχει ως εξής.

Απλός βρόχος

Ένας απλός βρόχος έχει μία μόνο είσοδο και μία μόνο έξοδο, όπως φαίνεται παρακάτω.

Απλό διάγραμμα ροής βρόχου με ένα σημείο εισόδου και μία συνθήκη εξόδου

Ένας απλός βρόχος δοκιμάζεται με τον ακόλουθο τρόπο:

  1. Παράλειψη ολόκληρου του βρόχου
  2. Κάντε 1 πέρασμα μέσα από τον βρόχο
  3. Κάντε 2 περάσματα από τον βρόχο
  4. Κάνε τους υποστηρικτές σου πρωταγωνιστές! Δώσε χώρο σε παλιά και νέα μέλη της ομάδας σου να συμμετάσχουν και φρόντισε η συνεισφορά τους να εκτιμάται και να τους δίνει ικανοποίηση. Μην φοβάσαι να συνεργάζεσαι και να δίνεις τα εύσημα και σε άλλες ομάδες που δουλεύουν σε παρόμοια θέματα. Πήγαινε κι εσύ στις δικές τους εκδηλώσεις και άκου τις ανάγκες τους για να στήσεις γερές συμμαχίες. a περνάει από τον βρόχο όπου a < b, αυτός είναι ένας τυπικός αριθμός επαναλήψεων μεσαίου εύρους
  5. Κάνε τους υποστηρικτές σου πρωταγωνιστές! Δώσε χώρο σε παλιά και νέα μέλη της ομάδας σου να συμμετάσχουν και φρόντισε η συνεισφορά τους να εκτιμάται και να τους δίνει ικανοποίηση. Μην φοβάσαι να συνεργάζεσαι και να δίνεις τα εύσημα και σε άλλες ομάδες που δουλεύουν σε παρόμοια θέματα. Πήγαινε κι εσύ στις δικές τους εκδηλώσεις και άκου τις ανάγκες τους για να στήσεις γερές συμμαχίες. b, b-1 και b+1 διέρχεται από τον βρόχο όπου b είναι ο μέγιστος αριθμός επιτρεπόμενων περασμάτων μέσω του βρόχου.

Οι δύο τελευταίες περιπτώσεις έχουν το μεγαλύτερο μέρος της αξίας. Παράλειψηping ο βρόχος αποδεικνύει ότι η συνθήκη εξόδου αξιολογείται πριν εκτελεστεί το σώμα, και το bΗ περίπτωση +1 αποδεικνύει ότι ο βρόχος αρνείται να εργαστεί πέρα ​​από το δηλωμένο όριο αντί να υπερβεί έναν πίνακα.

Ένθετος βρόχος

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

Διάγραμμα ροής ένθετου βρόχου με εσωτερικό βρόχο που περικλείεται από εξωτερικό βρόχο

Για έναν ένθετο βρόχο, πρέπει να ακολουθήσετε τα ακόλουθα βήματα.

  1. Ρυθμίστε όλους τους άλλους βρόχους στην ελάχιστη τιμή τους και ξεκινήστε από τον εσωτερικό βρόχο
  2. Για τον πιο εσωτερικό βρόχο, εκτελέστε μια απλή δοκιμή βρόχου και κρατήστε τους εξωτερικούς βρόχους στην τιμή παραμέτρου ελάχιστης επανάληψης
  3. Εκτελέστε τη δοκιμή για τον επόμενο βρόχο και εργαστείτε προς τα έξω
  4. Συνεχίστε μέχρι να δοκιμαστεί ο πιο εξωτερικός βρόχος.

Συνενωμένοι βρόχοι

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

Διάγραμμα ροής συνενωμένων βρόχων που δείχνει δύο βρόχους που εκτελούνται διαδοχικά

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

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

Μη δομημένοι βρόχοι

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

Διάγραμμα ροής μη δομημένου βρόχου με jump ελέγχουping μέσα και έξω από το σώμα του βρόχου

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

Παράδειγμα Δοκιμής Βρόχου με Δοκιμαστικές Περιπτώσεις

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

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

Δοκιμή Τιμή του n Εκτελεσμένες πάσες Τι αποδεικνύει
TC01 0 0 (ο βρόχος παραλείφθηκε) Η συνθήκη εξόδου αξιολογείται πριν από την εκτέλεση του σώματος και το αποτέλεσμα παραμένει στην αρχική του τιμή 1.
TC02 1 1 Ένα μόνο πέρασμα παράγει το σωστό αποτέλεσμα και ο μετρητής αυξάνεται μία φορά.
TC03 2 2 Ο συσσωρευτής μεταφέρει μια τιμή προς τα εμπρός μεταξύ δύο διαδοχικών περασμάτων.
TC04 5 5 Μια τυπική μέτρηση μεσαίου εύρους επιστρέφει την αναμενόμενη τιμή 120, επιβεβαιώνοντας τη συνήθη συμπεριφορά.
TC05 11 11 Ένα πέρασμα κάτω από το μέγιστο ολοκληρώνεται κανονικά (b-1).
TC06 12 12 Το δηλωμένο μέγιστο γίνεται αποδεκτό και ο βρόχος τερματίζεται (b).
TC07 13 απορρίφθηκαν Ένα πέρασμα πέρα ​​από το μέγιστο απορρίπτεται αντί να ξεχειλίζει σιωπηλά (b+ 1).

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

Συνήθη ελαττώματα που εντοπίστηκαν με δοκιμές βρόχου

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

  • Όρια εκτός ενός — μια συνθήκη που γράφεται ως < όπου <= ήταν προορισμένο, επομένως ο βρόχος εκτελεί ένα πέρασμα πολύ λίγο ή ένα πάρα πολύ.
  • Μη αρχικοποιημένοι μετρητές ή συσσωρευτές — ένα σύνολο που φέρει μια τιμή που έχει απομείνει από μια προηγούμενη κλήση.
  • Άπειροι βρόχοι — μια συνθήκη εξόδου που το σώμα του βρόχου δεν μπορεί ποτέ να ικανοποιήσει επειδή ο μετρητής ενημερώνεται μόνο σε ορισμένους κλάδους.
  • Υποθέσεις παράλειψης βρόχου — κώδικας μετά τον βρόχο που διαβάζει μια μεταβλητή που αναμενόταν να ορίσει το σώμα του βρόχου, η οποία αποτυγχάνει όταν ο βρόχος εκτελείται μηδέν φορές.
  • Σφάλματα χωρητικότητας και απόδοσης — ένας βρόχος που είναι σωστός αλλά ξαναδιαβάζει τη βάση δεδομένων σε κάθε πέρασμα, επομένως το κόστος αυξάνεται με τον αριθμό των επαναλήψεων.
  • Παρεμβολή σε ένθετο βρόχο — ένας εσωτερικός βρόχος που επαναχρησιμοποιεί τον μετρητή εξωτερικού βρόχου και αλλάζει αθόρυβα τον αριθμό των εξωτερικών επαναλήψεων.

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

Δοκιμή βρόχου έναντι άλλων τεχνικών δοκιμής δομής ελέγχου

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

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

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

Περιορισμός στη δοκιμή βρόχου

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

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

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

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

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

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

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

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

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

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

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

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