Sobes.tech
Junior

Yük sınaqları haqqında danış.

sobes.tech Süni İntellekt

AI-dan cavab

Yük testləri müxtəlif yüklərdə tətbiqin (sistemin) performansını, sabitliyini və miqyasını müəyyən etməyə yönəlmiş test növüdür.

Yük testlərinin məqsədləri:

  • Sistem tərəfindən dayanıla biləcək maksimum yükü müəyyən etmək.
  • "Darboqoz" yerlərini (bottleneck) aşkar etmək.
  • Verilən yüklə sistemin cavab vaxtını qiymətləndirmək.
  • Yük altında sistemin uzunmüddətli sabitliyini yoxlamaq.
  • Sistemlərin miqyasını yoxlamaq.

Yük testlərinin növləri:

  • Yük Testi (Load Testing): Gözlənilən (normal) yüklərdə sistemin davranışını yoxlamaq.
  • Stres Testi (Stress Testing): Sistemi normaldan artıq yüklə sınaqdan keçirmək, nasazlığa qədər. Məqsəd - davamlılıq həddini müəyyən etmək.
  • Davamlılıq/uzunmüddətli test (Endurance/Soak Testing): Orta və ya yüksək yüklə sistemin uzunmüddətli sabitliyini yoxlamaq, yaddaş sızmalarını və performansın zamanla pisləşməsini aşkar etmək.
  • Pik yükləmə testi (Spike Testing): Sistemin ani və birdən çox yüklənməyə reaksiyasını yoxlamaq.
  • Miqyaslandırma testi (Scalability Testing): Resursların horizontal və ya vertikal miqyaslandırılması ilə artan yükləri idarə etmək qabiliyyətini qiymətləndirmək.
  • Həcmi testi (Volume Testing): Verilənlərin həcmi artdıqca sistemin davranışını yoxlamaq.

Yük testlərinin mərhələləri:

  1. Məqsədlərin müəyyənləşdirilməsi: Performans metrikalarının (cavab vaxtı, keçid qabiliyyəti, səhv sayı) və uğur meyarlarının dəqiq müəyyənləşdirilməsi.
  2. Ssenarilərin planlaşdırılması və dizaynı: İstifadəçi ssenarilərinin analizi, yükləmə profilinin (virtual istifadəçi sayı, sorğu intensivliyi) müəyyənləşdirilməsi.
  3. Test skriptlərinin hazırlanması: Yük test vasitələri ilə istifadəçi fəaliyyətlərinin simulasiya edən skriptlərin yazılması.
  4. Test mühitinin hazırlanması: İstehsal mühitini simulyasiya edən test stendinin qurulması.
  5. Testlərin keçirilməsi: Müxtəlif yüklərlə testlərin icrası.
  6. Monitorinq və məlumatların toplanması: Sistem, serverlər və verilənlər bazasının performans metrikalarının toplanması.
  7. Nəticələrin analizi və hesabat hazırlanması: Nəticələrin məqsədlərlə müqayisəsi, problemlərin aşkar edilməsi, hesabatın hazırlanması.

Yük testləri üçün alətlər:

  • JMeter
  • LoadRunner
  • Gatling
  • k6
  • Locust

Sadə JMeter skripti nümunəsi (HTTP Sorğusu):

<?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="Nümunə üçün yük testi">
      <hashTree>
        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group">
          <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 Sorğusu">
              <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>

Yük testləri zamanı toplanan metrikalar:

  • Cavab vaxtı
  • Keçid qabiliyyəti
  • Xəta sayı saniyədə
  • Sorğu sayı saniyədə
  • CPU istifadəsi
  • Yaddaş istifadəsi
  • Disk I/O fəaliyyəti
  • Şəbəkə fəaliyyəti
  • Verilənlər bazası metrikaları

Yük testləri sistemin yüksək yüklənmə altında işləməsini təmin etmək və son istifadəçilər üçün qəbul edilə bilən keyfiyyət səviyyəsini təmin etmək üçün kömək edir.