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:
- 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.
- 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.
- 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ı.
- Test mühitinin hazırlanması: İstehsal mühitini simulyasiya edən test stendinin qurulması.
- Testlərin keçirilməsi: Müxtəlif yüklərlə testlərin icrası.
- Monitorinq və məlumatların toplanması: Sistem, serverlər və verilənlər bazasının performans metrikalarının toplanması.
- 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.