Sobes.tech
Junior

Πες μου για τις δοκιμές φόρτωσης.

sobes.tech AI

Απάντηση από AI

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

Οι στόχοι του φορτίου δοκιμής:

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

Τύποι φορτίου δοκιμής:

  • Φόρτωση (Load Testing): Έλεγχος της συμπεριφοράς του συστήματος υπό αναμενόμενο (κανονικό) επίπεδο φορτίου.
  • Άγχος (Stress Testing): Έλεγχος του συστήματος υπό φορτίο που υπερβαίνει το κανονικό, μέχρι την αποτυχία. Στόχος - ορισμός των ορίων αντοχής.
  • Αντοχή/Μακροπρόθεσμη δοκιμή (Endurance/Soak Testing): Έλεγχος της σταθερότητας του συστήματος υπό μακροχρόνιο μέσο ή υψηλό φορτίο, εντοπισμός διαρροών μνήμης, υποβάθμιση της απόδοσης με το χρόνο.
  • Δοκιμή αιχμής (Spike Testing): Έλεγχος της συμπεριφοράς του συστήματος υπό απότομη, στιγμιαία αύξηση φορτίου.
  • Δοκιμή κλιμάκωσης (Scalability Testing): Αξιολόγηση της ικανότητας του συστήματος να διαχειρίζεται αυξανόμενο όγκο φορτίου μέσω οριζόντιας ή κάθετης κλιμάκωσης πόρων.
  • Δοκιμή όγκου (Volume Testing): Έλεγχος της συμπεριφοράς του συστήματος καθώς αυξάνεται ο όγκος δεδομένων.

Βήματα εκτέλεσης φορτίου δοκιμής:

  1. Ορισμός στόχων: Ορισμός των μετρικών απόδοσης (χρόνος απόκρισης, διαπερατότητα, αριθμός σφαλμάτων) και κριτηρίων επιτυχίας.
  2. Σχεδιασμός και σχεδίαση σεναρίων: Ανάλυση σεναρίων χρηστών, ορισμός προφίλ φορτίου (αριθμός εικονικών χρηστών, ένταση αιτημάτων).
  3. Ανάπτυξη σεναρίων δοκιμής: Γράψιμο σεναρίων για την προσομοίωση ενεργειών χρηστών με τη χρήση εργαλείων φορτίου.
  4. Προετοιμασία περιβάλλοντος δοκιμής: Ρύθμιση περιβάλλοντος δοκιμής που προσομοιώνει το περιβάλλον παραγωγής.
  5. Εκτέλεση δοκιμών: Εκτέλεση δοκιμών με διαφορετικά επίπεδα φορτίου.
  6. Παρακολούθηση και συλλογή δεδομένων: Συλλογή μετρικών απόδοσης του συστήματος, διακομιστών, βάσεων δεδομένων.
  7. Ανάλυση αποτελεσμάτων και σύνταξη αναφοράς: Σύγκριση αποτελεσμάτων με στόχους, εντοπισμός προβλημάτων, σύνταξη αναφοράς.

Εργαλεία για φορτίο δοκιμής:

  • 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
  • Χρήση μνήμης
  • Δραστηριότητα δίσκου
  • Δραστηριότητα δικτύου
  • Μετρικές βάσης δεδομένων

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