Εισαγωγή
Ο κόσμος της πληροφορικής περιλαμβάνει και την ανάπτυξη προγραμμάτων, λογισμικών. Ένα λογισμικό κατασκευάζεται για να εξυπηρετήσει συγκεκριμένες ανάγκες και το αποτέλεσμα της ανάπτυξης του θα πρέπει να είναι ένα πρόγραμμα το οποίο θα λειτουργεί σωστά σύμφωνα με τις αρχικές προδιαγραφές. Ο έλεγχος για την εξασφάλισης της ορθής λειτουργίας του λογισμικού ονομάζεται ποιοτικός έλεγχος ή αλλιώς QA testing (Quality Assurance testing). Πρόκειται για έναν ξεχωριστό κλάδο της πληροφορικής οποίος ασχολείται τόσο με την κατασκευή προδιαγραφών ποιότητας, engineering, όσο και τον έλεγχο, testing. Σε αυτό το άρθρο θα δούμε βασικές έννοιες γύρω από τον κλάδο αυτόν.
Σφάλμα, bug
Το bug είναι ένας όρος που χρησιμοποιείται στην πληροφορική για να περιγράψει ένα σφάλμα ή πρόβλημα στον κώδικα ενός λογισμικού, το οποίο προκαλεί δυσλειτουργία, ανεπιθύμητη συμπεριφορά ή απρόσμενα αποτελέσματα. Ο όρος αυτός περιγράφει όμως και την μή ομαλή λειτουργία ενός λογισμικού και συνεπώς μπορεί να επηρεάσει τη λειτουργικότητα του λογισμικού και να το κάνει να μην λειτουργεί όπως προβλέπεται.
Ένα bug μπορεί να προκύψει για διάφορους λόγους, όπως:
- Λάθη στον προγραμματισμό (π.χ. λανθασμένοι υπολογισμοί ή συνθήκες),
- Ασυμβατότητες μεταξύ διαφορετικών τμημάτων του λογισμικού,
- Απρόβλεπτες συνθήκες εισόδου δεδομένων από τον χρήστη,
- κ.α.
Η διαδικασία εύρεσης και διόρθωσης bugs στην διαδικασία ανάπτυξης του λογισμικού ονομάζεται debugging, ενώ στην διαδικασία δοκιμής/εκτέλεσης του ονομάζεται testing. Η διαδικασία αυτή αποτελεί σημαντικό μέρος του κύκλου ζωής ανάπτυξης λογισμικού. Όπως και να έχει, η διαδικασία ελέγχου πρέπει να ξεκινάει από την πρώτη φάση ανάπτυξης του λογισμικού μέχρι και τον τελικό έλεγχο πριν την παράδωση του.
Τύποι σφαλμάτων
Σε ένα πρόγραμμα ή λογισμικό, υπάρχουν διάφοροι τύποι σφαλμάτων (bugs) που μπορεί να προκύψουν:
- Σφάλματα στον κώδικα (Coding): Εμφανίζονται όταν ο κώδικας εκτελείται στο συντακτικό του της γλώσσας προγραμματισμού ή και στην λογική του προγράμματος, με αποτέλεσμα να παράγονται λανθασμένα αποτελέσματα.
- Σφάλματα χρόνου εκτέλεσης (Runtime Errors): Αυτά συμβαίνουν κατά την εκτέλεση του προγράμματος, όπως η προσπάθεια διαίρεσης με το μηδέν ή η πρόσβαση σε μη έγκυρα δεδομένα.
- Σφάλματα διασύνδεσης (Interface Errors): Εμφανίζονται όταν διαφορετικά συστήματα ή τμήματα λογισμικού δεν συνεργάζονται σωστά, όπως ασυμβατότητες μεταξύ API.
- Σφάλματα απόδοσης (Performance Errors): Ο κώδικας λειτουργεί σωστά, αλλά το πρόγραμμα είναι αργό ή δεν χρησιμοποιεί αποτελεσματικά τους πόρους του συστήματος.
- Σφάλματα ασφάλειας (Security Bugs): Αφορούν κενά ασφαλείας που επιτρέπουν σε κακόβουλους χρήστες να παρακάμψουν μέτρα προστασίας ή να εκτελέσουν ανεπιθύμητες ενέργειες.
Σε ένα λογισμικοό μπορεί να υπάρχουν πολλά σφάλματα και συνήθως είναι αδύνατος βρεθούν όλα στο 100%. Όσο περισσότερα βρεθούν, τόσο το καλύτερο.
Τύποι ελέγχου – types of testing
Υπάρχουν διάφοροι τύποι ελέγχου (testing) λογισμικού, οι οποίοι εξασφαλίζουν ότι το λογισμικό λειτουργεί σωστά και πληροί τις προδιαγραφές. Τι ελέγχους θα κάνουμε σε ένα πρόγραμμα εξαρτάται από διάφορους παράγοντες και εκτελούνται σε διάφορα στάδια ανάπτυξης ενός προγράμματος. Εδώ είναι μερικοί βασικοί τύποι testing:
- Manual Testing: Πρόκειται για μια σειρά από ελέγχους οι οποίοι γίνονται χειρονακτικά. Οι έλεγχοι αυτοί μπορεί να βασίζονται σε συγκεκριμένα σενάρια, test cases, ή σε ελεύθερη δοκιμή του λογισμικού.
- Automation Testing: Πρόκειται για ελέγχους οι οποίοι γίνονται με χρήση συγκεκριμένων προγραμμάτων για τον σκοπό αυτό τα οποία χρησιμοποιούν γλώσσες προγραμματισμού. Ο σκοπός είναι να ελεγθούν συγκεκριμένα μέρη του λογισμικού με αυτόματο τρόπο,
- Unit Testing: Ελέγχει μεμονωμένες μονάδες ή τμήματα του κώδικα, όπως μεθόδους ή λειτουργίες, για να βεβαιωθεί ότι λειτουργούν σωστά.
- Integration Testing: Ελέγχει πώς διαφορετικά τμήματα του συστήματος συνεργάζονται, εξασφαλίζοντας ότι οι μονάδες λογισμικού ενσωματώνονται σωστά.
- System Testing: Ελέγχει το πλήρες σύστημα λογισμικού για να διαπιστωθεί αν λειτουργεί σύμφωνα με τις προδιαγραφές. Καλύπτει όλες τις λειτουργίες σε ένα ολοκληρωμένο περιβάλλον.
- Acceptance Testing: Διεξάγεται για να διασφαλιστεί ότι το λογισμικό καλύπτει τις ανάγκες του χρήστη ή του πελάτη. Συχνά γίνεται από τον πελάτη πριν από την αποδοχή του λογισμικού.
- Regression Testing: Επαναλαμβανόμενος έλεγχος που διασφαλίζει ότι νέες αλλαγές ή βελτιώσεις στον κώδικα δεν επηρεάζουν αρνητικά τη λειτουργικότητα που ήδη έχει ελεγχθεί.
- Performance Testing: Ελέγχει την απόδοση του λογισμικού υπό διαφορετικές συνθήκες, όπως φόρτο χρήστη, για να αξιολογηθεί η ταχύτητα, η σταθερότητα και η χρήση πόρων.
- Security Testing: Ελέγχει την ασφάλεια του λογισμικού, αναζητώντας ευπάθειες που θα μπορούσαν να εκμεταλλευτούν οι επιτιθέμενοι.
- Usability Testing: Επικεντρώνεται στη φιλικότητα προς τον χρήστη, εξετάζοντας αν το λογισμικό είναι εύκολο στη χρήση και αν παρέχει καλή εμπειρία χρήστη.
- Alpha και Beta Testing:
- Alpha Testing: Γίνεται από τους προγραμματιστές ή δοκιμαστές εντός της εταιρείας πριν από την κυκλοφορία.
- Beta Testing: Γίνεται από εξωτερικούς χρήστες ή πελάτες για να εντοπιστούν προβλήματα πριν από την τελική κυκλοφορία.
Αναφορά σφάλματος (bug report)
Μια αναφορά σφάλματος (bug report) είναι ένα έγγραφο ή εργαλείο που χρησιμοποιείται για να περιγράψει ένα πρόβλημα ή σφάλμα που εντοπίστηκε σε ένα λογισμικό. Σκοπός της είναι να δώσει λεπτομέρειες στους προγραμματιστές ή την ομάδα ανάπτυξης ώστε να κατανοήσουν, να αναπαράγουν και να διορθώσουν το σφάλμα.Η αναφορά σφάλματος ετοιμάζεται από τον tester και αποστέλνεται στον προγραμματιστή ή την ομάδα υλοποίησης του έργου.
Μια τυπική αναφορά σφάλματος περιλαμβάνει τα εξής:
- Τίτλος: Σύντομη περιγραφή του προβλήματος.
- Περιγραφή: Λεπτομερής εξήγηση του σφάλματος, της συμπεριφοράς του συστήματος και του τρόπου με τον οποίο αποκλίνει από την αναμενόμενη λειτουργία.
- Βήματα αναπαραγωγής: Συγκεκριμένες οδηγίες για να μπορέσει κάποιος άλλος να αναπαράγει το σφάλμα.
- Αναμενόμενο αποτέλεσμα: Ποια θα έπρεπε να είναι η σωστή λειτουργία.
- Πραγματικό αποτέλεσμα: Τι συνέβη στην πραγματικότητα.
- Σοβαρότητα και προτεραιότητα: Η σημασία του σφάλματος και η ανάγκη για άμεση διόρθωση.
- Περιβάλλον: Πληροφορίες για το σύστημα (λειτουργικό, έκδοση λογισμικού, προγράμματα περιήγησης κ.λπ.) όπου εντοπίστηκε το σφάλμα.
- Στιγμιότυπα ή καταγραφές (logs): Προαιρετικά αρχεία ή εικόνες που βοηθούν στην κατανόηση του προβλήματος.
Μπορείτε να δείτε εδώ μια απλή και σωστά τεκμηριωμένη αναφορά σφάλματος.
Επίλογος
Είδαμε λοιπόν κάποιες βασικές έννοιες οι οποίες αφορούν τον ποιοτικό έλεγχο ενος λογισμικού ή προγράμματος γενικότερα. Μπορεί να είναι μια εφαρμογή στον υπολογιστή μας, ένας ιστοχώρος ή μια εφαρμογή στο κινητό μας. Όπως και να έχει οι έννοιες και οι διαδικασίες που ακολουθούνται είναι ίδιες. Προσωπικά ασχολούμαι στον τομέα αυτόν και μπορείτε να δείτε εδώ κάποια έργα μου.