Έλεγχος και Ποιότητα Λογισμικού τεχνικές ελέγχου αδιαφανούς κουτιού

Μια στρατηγική ελέγχου λογισμικού καλό είναι να υιοθετεί τις εξής γενικές αρχές:

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

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

Χρησιμοποιώντας τεχνικές ελέγχου διαφανούς κουτιού μπορούμε να σχεδιάσουμε
περιπτώσεις ελέγχου οι οποίες:
• εγγυώνται ότι η εκτέλεση κάθε ανεξάρτητου λογικού μονοπατιού ενός προγράμματος έχει δοκιμαστεί τουλάχιστον μια φορά,
• εξετάζουν την επίδραση στην εκτέλεση του προγράμματος κάθε λογικής συνθήκης (απόφασης) τόσο όταν αυτή είναι αληθής όσο και όταν είναι ψευδής,
• εκτελούν κάθε δομή επανάληψης, με τιμές κανονικές αλλά και κοντά στα όρια,
• ελέγχουν την εγκυρότητα των εσωτερικών δομών δεδομένων.
Γιατί, λοιπόν, χρειαζόμαστε τον έλεγχο διαφανούς κουτιού, ενώ φαίνεται ότι μπορούμε να διασφαλίσουμε την ορθότητα της (παρατηρήσιμης) λειτουργίας του λογισμικού με έλεγχο αδιαφανούς κουτιού; Η απάντηση βρίσκεται στη φύση των ελαττωμάτων του λογισμικού:
• Tα σφάλματα τείνουν να «συγκεντρώνονται» σε μονοπάτια που εκτελούνται σπάνια ή σε ειδικές περιπτώσεις. Στην πραγματικότητα φαίνεται ότι το πλήθος λογικών ελαττωμάτων και λανθασμένων υποθέσεων είναι αντιστρόφως ανάλογο με την πιθανότητα εκτέλεσης ενός μονοπατιού του προγράμματος.
• Ίσως δεν έχουμε αντιληφθεί καλά τη λογική ροή εκτέλεσης του προγράμματος, με
αποτέλεσμα να πιστεύουμε ότι κάποιο μονοπάτι έχει μικρή συχνότητα εκτέλεσης,
ενώ, στην πραγματικότητα, αυτό εκτελείται τακτικά.
• Είναι πιθανό κάποια σημασιολογικά λάθη να μην ανακαλυφθούν κατά τη μεταγλώττιση του πηγαίου κώδικα. Τέτοια λάθη, όμως, μπορεί να βρίσκονται τόσο σε ένα
μονοπάτι εκτέλεσης που εκτελείται συχνά, όσο και σε κάποιο που εκτελείται σπάνια.

Οι έλεγχοι αδιαφανούς κουτιού δεν μπορούν να αποκαλύψουν τέτοιου είδους ελαττώματα (να θυμάστε ότι «τα σφάλματα καραδοκούν στις γωνίες και συγκεντρώνονται στα όρια»).
Σχετικά με την ποιότητα αναφερόμαστε στα εξής :
Λειτουργικότητα είναι ένα σύνολο χαρακτηριστικών που είναι φορείς ενός συνόλου λειτουργιών και των καθορισμένων ιδιοτήτων τους. Οι λειτουργίες αυτές ικανοποιούν δηλωμένες ή υνεπαγόμενες ανάγκες.
Ευχρηστία ενός συστήματος είναι η ικανότητά του να λειτουργεί αποτελεσματικά και αποδοτικά ενώ παρέχει υποκειμενική ικανοποίηση στους χρήστες του. Πρότυπο ISO 9241.
- Συντηρησιμότητα είναι ένα σύνολο χαρακτηριστικών που σχετίζονται με την απαιτούμενη προσπάθεια για να υλοποιηθούν συγκεκριμένες αλλαγές(που μπορεί να περιλαμβάνουν διορθώσεις, βελτιώσεις και προσαρμογές) στο λογισμικό, στο περιβάλλον, ή στις απαιτήσεις.
- Ελεγξιμότητα είναι ένα σύνολο χαρακτηριστικών που σχετίζονται με την απαιτούμενη προσπάθεια για τον έλεγχο του βαθμού στον οποίο το λογισμικό ικανοποιεί τις προδιαγραφές χρήσης και λειτουργίας χωρίς λάθη ή ατέλειες.
- Επαναχρησιμοποιησιμότητα είναι ένα σύνολο χαρακτηριστικών που σχετίζονται με την απαιτούμενη προσπάθεια για επαναχρησιμοποίηση του συνόλου ή μέρους του λογισμικού που έχει αναπτυχθεί.
- Μεταφερσιμότητα είναι ένα σύνολο χαρακτηριστικών που σχετίζονται με τη δυνατότητα του λογισμικού να μεταφέρεται από ένα περιβάλλον σε άλλο (αυτό περιλαμβάνει το υλικό, λογισμικό ή οργανωτικό περιβάλλον).
- Αξιοπιστία είναι ένα σύνολο χαρακτηριστικών που είναι φορείς της δυνατότητας του λογισμικού να διατηρεί το επίπεδο απόδοσής του σε καθορισμένες συνθήκες και για προκαθορισμένη χρονική περίοδο.
- Αποδοτικότητα είναι ένα σύνολο χαρακτηριστικών που είναι φορείς της σχέσης που υφίσταται ανάμεσα στην επίδοση του λογισμικού και το σύνολο των πόρων που χρησιμοποιεί, υπό καθορισμένες συνθήκες
Καλή συνέχεια στην μελέτη σας.

IT Special Advisor