Junior
Πες μου για τις δοκιμές φόρτωσης.
sobes.tech AI
Απάντηση από AI
Ο φόρτος δοκιμής είναι ένας τύπος δοκιμής που στοχεύει στον καθορισμό της απόδοσης, της σταθερότητας και της κλιμάκωσης της εφαρμογής (συστήματος) υπό διάφορα φορτία.
Οι στόχοι του φορτίου δοκιμής:
- Ορισμός του μέγιστου φορτίου που αντέχει το σύστημα.
- Εντοπισμός "στενών" σημείων (bottlenecks).
- Εκτίμηση του χρόνου απόκρισης του συστήματος υπό καθορισμένο φορτίο.
- Έλεγχος της σταθερότητας του συστήματος σε μακροπρόθεσμη βάση υπό φορτίο.
- Έλεγχος της κλιμάκωσης του συστήματος.
Τύποι φορτίου δοκιμής:
- Φόρτωση (Load Testing): Έλεγχος της συμπεριφοράς του συστήματος υπό αναμενόμενο (κανονικό) επίπεδο φορτίου.
- Άγχος (Stress Testing): Έλεγχος του συστήματος υπό φορτίο που υπερβαίνει το κανονικό, μέχρι την αποτυχία. Στόχος - ορισμός των ορίων αντοχής.
- Αντοχή/Μακροπρόθεσμη δοκιμή (Endurance/Soak Testing): Έλεγχος της σταθερότητας του συστήματος υπό μακροχρόνιο μέσο ή υψηλό φορτίο, εντοπισμός διαρροών μνήμης, υποβάθμιση της απόδοσης με το χρόνο.
- Δοκιμή αιχμής (Spike Testing): Έλεγχος της συμπεριφοράς του συστήματος υπό απότομη, στιγμιαία αύξηση φορτίου.
- Δοκιμή κλιμάκωσης (Scalability Testing): Αξιολόγηση της ικανότητας του συστήματος να διαχειρίζεται αυξανόμενο όγκο φορτίου μέσω οριζόντιας ή κάθετης κλιμάκωσης πόρων.
- Δοκιμή όγκου (Volume Testing): Έλεγχος της συμπεριφοράς του συστήματος καθώς αυξάνεται ο όγκος δεδομένων.
Βήματα εκτέλεσης φορτίου δοκιμής:
- Ορισμός στόχων: Ορισμός των μετρικών απόδοσης (χρόνος απόκρισης, διαπερατότητα, αριθμός σφαλμάτων) και κριτηρίων επιτυχίας.
- Σχεδιασμός και σχεδίαση σεναρίων: Ανάλυση σεναρίων χρηστών, ορισμός προφίλ φορτίου (αριθμός εικονικών χρηστών, ένταση αιτημάτων).
- Ανάπτυξη σεναρίων δοκιμής: Γράψιμο σεναρίων για την προσομοίωση ενεργειών χρηστών με τη χρήση εργαλείων φορτίου.
- Προετοιμασία περιβάλλοντος δοκιμής: Ρύθμιση περιβάλλοντος δοκιμής που προσομοιώνει το περιβάλλον παραγωγής.
- Εκτέλεση δοκιμών: Εκτέλεση δοκιμών με διαφορετικά επίπεδα φορτίου.
- Παρακολούθηση και συλλογή δεδομένων: Συλλογή μετρικών απόδοσης του συστήματος, διακομιστών, βάσεων δεδομένων.
- Ανάλυση αποτελεσμάτων και σύνταξη αναφοράς: Σύγκριση αποτελεσμάτων με στόχους, εντοπισμός προβλημάτων, σύνταξη αναφοράς.
Εργαλεία για φορτίο δοκιμής:
- JMeter
- LoadRunner
- Gatling
- k6
- Locust
Παράδειγμα απλού σεναρίου JMeter (Αίτημα HTTP):
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.2">
<hashTree>
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Παράδειγμα φόρτωσης">
<hashTree>
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Ομάδα Νήμα">
<intProp name="ThreadGroup.num_threads">100</intProp>
<intProp name="ThreadGroup.ramp_time">10</intProp>
<longProp name="ThreadGroup.duration">60</longProp>
<boolProp name="ThreadGroup.scheduler">true</boolProp>
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Αίτημα HTTP">
<stringProp name="HTTPSampler.domain">example.com</stringProp>
<stringProp name="HTTPSampler.path">/</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
<boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp>
<boolProp name="HTTPSampler.embedded_url_report">true</boolProp>
<boolProp name="HTTPSampler.connect_timeout"></boolProp>
<boolProp name="HTTPSampler.response_timeout"></boolProp>
<stringProp name="HTTPSampler.protocol">https</stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.comment"></stringProp>
<stringProp name="HTTPSampler.port"></stringProp>
<stringProp name="HTTPSampler.image_parser">true</stringProp>
<stringProp name="HTTPSampler.concurrentDwn">Both</stringProp>
<stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
<stringProp name="HTTPSampler.implementation_status">OK</stringProp>
<boolProp name="HTTPSampler.postBodyRaw">false</boolProp>
<listProp name="HTTPSampler.HTTP_HEADERS"></listProp>
</HTTPSamplerProxy>
<hashTree/>
</hashTree>
</hashTree>
</hashTree>
</TestPlan>
</hashTree>
</jmeterTestPlan>
Κατά τη διάρκεια του φορτίου δοκιμής συλλέγονται μετρικές:
- Χρόνος απόκρισης
- Διαπερατότητα
- Αριθμός σφαλμάτων ανά δευτερόλεπτο
- Αριθμός αιτημάτων ανά δευτερόλεπτο
- Χρήση CPU
- Χρήση μνήμης
- Δραστηριότητα δίσκου
- Δραστηριότητα δικτύου
- Μετρικές βάσης δεδομένων
Ο φόρτος δοκιμής βοηθά στην πρόληψη αποτυχίας του συστήματος σε παραγωγή υπό υψηλό φορτίο και διασφαλίζει ένα αποδεκτό επίπεδο ποιότητας για τους τελικούς χρήστες.