Το Software Testing (έλεγχος) και το Quality Assurance (διασφάλιση ποιότητας) αποτελούν δύο από τα πιο αναγκαία, κρίσιμα και πλέον «mainstream» θέματα για την ανάπτυξη έργων Πληροφορικής. Κι όπως καταλάβαμε από τη συζήτησή μας με την professional services ομάδα της iteam, πρέπει να είναι μια μόνιμη διαδικασία σε όλη τη διάρκεια ανάπτυξης ενός έργου.

Η iteam, βραβευμένη από την Hewllett Packard ως Software Partner of the Year για το 2008 και το 2009, δραστηριοποιείται αρκετά χρόνια στο χώρο του Software Testing με συνέπεια, ποιότητα και αξιοπιστία απέναντι στους πελάτες της, που είναι μεταξύ άλλων μεγάλες τράπεζες, εταιρείες τηλεπικοινωνιών, εμπορικές εταιρείες και integrators.

Τα Software Testing προϊόντα της HP (πρώην Mercury Interactive), τα οποία προωθεί η εταιρεία, καλύπτουν τους τομείς της οργάνωσης και διαχείρισης του testing μέχρι την αυτοματοποίηση των functional, security και performance testing. Με μεγάλη εμπειρία σε αντίστοιχα έργα, η professional services ομάδα της iteam -Ελευθερία Κωστάκη, Αναστάσιος Χρήστου, Luca Ruggeri και Αρης Κουρμπέτης- μιλάει για το software testing και μοιράζεται μαζί μας τις εμπειρίες που έχει αποκομίσει από την ελληνική αγορά κατά την υλοποίηση software testing έργων.

NetWeek: Να αρχίσουμε λίγο με τα βασικά και γι’ αυτούς που δεν γνωρίζουν. Τι ακριβώς είναι το Software Testing και το Quality Assurance;

iteam: Καλύτερα να ξεκινήσουμε εξηγώντας τις διαφορές μεταξύ των δύο. Κατ’ αρχάς το Software Quality Assurance αποσκοπεί στην πρόληψη και περιλαμβάνει όλο τον κύκλο του software development. Παρακολουθεί και βελτιώνει τις διαδικασίες, διασφαλίζοντας ότι ακολουθούνται οι ροές και τα standard ποιότητας, ενώ τα όποια προβλήματα ανακύπτουν διορθώνονται άμεσα.

Από την άλλη, το Software Testing αποσκοπεί στην ανίχνευση προβλημάτων και περιλαμβάνει τη λειτουργία ενός συστήματος ή εφαρμογής κάτω από ελεγχόμενες συνθήκες και αξιολογεί τα αποτελέσματα. Μέσω αυτού, ελέγχουμε κατά πόσο ένα σύστημα λειτουργεί σωστά υπό κανονική χρήση, αλλά και τη συμπεριφορά του σε συνθήκες λάθος χρήσης.

NetWeek: Ποια είναι τα πιο κοινά προβλήματα στη διαδικασία του software development;

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

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

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

NetWeek: Και οι λύσεις σ’ αυτά τα προβλήματα;

iteam: Η εμπεριστατωμένη καταγραφή απαιτήσεων αποτελεί μια από τις λύσεις στα προβλήματα software development. Χρειαζόμαστε καθαρές, ολοκληρωμένες, περιεκτικές, σαφείς και έτοιμες για testing απαιτήσεις, προσυμφωνημένες από όλους τους εμπλεκόμενους.

Δεύτερον, πρέπει να θέτουμε ρεαλιστικά χρονοδιαγράμματα, προβλέποντας αρκετό χρόνο για οργάνωση, σχεδιασμό, testing, bug fixing και documentation.

Τρίτον, πρέπει να οργανώσουμε και να εκτελέσουμε επαρκή test όσο πιο νωρίς γίνεται, να κάνουμε re-test μετά από Bug fixes και να χρησιμοποιήσουμε εργαλεία αυτοματοποίησης όπου αυτό απαιτείται.

Τέταρτον, η ανάπτυξη πρέπει να «πατάει» όσο το δυνατόν περισσότερο στις απαιτήσεις. Πρέπει να αντιστεκόμαστε σε εκτεταμένες αλλαγές και να έχουμε τη δυνατότητα πρόβλεψης του αντίκτυπου στην όλη διαδικασία.

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


NetWeek: Πολλοί όμως φοβούνται ότι μια τέτοια διαδικασία μπορεί να μειώσει την παραγωγικότητα ή να αυξήσει το κόστος…

iteam: Δεν θα έπρεπε να υπάρχουν τέτοιοι φόβοι κι αυτό γιατί με τη σταδιακή ένταξη οργανωμένων διαδικασιών Software Testing στην παραγωγική διαδικασία -όσο ο οργανισμός δηλαδή ωριμάζει και θέτει κανόνες λειτουργίας-, η παραγωγικότητα δεν επιβαρύνεται αλλά αντιθέτως αυξάνεται. Η πρόληψη προβλημάτων ή ο γρήγορος εντοπισμός τους, μειώνει την ανάγκη για εκτεταμένο re-engineering. Είμαστε υπέρ της αρχής του «όσο πιο νωρίς εντοπίσεις τα bugs τόσο μικρότερο είναι το κόστος επιδιόρθωσης».

NetWeek: Ποια είδη testing υπάρχουν και ποια από αυτά μπορούν να αυτοματοποιηθούν;

iteam: Υπάρχει το Functional, το Security και το Performance Testing. Το Functional ελέγχει τη λειτουργικότητα μιας εφαρμογής ή ενός συστήματος βάσει των απαιτήσεων κάτω από όλα τα πιθανά σενάρια και παραμέτρους λειτουργίας. Το Security testing ελέγχει την ασφάλεια της εφαρμογής και των δεδομένων, ενώ το Performance testing ελέγχει την απόδοση της εφαρμογής και τη συμπεριφορά της υποδομής σε κατάσταση φόρτου μέσω προσομοίωσης λειτουργίας από εικονικούς χρήστες. Υπάρχουν εργαλεία που αυτοματοποιούν όλα τα παραπάνω.

NetWeek: Παρατηρούνται προβλήματα ακόμα κι όταν οι εφαρμογές μπουν σε κανονική λειτουργία;

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

Επιπρόσθετα, ένα από τα μεγαλύτερα προβλήματα είναι ο έλεγχος της απόδοσης της εφαρμογής όταν κλιμακώνονται τα δεδομένα και ο αριθμός των χρηστών που συνδέονται σε αυτήν. Αυτός ο έλεγχος, από τη φύση του, είναι πολύ δύσκολο να υλοποιηθεί χωρίς εργαλεία, και γι’ αυτό το λεγόμενο end-user experience καταλήγει να είναι ο αδύναμος κρίκος στη διαδικασία του Testing.

NetWeek: Αν δεν υπάρχει αρκετός χρόνος για ολοκληρωμένο testing;

iteam: Σε αυτή την περίπτωση είναι απαραίτητη η διαδικασία ανάλυσης του ρίσκου που αυτό εμπεριέχει. Η προσπάθεια του testing πρέπει να επικεντρωθεί εκεί που το ρίσκο είναι μεγαλύτερο.

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

NetWeek: Ποια είναι τα προϊόντα και οι υπηρεσίες που παρέχει η iteam για τις διαδικασίες software testing και quality assurance;

iteam: H iteam προωθεί, σε στενή συνεργασία με την HP, τα παγκοσμίως κορυφαία εργαλεία, το HP Quality Center (Οργάνωση και διαχείριση έργων testing), το HP Funtional Testing (Functional Testing Automation), το Web Inspect (Security Testing Automation), και το HP LoadRunner (Performance Testing Automation, Monitor and diagnostics). Επειδή πολλές φορές οι πελάτες μας δεν έχουν την κατάλληλη τεχνογνωσία, συχνά υλοποιούμε έργα οργάνωσης και αυτοματισμού testing σαν «service», ενώ παρέχουμε συμβουλευτικές υπηρεσίες και την απαραίτητη εκπαίδευση προς τους πελάτες μας.