ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Χειμερινό Εξάμηνο 2006-2007 (Ε') - Κωδ. Μαθήματος: 321-4002 http://www.icsd.aegean.gr/kotis/softTech06/ Διδάσκων: Κων/νος Κώτης (BSc, PhD)
Έλεγχος Λογισμικού - Διόρθωση Ορισμός: Εξέταση λογισμικού με χρήση ειδικά σχεδιασμένων τεχνικών Σκοπός: εύρεση και διόρθωση σφαλμάτων Σφάλματα (2 είδη): Αντίφασης Αποτελεσμάτων και Απαιτήσεων Τρόπος ελέγχου: Επικύρωση (validation) Υλοποίησης Τρόπος ελέγχου: Επαλήθευση (verification)
Έλεγχος Λογισμικού Βασική Παραδοχή: Δεν υπάρχει λογισμικό χωρίς σφάλματα !!! Άρα, πετυχημένος έλεγχος είναι αυτός που εντοπίζει έστω και ένα !!!! Αν δεν εντοπιστούν, δεν σημαίνει ότι δεν υπάρχουν…αλλά ο έλεγχος πιθανόν δεν ήταν σωστός ή επαρκής
Προγραμματισμός Ελέγχου Προγραμματισμός σωστή εκτέλεση Καταγράφεται σε έγγραφο (πλάνο ελέγχου) Το πλάνο ελέγχου (test plan) περιέχει: Το σκοπό του ελέγχου Στη στρατηγική ελέγχου Τους πόρους που θα απαιτηθούν Πρότυπο του ΙΕΕΕ (Std 829-1991)
Πλάνο Ελέγχου Πρότυπο του ΙΕΕΕ (Std 829-1991)
Τεχνικές Ελέγχου Βασική Αρχή: Εκτέλεση τμήματος εφαρμογής με Γνωστά δεδομένα εισόδου Με γνωστά δεδομένα εξόδου (αναμενόμενα) Αν τα αποτελέσματα δεν είναι τα αναμενόμενα, τότε υπάρχει σφάλμα στο τμήμα αυτό της εφαρμογής Η διαδικασία αυτή καλείται «Δοκιμή» (test) του τμήματος. Δοκιμές που γίνονται με διαφορετικά δοκιμαστικά δεδομένα (test data), θεωρούνται διαφορετικές Η «Περίπτωση Ελέγχου» (test case) είναι το σύνολο τέτοιων δοκιμών για ένα συγκεκριμένο τμήμα ή απαίτηση από το λογισμικό
Τεχνικές Ελέγχου Ροή Ελέγχου μονάδας λογισμικού
Τεχνικές Ελέγχου Δεν είναι εφικτή η δοκιμή όλων των δυνατών περιπτώσεων ελέγχου Απαιτείται επιλογή βάση στρατηγικής Βασικές στρατηγικές για την επιλογή των περιπτώσεων ελέγχου Στρατηγική του «μαύρου κουτιού» Βασίζεται στις προδιαγραφές του λογισμικού Δεν «κοιτάει» τον κώδικα Στρατηγική του «γυάλινου κουτιού» Εξετάζεται ο κώδικας
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού» Βασίζεται στις προδιαγραφές του λογισμικού Δεν «κοιτάει» τον κώδικα Εξετάζει μόνο τις εισόδους (Input) και τα αποτελέσματα (output) που θα πρέπει να αντιστοιχούν σε αυτές (βάση των προδιαγραφών) Δοκιμάζουμε αν είναι δυνατόν όλα τα πιθανά δεδομένα εισόδου που μπορεί να προκαλέσουν σφάλμα (πιθανές περιπτώσεις ελέγχου) Για την επιλογή των δεδομένων αυτών υπάρχουν διάφορες προσεγγίσεις
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού»
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού» Προσέγγιση της «Ισοδύναμης Διαμέρισης» Εύρεση Κλάσεων Ισοδύναμων τιμών Εισόδου-Εξόδου Δηλ. αν μία τιμή της κλάσης (δηλ. του συνόλου) προκαλεί λάθος, τότε και οι υπόλοιπες θα το κάνουν (Άκυρες κλάσεις) ενώ το αντίθετο (δεν προκαλούν λάθος δηλ. Έγκυρες) Επιλογή των περιπτώσεων ελέγχου με βάση τις κλάσεις Μέχρι να ελεγχθούν όλες οι έγκυρες κλάσεις, ορίζεται μια καινούργια περίπτωση ελέγχου που να καλύπτει όσο το δυνατόν περισσότερες ακάλυπτες έγκυρες κλάσεις Μέχρι να ελεγχθούν οι άκυρες κλάσεις, ορίζεται μια καινούργια περίπτωση ελέγχου που να καλύπτει μία και μόνο ακάλυπτη άκυρη κλάση.
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού» Προσδιορισμός κλάσεων Αν μία συνθήκη εισόδου προδιαγράφει ένα διάστημα τιμών, υπάρχει μία έγκυρη κλάση (δηλ. το δεδομένο εισόδου ανήκει στο διάστημα αυτό), και υπάρχει μία ή δύο άκυρες κλάσεις (δηλ. το δεδομένο εισόδου δεν ανήκει στο διάστημα αυτό) Αν μία συνθήκη εισόδου προδιαγράφει πλήθος αλλά και τη μέγιστη τιμή ορίζεται μια καινούργια περίπτωση ελέγχου που να καλύπτει του, υπάρχει μία έγκυρη κλάση (δηλ. το δεδομένο εισόδου είναι μεγαλύτερο του 0 και το πολύ ίσο με τη μέγιστη τιμή του), και υπάρχουν 2 άκυρες κλάσεις δηλ. το δεδομένο εισόδου δεν ανήκει στο διάστημα αυτό)
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού» Προσέγγιση «Συνοριακών Τιμών» (boundary values) …είναι οι τιμές των άκρων μιας κλάσης ισοδύναμων τιμών Οι προγραμματιστές συνήθως λαμβάνουν υπόψη τυπικές τιμές αλλά όχι τις συνοριακές (αρχή και τέλος των διαστημάτων) Απαιτείται έλεγχος μεθοδικός για αποφυγή σφαλμάτων Αν μια συνθήκη εισόδου προδιαγράφει ένα διάστημα τιμών, ορίζονται έγκυρες περιπτώσεις ελέγχου για τα άκρα του διαστήματος και άκυρες για τις τιμές ακριβώς έξω από τα άκρα. Αν μια συνθήκη εισόδου προδιαγράφει ένα πλήθος τιμών, ορίζονται έγκυρες περιπτώσεις ελέγχου με το μικρότερο και το μεγαλύτερο πλήθος τιμών, και άκυρες με ένα μικρότερο και ένα μεγαλύτερο από τις αντίστοιχες έγκυρες αντίστοιχα
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού» Προσέγγιση «Αιτίου - Αποτελέσματος» Με τη βοήθεια γράφου (cause and effect graphing) Αρχικοί κόμβοι είναι τα «αίτια», στους ενδιάμεσους έχει τους «περιορισμούς», και στους τελικούς τα «αποτελέσματα». Με βάση το γράφο, κατασκευάζεται πίνακας απόφασης, από τον οποίο μπορούν να παραχθούν περιπτώσεις ελέγχου Κοπιαστική και σπάνια η χρήση της προσέγγισης αυτής
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού» Προσέγγιση «Μαντέματος» Διορατικότητα Προγραμματιστή Ανεπίσημη Συχνά αποτελεσματική
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού» Παραδείγματα
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού» Παραδείγματα (Ισοδύναμη Διαμέριση)
Τεχνικές Ελέγχου Στρατηγική του «μαύρου κουτιού» Παραδείγματα (Συνοριακών τιμών)
Τεχνικές Ελέγχου Στρατηγική του «γυάλινου ή άσπρου κουτιού» Ορατή η δομή και ο τρόπος λειτουργίας του λογισμικού Μελέτη του κώδικα και της δομής του Επιλογή περιπτώσεων ελέγχου με βάση το λεπτομερές σχέδιο της μονάδας λογισμικού προς έλεγχο + Κώδικα Κριτήρια Επιλογής («κριτήρια κάλυψης»): Όλα τα ανεξάρτητα μονοπάτια εκτέλεσης του ελεγχόμενου κώδικα πρέπει να εκτελούνται τουλάχιστον μία φορά. Οι εντολές (όλες οι διακλαδώσεις) των If-then-else πρέπει να εκτελούνται τουλάχιστον μια φορά Οι βρόγχοι επανάληψης (for, while, repeat) θα πρέπει να εκτελούνται για οριακές τιμές επαναλήψεων αλλά και αριθμό επαναλήψεων εντός των ορίων
Έλεγχος Λογισμικού Τέσσερα στάδια ελέγχου:
Εκτέλεση Ελέγχου Στάδιο 1ο: Έλεγχος μονάδας Κάθε μονάδα δοκιμάζεται μεμονωμένα Με οποιαδήποτε στρατηγική ή και με τις δύο Για κάθε μονάδα που ελέγχεται κατασκευάζουμε μία βοηθητική μονάδα (Μη αυξητική τεχνική) Η βοηθητική (“driver”) «καλεί» την μονάδα, της παρέχει δεδομένα εισόδου και τυπώνει τα αποτελέσματά της Σημαντικός έλεγχος, δεν θα πρέπει να παραλείπεται.
Εκτέλεση Ελέγχου - Στάδιο 1ο: Έλεγχος μονάδας
Εκτέλεση Ελέγχου Στάδιο 2ο: Έλεγχος συνένωσης Ελέγχονται σύνθετα τμήματα (περισσότερες από μία μονάδες) Ομαλή συνεργασία μονάδων? Και οι δύο στρατηγικές Σημασία έχει η υλοποίηση των Interfaces των μονάδων Πρέπει να εκτελεστούν όλες οι μονάδες ενός τμήματος
Εκτέλεση Ελέγχου - Στάδιο 2ο: Έλεγχος συνένωσης
Εκτέλεση Ελέγχου Στάδιο 2ο: Έλεγχος συνένωσης Εκτέλεση ελέγχου με την αυξητική τεχνική: Κάθε μονάδα ελέγχεται με τον «έλεγχο μονάδας» Στη συνέχεια ενώνεται με το υπόλοιπο τμήμα και εκτελείται ο «έλεγχος συνένωσης» Επανάληψη για κάθε μονάδα ενός τμήματος λογισμικού Δύο είδη εκτέλεσης: top-down & bottom-up
Εκτέλεση Ελέγχου Στάδιο 2ο: Έλεγχος συνένωσης (παράδειγμα) Διάγραμμα δομής προγράμματος
Εκτέλεση Ελέγχου Στάδιο 2ο: Έλεγχος συνένωσης (παράδειγμα) Σειρά εκτέλεσης ελέγχου: Αυξητική τεχνική top-down
Εκτέλεση Ελέγχου Στάδιο 3ο: Έλεγχος συστήματος Έλεγχος ολόκληρης της εφαρμογής λογισμικού Δοκιμές, επιδείξεις Στρατηγική «μαύρου κουτιού» Έλεγχος λειτουργικών και μη απαιτήσεων Μη λειτουργικές: Έλεγχοι επίδοσης (μετρήσεις αναφορικά με τον αριθμό χρηστών, αριθμό συναλλαγών, μέγεθος βάσεων δεδομ.) Έλεγχοι πίεσης (μετρήσεις μνήμης, πόρων) Έλεγχοι όγκου δεδομένων (συναλλαγές με μεγάλο όγκο δεδομένων, όχι στιγμιαία, αλλά σε σταθερή βάση) Έλεγχοι ασφάλειας (προσβασιμότητα) Έλεγχοι ανάκτησης (ανάνηψη από αιφνίδιες διακοπές λειτουργίας)
Εκτέλεση Ελέγχου Στάδιο 4ο: Έλεγχος αποδοχής Υπεύθυνος για την επιλογή των περιπτώσεων ελέγχου είναι ο Πελάτης Ο έλεγχος διεξάγεται στο χώρο του Πελάτη Ακολουθούνται διαδικασίες ελέγχου όμοιες με του «ελέγχου συστήματος» αλλά σε μικρότερη κλίμακα (υποσύνολο) Ο Πελάτης πρέπει να «πειστεί» όχι να «πιεστεί» Εκτελείται για όσο χρόνο χρειαστεί ώστε να ικανοποιηθεί ο Πελάτης
Αναφορές ελέγχου Αναφορά Σφάλματος Λεπτομερής καταγραφή σφάλματος
Αναφορές ελέγχου Ημερολόγιο Ελέγχου
Αναφορές ελέγχου Περιληπτική Έκθεση Ελέγχου
Διόρθωση Σφαλμάτων Debugging techniques Μέθοδοι συγκέντρωσης στοιχείων: Εισαγωγή σε διάφορα σημεία του κώδικα εντολές για εκτύπωση διαγνωστικών μηνυμάτων (τιμές μεταβλητών) «αμυντικός προγραμματισμός» Τοποθέτηση σημείων διακοπής (breakpoints) του προγράμματος (με debugger)
Ερωτήσεις – Απορίες - Συζήτηση
Ασκήσεις – Πιθανά Θέματα Εξέτασης Όλα είναι πιθανά