Έγκαιρος εντοπισμός προβλημάτων απόδοσης που μειώνει σημαντικά τα κόστη υποστήριξης των εφαρμογών και αυξάνει την αξιοπιστία στους τελικούς χρήστες.
Τα περισσότερα συστήματα αναπτύσσονται υπό την προϋπόθεση κανονικών συνθηκών λειτουργίας.
Ωστόσο, είναι σημαντικό να διασφαλιστεί η συνθήκη ότι το σύστημα δεν θα καταρρεύσει κάτω από βαριά φορτία.
Τι είναι το Stress Testing;
Το Stress Testing είναι ένα είδος Software Testing που επιβεβαιώνει την αντοχή και αξιοπιστία του συστήματος. Διασφαλίζει ότι το σύστημα δεν θα καταρρεύσει κάτω από συνθήκες κρίσης. Ελέγχει πέρα από το κανονικό σημείο λειτουργίας και αξιολογεί τον τρόπο λειτουργίας του συστήματος κάτω από αυτές τις ακραίες συνθήκες. Ελέγχει επίσης αν το σύστημα επιδεικνύει αποτελεσματική διαχείριση σφαλμάτων.
Γιατί χρειαζόμαστε το Stress Testing;
Είναι σημαντικό να εκτελείτε δοκιμές πίεσης σε ένα οικοσύστημα εφαρμογών όποτε υπάρχει ανώτατο σημείο (spike) ή ξαφνική αύξηση (surge) της κυκλοφορίας. Αν αποτύχετε να αντιμετωπίσετε αυτή την ξαφνική κίνηση, μπορεί να έχετε ως αποτέλεσμα απώλεια εσόδων και φήμη. Απαιτείται επίσης έλεγχος πίεσης για τους εξής λόγους:
-
Για να ελέγξετε αν το σύστημα λειτουργεί υπό μη φυσιολογικές συνθήκες.
-
Για να εμφανίστε το κατάλληλο μήνυμα λάθους όταν το σύστημα είναι υπό πίεση.
-
Διότι η αποτυχία του συστήματος σε ακραίες συνθήκες μπορεί να οδηγήσει σε τεράστια απώλεια εσόδων.
-
Για να προετοιμάστε τις εφαρμογές ή τους ιστοτόπους σας για ακραίες συνθήκες εκτελώντας δοκιμές πίεσης.
-
Για να μειώσετε σημαντικά το κόστος υποστήριξης της εφαρμογής σας καθώς η επιδιόρθωση προβλημάτων στην «παραγωγή» έχει τεράστιο κόστος.
-
Για να αυξήσετε σημαντικά την αξιοπιστία του συστήματός σας στους τελικούς χρήστες.
Σε τι αποσκοπεί τεχνικά το Stress Testing;
Οι διαδικασίες του Stress Testing ως τεχνικές διαδικασίες έχουν ως σκοπό τα εξής:
-
Την εξαγωγή μιας σχέσης μεταξύ του φόρτου του συστήματος και του χρόνου απόκρισής του. Για το φόρτο, σε μια τυπική web εφαρμογή, χρησιμοποιείται σα μονάδα μέτρησης ο αριθμός των requests ανά δευτερόλεπτο (req/sec). Τυπικά, όσο αυξάνεται ο αριθμός των req/sec, τόσο αυξάνεται ο χρόνος απόκρισης του συστήματος. Έτσι, αν τεθεί από τον οργανισμό ο μέγιστος αποδεκτός χρόνος απόκρισης, μπορεί να προσδιοριστεί το ανώτατο όριο req/sec, μέχρι το οποίο το σύστημα συμπεριφέρεται αποδεκτά (δηλαδή το ανώτατο φορτίο το οποίο μπορεί αυτό να δεχτεί).
-
Την παρατήρηση της συμπεριφοράς του συστήματος, όταν αυτό φτάσει στο όριό του. Γενικά, ο στόχος ενός stress test είναι το να φτάσει ένα σύστημα στο όριό του (δηλαδή να το κάνει μη αποκρίσιμο ή/και να το κάνει να αποτύχει). Σε αυτό το όριο, παρατηρείται η συμπεριφορά του συστήματος και –κυρίως- αν αυτό αποτυγχάνει «σωστά» (gracefully). Με τον όρο «σωστή» αποτυχία, εννοούμε την αποτυχία του συστήματος με τρόπο τέτοιο, που δεν επηρεάζει την επιχειρηματική λειτουργία του (για παράδειγμα, δεν καταλήγει σε ασυνεπή στοιχεία στη βάση δεδομένων).
-
Πρέπει να σημειωθεί ότι ο σκοπός της διαδικασίας των stress tests δεν είναι το να αιτιολογήσει την όποια απόδοση του συστήματος, αλλά μόνο να την καταγράψει. Για την αιτιολόγηση της απόδοσης (ή της μη απόδοσης) του συστήματος, συνίσταται η χρήση εργαλείων APM (Αpplication Performance Monitoring).
Ποια είναι τα στάδια του Stress Testing;
Η Datablue ακολουθεί τα standard 5 βήματα κατά την εκτέλεση προσομοιώσεων ακραίων καταστάσεων σε οποιαδήποτε εφαρμογή:
-
Προγραμματίζει με τον πελάτη το Stress Test - Σε αυτό το βήμα, συγκεντρώνονται τα δεδομένα του συστήματος, αναλύεται το σύστημα και ορίζονται οι στόχοι του τεστ.
-
Δημιουργεί δέσμες αυτοματισμών - εδώ, δημιουργούμε τα σενάρια αυτοματισμού stress test και προετοιμάζουμε τα δεδομένα δοκιμών για τα σενάρια εκτέλεσης.
-
Εκτέλεση δέσμης ενεργειών - Στο τρίτο βήμα, εκτελούμε τα σενάρια αυτοματοποίησης δοκιμών άγχους και αποθηκεύουμε τα αποτελέσματα των σεναρίων.
-
Ανάλυση αποτελεσμάτων - Μετά την αποθήκευση των αποτελεσμάτων, περνάμε στο στάδιο της ανάλυσής τους και εντοπίζουμε τα σημεία συμφόρησης.
-
Τελειοποίηση και Βελτιστοποίηση - Στο τελικό βήμα βοηθάμε τον πελάτη στη βελτιστοποίηση του συστήματος προτείνοντας πιθανές λύσεις με αλλαγές στις υποδομές ή τον κώδικα των εφαρμογών και προχωράμε σε νέες εκτελέσεις των σεναρίων.
Ποια είναι τα είδη των ελέγχων του Stress Test;
-
Load testing: είναι η δοκιμασία του συστήματος κάτω από συγκεκριμένο φορτίο. Το φορτίο αυτό μπορεί να είναι το αναμενόμενο, του οποίου η εκτίμησή του έχει βγει από παραγωγικά δεδομένα ή μπορεί να είναι και αυθαίρετο.
-
Stress testing: είναι η διαδικασία που αποσκοπεί στο να βρεθεί ένα ανώτατο όριο φορτίου του συστήματος. Τελικός σκοπός της είναι η αποτυχία του συστήματος (εκεί δηλαδή που αυτό γίνεται μη αποκρίσιμο). Σημαντικό επίσης είναι το να βρεθεί το πως το σύστημα συμπεριφέρεται σε μια τέτοια αποτυχία (κυρίως το αν αφήνει τα δεδομένα του σε μια συνεπή κατάσταση).
-
Soak testing: είναι η δοκιμασία του συστήματος κάτω από συγκεκριμένο φορτίο, μόνο που αυτή τη φορά διαρκεί για μεγάλο χρονικό διάστημα. Σκοπός της δοκιμασίας αυτής είναι το να διαπιστωθεί η σταθερότητα του συστήματος (διαπίστωση ύπαρξης memory leaks κ.λ.π.).
-
Spike testing: είναι η δοκιμασία που περιλαμβάνει την ξαφνική και απότομη αύξηση του φορτίου του συστήματος. Σκοπός της διαδικασίας είναι το να εξακριβωθεί το πως συμπεριφέρεται ένα σύστημα σε παρόμοιες ξαφνικές αλλαγές.
Συνήθως, η έννοια του ελέγχου της απόδοσης ενός συστήματος, μεταφράζεται σε Stress testing. Είναι όμως σημαντικό ένας οργανισμός ο οποίος ενδιαφέρεται να ελέγξει τις εφαρμογές του να είναι κατανοήσει την σημασία κάθε μέρους της παραπάνω διαδικασίας, και να επιλέξει ποιες αν όχι όλες τις διαδικασίες θα ενεργοποιήσει.