Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΣίβύλ Καλογιάννης Τροποποιήθηκε πριν 8 χρόνια
1
ΕΛΕΓΧΟΣ ΜΟΝΑΔΩΝ Εντοπισμός σφαλμάτων συστατικού Εξέταση κώδικα Περιγραφή σχεδίου Περιγραφή σχεδίου Συγγραφή κώδικα Συγγραφή τεκμηρίωσης κάθε συστατικού του προγράμματος Ερμηνεία σχεδίου Πρόγραμμα Μία αντικειμενική ομάδα ειδικών (προγρ/στες, ειδικοί σε τεχνικά θέματα) επανεξετάζει τον κώδικα και την τεκμηρίωση για τον εντοπισμό παρανοήσεων / ανακολουθιών / άλλων σφαλμάτων. Γίνεται μέσω: Ανεπίσημη διαδικασία παρουσίασης κώδικα και συνοδευτικής τεκμηρίωσης στην ομάδα επανεξέτασης για το σχολιασμό της ορθότητάς τους. Περιηγήσεων κώδικα (code walkthrough) Πιο επίσημη (πολυβηματική) διαδικασία ελέγχου του κώδικα και της τεκμηρίωσης από την ομάδα επανεξέτασης πάνω σε προκαθορισμένα θέματα: Επισκοπήσεων κώδικα (code inspection) - Επανεξέταση ορισμού – χρήσης τύπων δεδομένων και δομών (συνέπειά τους σε σχέση με το σχέδιο, τις προδιαγραφές και τις διαδικασίες του συστήματος). - Επανεξέταση αλγορίθμων – υπολογισμών (επαλήθευση ορθότητας και αποδοτικότητάς τους). - Σύγκριση σχολίων - κώδικα (επιβεβαίωση ακρίβειας – πληρότητάς τους) - Επανεξέταση διασυνδέσεων μεταξύ συστατικών (εξέταση ορθότητας). - Εκτίμηση χαρακτηριστικών επίδοσης κώδικα ως προς κατάληψη μνήμης / ταχύτητα επεξεργασίας (προετοιμασία αξιολόγησης της συμβατότητας με τις απαιτήσεις επίδοσης). Σπουδαιότητα / Αποτελεσματικότητα επανεξετάσεων κώδικα - Gilb (88), Gilb & Graham (93): την προτείνουν στα αρχικά στάδια ανάπτυξης συστημάτων (προδιαγραφές, σχεδίαση). - Με χρήση επισκοπήσεων (πριν τον έλεγχο μονάδων) βρέθηκε το 67% των εντοπισθέντων σφαλμάτων σε λογισμικό (πείραμα Fagan 1976) και το 93% των σφαλμάτων εμπορικής εφαρμογής 6000 γραμμών κώδικα (πείραμα Ackerman, Buchwald, Lewiski 1986).
2
Σπουδαιότητα / Αποτελεσματικότητα επανεξετάσεων κώδικα - Gilb (88), Gilb & Graham (93): την προτείνουν στα αρχικά στάδια ανάπτυξης συστημάτων (προδιαγραφές, σχεδίαση). - Με χρήση επισκοπήσεων (πριν τον έλεγχο μονάδων) βρέθηκε το 67% των εντοπισθέντων σφαλμάτων σε λογισμικό (πείραμα Fagan 1976) - Ομοίως το 93% των σφαλμάτων εμπορικής εφαρμογής 6000 γραμμών κώδικα (πείραμα Ackerman, Buchwald, Lewiski 1986). - Εξέταση ιστορικού 10 εκατομμυρίων γραμμών κώδικα έδειξε ότι με επισκοπήσεις κώδικα εξαλείφθηκε το 85% των συνολικά εντοπισθέντων σφαλμάτων (Jones 1977). Δραστηριότητα εντοπισμού Εντοπισθέντα σφάλματα ανά 1000 γραμμές κώδικα Επανεξέταση απαιτήσεων 2.5 Επανεξέταση σχεδίου 5.0 Επισκόπηση κώδικα 10.0 Έλεγχος ολοκλήρωσης 3.0 Έλεγχος αποδοχής2.0 Σύγκριση επιδόσεων τεχνικών εντοπισμού σφαλμάτων - Jones 1991 (υπεροχή τεχνικής επισκοπήσεων κώδικα έναντι άλλων τεχνικών) Σύγκριση επιδόσεων τεχνικών εντοπισμού σφαλμάτων - Jones 1991 (υπεροχή τεχνικής επισκοπήσεων κώδικα έναντι άλλων τεχνικών) Μετά τη δημοσίευση οδηγιών Fagan για την επισκόπηση κώδικα στην IBM κι άλλοι οργανισμοί (Hewlett – Packard, ITT, AT&T κ.α.) υιοθέτησαν τις επισκοπήσεις ως συνιστώμενη / πρότυπη πρακτική.
3
Τυπική απόδειξη ορθού κώδικα Υποβολή κώδικα σε εξονυχιστική μελέτη για τη διαπίστωση της ορθότητάς του (αν δηλαδή υλοποιεί κατάλληλα - όπως υποδεικνύει το σχέδιο - τις λειτουργίες / δεδομένα και διασυνδέεται κατάλληλα με άλλα συστατικά). 1. Σύνταξη ισχυρισμών (assertions) για την περιγραφή συνθηκών εισόδου – εξόδου του συστατικού. 2. Σχεδίαση διαγράμματος ροής για την έκφραση της λογικής ροής του συστατικού, σημειώνοντας τα σημεία που πραγματοποιούνται μετασχηματισμοί. 3. Δημιουργία μιας σειράς θεωρημάτων προς απόδειξη από τους ισχυρισμούς. 4. Ορισμός ισχυρισμού (if-then) για κάθε βρόχο του διαγράμματος ροής. 5. Εντοπισμός όλων των δυνατών μονοπατιών με αφετηρία τον ισχυρισμό εισόδου και προορισμό τον ισχυρισμό εξόδου. 6. Επαλήθευση της αλήθειας κάθε μονοπατιού, αποδεικνύοντας ότι ο ισχυρισμός εισόδου υπονοεί (οδηγεί) – ακολουθώντας τους μετασχηματισμούς του εν λόγω μονοπατιού – στον ισχυρισμό εξόδου. 7. Απόδειξη της ύπαρξης τερματισμού για τον εξεταζόμενο κώδικα. αντίστοιχη λογική δομή αντίστοιχη λογική δομή Φιλοσοφία κώδικας μετατροπή Πλεονεκτήματα - Μειονεκτήματα 1.Δυνατότητα ανακάλυψης αλγοριθμικών σφαλμάτων του κώδικα. 2.Η εξέταση της λογικής δομής συνεπάγεται την κατανόηση ενός κώδικα. 3.Η τακτική χρήση αυτόματων / χειρονακτικών αποδείξεων επιβάλλει στον προγραμματιστή αυστηρότητα και ακρίβεια στον ορισμό δεδομένων, δομών δεδομένων και αλγοριθμικών κανόνων. 4.Η λογική περιγραφή και απόδειξη της ορθότητας ενός συστατικού είναι πιο χρονοβόρα διαδικασία απ’ ότι η συγγραφή του αντίστοιχου κώδικα (ιδιαίτερα σε περιπτώσεις μεγάλων και πολύπλοκων συστατικών). 5.Οι τεχνικές απόδειξης της ορθότητας δεν εγγυώνται ανυπαρξία αλγοριθμικών σφαλμάτων (σχεδίου, διασύνδεσης, ερμηνείας προδιαγραφών, σύνταξης – σημασιολογίας γλώσσας προγραμματισμού, τεκμηρίωσης).
4
Προσομοιωμένη εκτέλεση του κώδικα με χρήση συμβόλων αντί μεταβλητών. Προσεκτική παρακολούθηση μεταβαλλόμενων συνθηκών κατά μήκος μονοπατιών του προγράμματος. Το πρόγραμμα θεωρείται ότι διαθέτει μία κατάσταση εισόδου, καθορισμένη από τα δεδομένα εισόδου και τις συνθήκες. Κατά την εκτέλεση κάθε γραμμής του κώδικα ελέγχεται αν έχει τροποποιηθεί η κατάστασή της. Κάθε αλλαγή κατάστασης αποθηκεύεται. Η συνολική εκτέλεση του προγράμματος εμφανίζεται σαν μία ακολουθία διαδοχικών αλλαγών κατάστασης. Κάθε λογικό μονοπάτι που δημιουργείται στο πρόγραμμα αποτελεί μία ταξινομημένη σειρά αλλαγών κατάστασης. Η τελική κατάσταση κάθε μονοπατιού πρέπει να είναι η κατάσταση εξόδου. Το πρόγραμμα είναι ορθό αν κάθε δυνατή κατάσταση εισόδου παράγει την κατάλληλη κατάσταση εξόδου. Φιλοσοφία Παράδειγμα a = b + c; if (a > d) proc1(); // εκτέλεσε την proc1 else proc2(); // εκτέλεσε την proc2 Έλεγχος με εργαλείο συμβολικής εκτέλεσης Καταγραφή 2 δυνατών τιμών για τη συνθήκη a > d (true, false) και όχι απόδοση ειδικών τιμών στις μεταβλητές a και d. Μεγάλα σύνολα δεδομένων διαιρούνται σε διακριτές κλάσεις ισοδυναμίας (κατηγορίες). Ο κώδικας εξετάζεται μόνο ως προς τον τρόπο που αντιδρά σε κάθε κατηγορία δεδομένων. γενικότερα Μειονεκτήματα Η ανάπτυξη μιας απόδειξης ενδεχομένως πιο χρονοβόρα από τη συγγραφή κώδικα. Η απόδειξη ορθότητας δεν διασφαλίζει την απουσία σφαλμάτων. Μεγάλος / πολύπλοκος κώδικας μπορεί να απαιτεί εξέταση πολλών καταστάσεων και μονοπατιών (χρονοβόρα διαδικασία). Δύσκολη η παρακολούθηση της ροής εκτέλεσης μέσα από βρόχους. Δύσκολη η διαμέριση (σε ισοδύναμες τάξεις) πινάκων και δεικτών.
5
εργαλείο απόδειξης ορθότητας προγραμμάτω ν είσοδ ος δεδομένα εισόδου + συνθήκες δεδομένα εξόδου + συνθήκες κώδικας συστατικού έξοδο ς απόδειξη ορθότητας συστατικού αντιπαράδειγμα που δείχνει ένα σύνολο δεδομένων εισόδου τα οποία αδυνατεί το εξεταζόμενο συστατικό να μετατρέψει με ορθό τρόπο σε δεδομένα εξόδου Ακολουθώντας τα βήματα του προγράμματος εντοπίζει με διάφορους τρόπους τα δυνατά μονοπάτια. Αν οι διαθέσιμοι κανόνες εξαγωγής συμπερασμάτων / πορισμάτων δεν εξυπηρετούν μπορεί να γίνει χρήση κάποιας ευριστικής (heuristic) λύσης. Δυσκολία κατασκευής: - δυνατότητα επαλήθευσης σωστής χρήσης των μοναδιαίων / δυαδικών λειτουργιών (πρόσθεση, αφαίρεση, άρνηση, συγκρίσεις ισότητας / ανισότητας) - χρήση αντιμεταθετικότητας, κατανομής και συσχέτισης. - διαδικασία έκφρασης μιας γλώσσας προγραμματισμού μ’ ένα σύνολο προτάσεων μέσω των οποίων να εξάγονται τα θεωρήματα. Χρονοβόρα διαδικασία: - χρήση δοκιμής και σφάλματος (trial / error) για την κατασκευή θεωρημάτων (με εξαίρεση τα συστατικά μικρής έκτασης). Συνεργασία με χρήστη: - καθοδήγηση του συστήματος για την επιλογή των σημείων μετασχηματισμού και των μονοπατιών παρακολούθησης (χρήση μεθόδων για την ανάπτυξη έμπειρων συστημάτων). -Ένα σύστημα απόδειξης δεν παράγει στην ουσία μία απόδειξη ορθότητας αλλά κυρίως ελέγχει την απόδειξη που του επισημαίνει ο χρήστης. Εργαλεία βασισμένα στη συμβολική εκτέλεση αναπτύχθηκαν μόνο για την αξιολόγηση προγραμμάτων μικρής έκτασης. Δεν υπάρχουν τέτοια συστήματα γενικού σκοπού, ανεξάρτητα από τη γλώσσα και αυτοματοποιημένα. Περιγραφή - Λειτουργία
6
Έλεγχος συστατικών προγράμματος Σε αντίθεση με την απόδειξη ορθότητας (εξέταση κώδικα και συνθηκών εισόδου – εξόδου), ο έλεγχος συνίσταται σε μία σειρά εκτελέσεων του κώδικα, με βάση τα αποτελέσματα των οποίων συμπεραίνεται η συμπεριφορά του σε δεδομένη κατάσταση. Επιλογή δεδομένων εισόδου και συνθηκών, διαχείρισή τους από το συστατικό και παρατήρηση εξόδου. Περίπτωση / σημείο ελέγχου Συγκεκριμένη επιλογή δεδομένων εισόδου για χρήση κατά τον έλεγχο. Βήματα Καθορισμός στόχων ελέγχου. Επιλογή περιπτώσεων ελέγχου και καθορισμός του κατάλληλου ελέγχου για την ικανοποίηση συγκεκριμένου σκοπού (π.χ. επαλήθευση σωστής εκτέλεσης όλων των εντολών, σωστή εκτέλεση όλων των λειτουργιών από τον κώδικα). Εξέταση κώδικα : κλειστό / ανοικτό κουτί. Καθορισμένη συλλογή περιπτώσεων ελέγχου. Έλεγχος Τροφοδοσία κουτιού μ’ όλες τις δυνατές εισόδους. Σύγκριση της παραγόμενης εξόδου με την αναμενόμενη από τις απαιτήσεις. Εξέταση εσωτερικής λογικής δομής του κώδικα με εφαρμογή κατάλληλης στρατηγικής ελέγχου.
7
Παράδειγμα Συστατικό: Υπολογισμός ριζών β’θμιας εξίσωσης ax 2 +bx+c=0. Καλή λειτουργία κώδικα (κλειστό κουτί) Κριτήριο στόχου Επιλογή περιπτώσεων ελέγχου Οι συντελεστές a, b, c αποτελούν αντιπροσωπευτικούς συνδυασμούς αρνητικών, θετικών, μηδενικών. Επιλογή συνδυασμών τιμών με βάση τα σχετικά μεγέθη των a, b, c: π.χ. a>b, b>c ή b>c, c>a ή c>b, b>a κλπ. Εσωτερική δομή κώδικα (ανοικτό κουτί) Αποτελέσματα εξαρτώμενα από την τιμή του όρου b 2 - 4ac. Επιλογή περιπτώσεων ελέγχου ώστε να τον καθιστούν θετικό, αρνητικό ή μηδέν καθώς και περιπτώσεων ελέγχου για μη αριθμητικά δεδομένα (π.χ. είσοδος του “B” σαν συντελεστή). Διαχωρισμός εισόδου σε 4 ισοδύναμες κλάσεις Κάθε δυνατή είσοδος ανήκει σε μία από τις κλάσεις (κάλυψη συνόλου δυνατών εισόδων).Κάθε δυνατή είσοδος ανήκει σε μία από τις κλάσεις (κάλυψη συνόλου δυνατών εισόδων). Καμία είσοδος δεν ανήκει σε περισσότερες από μία κλάσεις (ξένες μεταξύ τους κλάσεις).Καμία είσοδος δεν ανήκει σε περισσότερες από μία κλάσεις (ξένες μεταξύ τους κλάσεις). Ένα σφάλμα εκτέλεσης με είσοδο κάποιο μέλος μιας κλάσης μπορεί να εμφανισθεί θέτοντας ως είσοδο και οποιοδήποτε άλλο μέλος αυτής της κλάσης (κάθε στοιχείο μιας κλάσης αντιπροσωπεύει όλα τα στοιχεία της).Ένα σφάλμα εκτέλεσης με είσοδο κάποιο μέλος μιας κλάσης μπορεί να εμφανισθεί θέτοντας ως είσοδο και οποιοδήποτε άλλο μέλος αυτής της κλάσης (κάθε στοιχείο μιας κλάσης αντιπροσωπεύει όλα τα στοιχεία της). Έλεγχος κλειστού κουτιού Οι επιλεγείσες περιπτώσεις ελέγχου δεν εγγυώνται τον εντοπισμό συγκεκριμένου σφάλματος. Έλεγχος ανοικτού κουτιού Κίνδυνος εστίασης στις εσωτερικές διεργασίες του κώδικα (έλεγχος τι κάνει και όχι τι έπρεπε να κάνει). Έλεγχος συστατικών προγράμματος
8
Παραγωγή δεδομένων εισόδου μέσω συνδυασμού ελέγχων ανοικτού – κλειστού κουτιού Κλειστό κουτί χρήση εξωτερικών προδιαγραφών για παραγωγή αρχικών περιπτώσεων ελέγχου (δεδομένα εισόδου, οριακές συνθήκες εισόδων – εξόδων, μη έγκυρα δεδομένα). Συστήματα υλοποίησης μηχανών διακριτών καταστάσεων Ανάκληση προηγούμενης κατάστασης του συστήματος. Καθορισμός επόμενης κατάστασης από τρέχουσα και προηγούμενη κατάσταση. Συστήματα πραγματικού χρόνου Οδηγούνται από διακοπές(interrupts): εισαγωγή ομάδων περιπτώσεων ελέγχου στη θέση μεμονωμένων περιπτώσεων. Έλεγχος συστατικών προγράμματος Παράδειγμα Συστατικό: αναμονή θετικών τιμών εισόδου Περιπτώσεις ελέγχου: πολύ μεγάλος θετικός ακέραιος, θετικός ακέραιος, θετικός δεκαδικός σταθερής υποδιαστολής, αριθμός μεγαλύτερος του 0 και μικρότερος του 1, 0, αρνητικός αριθμός, μη αριθμητικός χαρακτήρας. Επιπρόσθετες περιπτώσεις ελέγχου: Καμία, μία ή περισσότερες επαναλήψεις βρόχων, έλεγχος τριγωνομετρικών συναρτήσεων για 0 0, 90 0,, επιλογή εισόδων για μηδενισμό παρονομαστών κλπ. Επιπρόσθετες περιπτώσεις ελέγχου: Καμία, μία ή περισσότερες επαναλήψεις βρόχων, έλεγχος τριγωνομετρικών συναρτήσεων για 0 0, 90 0, 180 0, 270 0, 360 0, επιλογή εισόδων για μηδενισμό παρονομαστών κλπ. Παραγωγή δεδομένων εισόδου μέσω ακολουθιών περιπτώσεων ελέγχου Ανοικτό κουτί ορισμός επιπρόσθετων περιπτώσεων ελέγχου (έλεγχος όλων τω διακλαδώσεων, εξέταση μέγιστου δυνατού πλήθους διαδρομών εκτέλεσης – μονοπατιών.
9
Έλεγχος συστατικών προγράμματος Εστίαση κάλυψης όλων των δυνατών συμπεριφορών (λεπτομερής έλεγχος κώδικα). Επιλογή περιπτώσεων ελέγχου μέσω μίας τουλάχιστον από τις υπάρχουσες στρατηγικές με βάση τα δεδομένα που μεταχειρίζεται ο κώδικας. Έλεγχος εντολών Κάθε εντολή του συστατικού εκτελείται 1 τουλάχιστον φορά σε κάποιον έλεγχο. Έλεγχος διακλάδωσης Κάθε διακλάδωση κάθε σημείου απόφασης του κώδικα επιλέγεται τουλάχιστον 1 φορά σε κάποιον έλεγχο. If / then Η στρατηγική δεν καλύπτει τον έλεγχο όλων των διακλαδώσεων μιας συνθήκης.Η στρατηγική δεν καλύπτει τον έλεγχο όλων των διακλαδώσεων μιας συνθήκης. If / then Η στρατηγική δεν καλύπτει τον έλεγχο όλων των συνδυασμών διακλαδώσεων (δυνατών μονοπατιών εκτέλεσης).Η στρατηγική δεν καλύπτει τον έλεγχο όλων των συνδυασμών διακλαδώσεων (δυνατών μονοπατιών εκτέλεσης). If / then / else μη ελεγχόμενα μονοπάτια
10
Έλεγχος συστατικών προγράμματος Έλεγχος μονοπατιών Κάθε διακριτό μονοπάτι του κώδικα εκτελείται τουλάχιστον 1 φορά από κάποιον έλεγχο. Έλεγχος μονοπατιών ορισμού - χρήσης Κάθε μονοπάτι που παράγεται από κάθε ορισμό μιας μεταβλητής (ανάθεση τιμής) προς κάθε χρήση αυτού του ορισμού, εξετάζεται τουλάχιστον 1 φορά από κάποιον έλεγχο. If / then / else Χ=5 Υ=2*Χ Χ=5 Υ=2*Χ Ορισμός της μεταβλητής Χ (ανάθεση στη Χ της τιμής 5) Χρήση του ορισμού Χ=5
11
Έλεγχος συστατικών προγράμματος Έλεγχος όλων των χρήσεων Όλες οι περιπτώσεις ελέγχου περιλαμβάνουν ένα τουλάχιστον μονοπάτι από κάθε ορισμό προς κάθε χρήση που μπορεί να προσπελαστεί απ’ αυτόν τον ορισμό. If / then / else Χ=5 Υ=2*Χ Χ=5 Υ=2*Χ μη ελεγχόμενο μονοπάτι Βασίζεται στο σκεπτικό ότι αν ένα μονοπάτι προς μία χρήση του δεδομένου το οποίο ανατέθηκε σε κάποια μεταβλητή εκτελείται σωστά τότε και τα υπόλοιπα μονοπάτια προς αυτή τη χρήση δεν θα παρουσιάσουν πρόβλημα (οφειλόμενο στην εν λόγω ανάθεση).Βασίζεται στο σκεπτικό ότι αν ένα μονοπάτι προς μία χρήση του δεδομένου το οποίο ανατέθηκε σε κάποια μεταβλητή εκτελείται σωστά τότε και τα υπόλοιπα μονοπάτια προς αυτή τη χρήση δεν θα παρουσιάσουν πρόβλημα (οφειλόμενο στην εν λόγω ανάθεση). Έλεγχος όλων των χρήσεων κατηγορημάτων / μερικών υπολογιστικών χρήσεων Για κάθε ορισμό κάθε μεταβλητής ένας έλεγχος καλύπτει ένα τουλάχιστον μονοπάτι από τον ορισμό προς κάθε χρήση σε κατηγόρημα (π.χ. συνθήκη σε εντολή απόφασης). Αν παραμένουν ακάλυπτοι ορισμοί, προστίθεται και η χρήση σε υπολογισμούς. Βασίζεται στο σκεπτικό ότι αν ένα μονοπάτι προς κάθε χρήση σε συνθήκη εκτελείται σωστά τότε (πιθανότατα) και τα υπόλοιπα μονοπάτια που ξεκινούν απ’ αυτή τη συνθήκη δεν θα παρουσιάσουν πρόβλημα (οφειλόμενο στην εν λόγω ανάθεση).Βασίζεται στο σκεπτικό ότι αν ένα μονοπάτι προς κάθε χρήση σε συνθήκη εκτελείται σωστά τότε (πιθανότατα) και τα υπόλοιπα μονοπάτια που ξεκινούν απ’ αυτή τη συνθήκη δεν θα παρουσιάσουν πρόβλημα (οφειλόμενο στην εν λόγω ανάθεση). Χ>0 Χ=5 Υ=2*Χ Ζ=10 Κ=Ζ/2 Χ>0 Χ=5 Υ=2*Χ Ζ=10 Κ=Ζ/2
12
Έλεγχος συστατικών προγράμματος Η ισχύς μιας στρατηγικής ελέγχου εμπλέκει ανάλογο πλήθος περιπτώσεων ελέγχου. Παράδειγμα Λογικό διάγραμμα υπό εξέταση συστατικού Δείκτης=false Εκτύπωσε Αποτέλεσμα X> K? ΟΧΙ ΝΑΙ Δείκτης=true X=X+1 Κλήση SUB(X, Δείκτης, Αποτέλεσμα) Αποτέλεσμα> 0 ? Αποτέλεσμα> 0 ? ΝΑΙ ΟΧΙ 1 2 3 4 5 6 7 Έλεγχος εντολών: απαιτούνται περιπτώσεις ελέγχου για την εκτέλεση των εντολών 1 έως 7 Αν επιλέξουμε X>K τέτοιο ώστε να παράγει ένα θετικό Αποτέλεσμα, μπορούμε να εκτελέσουμε τις εντολές 1-2-3-4-5-6-7 με τη σειρά, ώστε να επαρκεί μία περίπτωση ελέγχου. Έλεγχος διακλαδώσεων: εντοπίζουμε όλα τα σημεία απόφασης – ρόμβους Έχουμε 2 σημεία απόφασης, συνεπώς απαιτούνται 2 περιπτώσεις ελέγχου για την εξέταση των μονοπατιών 1-2-3-4-5-6-7 και 1-2-4- 5-6-1, οι οποίες διασχίζουν κάθε διακλάδωση τουλάχιστον 1 φορά. Έλεγχος μονοπατιών: εντοπίζουμε όλα τα σημεία απόφασης – ρόμβους Έχουμε 2 σημεία απόφασης, με 2 επιλογές σε κάθε διακλάδωση. Συνεπώς απαιτούνται 4 περιπτώσεις ελέγχου για την εξέταση όλων των πιθανών μονοπατιών: 1-2-3-4-5-6-7, 1-2-3-4-5-6-1, 1-2-4-5-6-7 και 1-2-4- 5-6-1. Έλεγχος εντολών < Έλεγχος διακλαδώσεων < Έλεγχος μονοπατιών Έλεγχος εντολών < Έλεγχος διακλαδώσεων < Έλεγχος μονοπατιών Πλήθος περιπτώσεων ελέγχου ανά στρατηγική
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.