Performans testinin əsasları
Automation QA-dan performans mühəndisi olmaq gözlənilmir, amma terminologiyanı bilmək və QA-nın rolunu izah edə bilmək middle səviyyəsində gözləntidir.
Yük testinin əsas növləri:
- Load test — gözlənilən yük altında davranış (məs. 500 eyni vaxtlı istifadəçi): cavab müddəti SLA-ya uyğundurmu?
- Stress test — sistemi qırılma nöqtəsinə qədər sıxmaq: harada və NECƏ sınır (səliqəli degradasiya, yoxsa tam çöküş)?
- Spike test — yükün qəfil sıçrayışı (marketinq kampaniyası, bilet satışının açılması)
- Soak/endurance test — uzunmüddətli sabit yük: yaddaş sızması, resurs tükənməsi görünür
Alətlər: k6 (JS ilə skript yazılır — JS bilən QA üçün ən təbii seçim, CI-a asan qoşulur), JMeter (köhnə, GUI-li, plagin ekosistemi geniş, enterprise-də yayğın), Gatling (Scala/Java). Bunlar protokol səviyyəsində işləyir — brauzer açmadan minlərlə HTTP sorğusu göndərir; məhz buna görə miqyaslana bilir.
Burada kritik ayrım var: Playwright yük testi aləti deyil. 500 brauzer instansiyası açmaq mümkün deyil (hər biri yüzlərlə MB yaddaş yeyir) və bu, yanlış modeldir.
Frontend performansı isə tamamilə ayrı sahədir və burada QA-nın rolu daha birbaşadır. Ölçü vahidi — Core Web Vitals:
- LCP (Largest Contentful Paint) — ən böyük məzmun elementinin görünmə vaxtı; "səhifə açıldı" hissinin ölçüsü. Yaxşı: ≤2.5s
- INP (Interaction to Next Paint) — istifadəçi qarşılıqlı təsirinə cavab müddəti (2024-də FID-i əvəz etdi). Yaxşı: ≤200ms
- CLS (Cumulative Layout Shift) — layout-un yüklənmə zamanı sıçraması; "düyməyə basdım, o yerini dəyişdi" problemi. Yaxşı: ≤0.1
Lighthouse CI bu metrikaları pipeline-da avtomatik ölçür və performance budget qoymağa imkan verir: LCP 2.5s-i keçsə, PR bloklanır. Bu, performansın "sonra baxarıq" kateqoriyasından çıxıb regressiya nəzarətinə düşməsidir — və bu, QA-nın təbii sahəsidir.
QA-nın rolu (interview-da bunu aydın ifadə et): mən performans mühəndisi deyiləm, amma (1) performans tələblərinin ölçülə bilən şəkildə formalaşdırılmasını təmin edirəm ("sürətli olsun" yox, "axtarış nəticəsi p95 < 1.5s"); (2) Lighthouse CI-ı pipeline-a qoşuram və budget-i saxlayıram; (3) funksional testlərdə açıq performans regressiyalarını görürəm (suite müddətinin qəfil artması çox vaxt məhsulun yavaşlamasının siqnalıdır); (4) ciddi yük testi lazım olanda tələbi formalaşdırıb performans komandası/mütəxəssisi ilə işləyirəm.
| Sual | UI testi cavab verə bilir? | Düzgün alət |
|---|---|---|
| Səhifə tək istifadəçi üçün nə qədər tez açılır? | Qismən — indikativ ölçü kimi | Lighthouse CI (daha dəqiq və müqayisə oluna bilən) |
| 500 eyni vaxtlı istifadəçidə sistem dayanırmı? | Xeyr | k6 / JMeter — protokol səviyyəli yük |
| LCP son release-dən sonra pisləşibmi? | Qismən | Lighthouse CI + performance budget |
| 24 saatlıq yükdə yaddaş sızması varmı? | Xeyr | Soak test + serverin monitorinqi (APM) |
| Düymə basıldıqdan sonra UI donurmu? | Bəli — funksional test bunu tutur | Playwright (assertion timeout-u siqnal verir) |
İnterview-da ən çox səhv edilən yer: "Performansı Playwright ilə ölçürəm, çünki test 3 saniyə çəkir" cavabı. Bu, ölçmə deyil — CI maşınının yükündən, şəbəkədən və paralel worker sayından asılı, təkrarlanmayan bir rəqəmdir. Düzgün mövqe: Playwright indikator verir, ölçü aləti Lighthouse/k6-dır. Bu ayrımı bilmək "terminləri eşidib" ilə "sahəni başa düşür" arasındakı fərqdir.
📚 Mənbələr və sənədlər
- Web Vitalsrəsmiweb.dev
- Lighthouserəsmideveloper.chrome.com