Performans Testi — iş yükü altında mobil tətbiqin sürətini, cavab vermə qabiliyyətini və dayanıqlığını ölçmə prosesidir. Funksional testdən fərqli olaraq, məntiqin düzgünlüyünü yoxlayan, performans testi tətbiqin real şəraitdə nə qədər sürətli və hamar işlədiyini qiymətləndirir. Google Research (2024) məlumatına görə, istifadəçilərin 53%-’i tətbiqi tərk edir, əgər onun başlanması 3 saniyədən çox çəkirsə. Performans testi buraxılışdan əvvəl darboğazları aşkar etməyə kömək edir və qəbul edilmiş keyfiyyət standartlarına uyğunluğu təmin edir.
Əsas məqamlar
Performans Testi — tətbiqin öz vəzifələrini nə qədər sürətli və səmərəli yerinə yetirdiyini müəyyən edən qeyri-funksional test növüdür. Vahid testlərdən və ya UI testlərindən fərqli olaraq, Performans Testi kəmiyyət xüsusiyyətlərini ölçür: cavab müddəti, prosessor yükü, RAM istehlakı və batareya sərfiyyatı. Sauce Labs (2025) hesabatına görə, mobil inkişaf komandalarının 68%-i Performans Testini müntəzəm test dövrünə daxil edir, 41%-i isə onu CI-də avtomatlaşdırır.
Performans Testinin əsas məqsədi — tətbiqin spesifikasiyada göstərilən performans tələblərinə cavab verdiyinə əmin olmaqdır. Əgər ekranın açılma müddəti 500 millisaniyədən çox olarsa və ya tətbiq orta cihazda 200 MB-dan çox RAM istehlak edərsə, bu optimallaşdırma üçün siqnaldır. Baza xətti performansı ilk stabil buraxılış mərhələsində müəyyən edilir və hər böyük yeniləmədə yenidən nəzərdən keçirilir.
Performans Testi real cihazlarda aparılır, simulyatorlarda deyil, çünki emulyasiya CPU, GPU və şəbəkə resurslarının istifadəsinin dəqiq mənzərəsini vermir. Apple WWDC (2024) məlumatına görə, simulyatordakı testlər real cihazla müqayisədə 15–30% şişirdilmiş nəticələr göstərir. Real cihaz performans haqqında yeganə etibarlı məlumat mənbəyi olaraq qalır.
Performans Testinin müntəzəmliyi inkişaf dövründən asılıdır. Google Android Performance (2024) tövsiyələrində göstərilir ki, əsas performans ölçüləri hər pull request-’də, tam dəst isə hər buraxılışdan əvvəl işə salınmalıdır. Avtomatlaşdırma bu ölçülərin erkən mərhələlərdə performans reqressiyalarını aşkar etməyə imkan verir.
Mobil inkişafda Performans Testi ssenarilərinin 90%-ni əhatə edən beş əsas metrika fərqləndirilir. Başlanma müddəti (soyuq başlanğıc və isti başlanğıc) — hər buraxılışda yoxlanılan ilk metrikadır. Google Play Console (2024) başlanma müddətini həddlərə görə qeyd edir: soyuq başlanğıc 5 saniyədən, isti başlanğıc isə 1.5 saniyədən çox olmamalıdır. Bu hədlərin aşılması birbaşa tətbiq mağazasındakı reytinqə təsir edir.
Soyuq başlanğıc ikona kliklənəndən tətbiqin ilk kadrının görünməsinə qədər ölçülür. iOS gecikmiş inisiallaşdırma üçün `dispatch_async` istifadə edir ki, bu da görünən başlanma müddətini qısaldır. Android soyuq başlanğıc prosesin yaradılması, Application-ın inisiallaşdırılması və Activity-nin işə salınmasını əhatə edir. Google Performance (2024) məlumatına görə, soyuq başlanğıcın hər 100 ms gecikməsi e-ticarət tətbiqlərində Conversion Rate-ı 1.2% azaldır.
FPS (Frames Per Second) — animasiyalar və siyahıların sürüşdürülməsi zamanı kadr tezliyi. Hamar interfeys üçün sabit 60 FPS tələb olunur. Android Studio Profiler və Xcode GPU Report ağır əməliyyatlarda — şəkillərin yüklənməsi, JSON-un pars edilməsi və ya mürəkkəb maketlərin render edilməsi zamanı FPS düşmələrini göstərir. 30 FPS-dən aşağı düşmə istifadəçi tərəfindən “tormoz” kimi hiss olunur və Adjust (2025) məlumatına görə Retention Rate-ı 22% azaldır.
RAM istehlakı — üçüncü kritik metrikadır. Yaddaş sızmaları (memory leaks) — uzunmüddətli sessiyalarda performansın azalmasının əsas səbəbidir. Instruments Allocations və Android Memory Profiler Swift-də tsiklik istinadları və Android-də boşaldılmamış Activity-ləri aşkar etməyə kömək edir. Batareya sərfiyyatı — test mərhələsində tez-tez nəzərdən qaçırılan metrikadır. Apple Developer (2024) məlumatına görə, yüksək enerji istehlakı olan tətbiqlər iOS-da fon rejimində məhdudlaşdırılır. Energy Log Xcode-’da sessiya ərzində tətbiqin vatt profilini qeyd edir.
| Metrika | Hədd | Alət |
|---|---|---|
| Cold start | < 5 s | Xcode Organizer, Google Vitals |
| FPS | ≥ 55 stabil | Xcode GPU Report, Android Profiler |
| RAM | < 200 MB | Instruments, Memory Profiler |
| APK/IPA | < 150 MB | Xcode Build, Gradle APK Analyzer |
Yük testi (Load Test) gözlənilən sayda eyni vaxtda istifadəçilər altında tətbiqin davranışını yoxlayır. Mobil backend üçün bu, API-’yə 1000–10000 eyni vaxtda sorğunun simulyasiyası deməkdir. Server hissəsi pik yükü baza dəyərindən 20%-dən çox olmayan cavab müddəti artımı ilə idarə etməlidir. k6 benchmarklarına (2024) görə, tipik Load Test konfiqurasiyası 5 dəqiqə ərzində 0-dan 1000 VU-’a qədər rampanı əhatə edir.
Stress testi (Stress Test) tətbiqin sıradan çıxma nöqtəsini müəyyən edir — sistemin sorğulara cavab verməyi dayandırdığı və ya qəbuledilməz dərəcədə deqradasiyaya uğradığı an. Load Test-’dən fərqli olaraq, Stress Test sistemi normal hədlərdən yuxarı yükləyir. Sıradan çıxma nöqtəsi meyarlardan birinə görə qeydə alınır: cavab müddəti 10 saniyədən çox olarsa, 5XX səhvlərinin faizi 5%-dən çox olarsa və ya RAM istehlakı mövcudun 90%-’nə çatarsa.
Həcm testi (Volume Test) böyük həcmdə məlumatlarla işləyərkən tətbiqin davranışını qiymətləndirir. Mobil kontekstdə bu, yerli verilənlər bazasında minlərlə qeyd, onlarla giqabayt keş və ya milyonlarla push bildirişi ilə işin yoxlanılmasıdır. SQLite Android-’də və Core Data iOS-’da 100000 qeyddən yuxarı həcmdə fərqli performans göstərir.
Xcode Instruments — iOS tətbiqlərinin profilləşdirilməsi üçün əsas alət. Time Profiler hansı metodların ən çox CPU istehlak etdiyini göstərir, Allocations isə yaddaşın ayrılmasını və boşaldılmasını izləyir. Instruments uzun sessiyalar (30 dəqiqəyə qədər) ərzində yazmağı və qurmalar arasında müqayisə üçün treylərin ixracını dəstəkləyir. Activity Monitor Instruments daxilində real vaxtda sistemin ümumi yükünü göstərir.
Android Studio Profiler — Android üçün daxili profilləşdirici. CPU, Memory, Network və Energy profillərini vahid interfeysdə birləşdirir. Android Profiler-ın xüsusiyyəti interaktiv sessiyaları dəstəkləməsidir: tərtibatçı tətbiqdə hərəkətlər edə bilər və metrikaların ani reaksiyasını görə bilər. Google I/O (2024) məlumatına görə, Profiler .perf formatında yazmağı dəstəkləyir, onu CI-’da baseline ilə müqayisə etmək olar.
Charles Proxy və Proxyman — şəbəkə trafikinin analizi üçün alətlər. Onlar hər HTTP sorğusunun vaxtını, cavab ölçüsünü və başlıqlarını göstərir. Performans Testi üçün 500 ms-dən uzun çəkən sorğuları qeyd etmək vacibdir — bunlar keşləşdirmə və ya optimallaşdırma üçün namizədlərdir. Charles yavaş şəbəkələri simulyasiya edən throttle rejimini dəstəkləyir: 3G, Edge və LTE. Proxyman macOS üçün yerli Swift arxitekturası ilə daha yüngül alternativdir.
import XCTest
class PerformanceTests: XCTestCase {
func testLaunchPerformance() {
measure(metrics: [XCTClockMetric(),
XCTMemoryMetric()]) {
XCUIApplication().launch()
}
}
func testScrollPerformance() {
let app = XCUIApplication()
app.launch()
let tableView = app.tables["list"]
measure {
tableView.swipeUp()
tableView.swipeDown()
}
}
}
Performans Testinin CI/CD-’yə inteqrasiyası 2025–2026-cı illər üçün sənaye standartıdır. Performans pipeline-ı üç mərhələdən ibarətdir: pre-commit (pull request-’də sürətli ölçülər), nightly (tam test dəsti) və pre-release (etalon cihazlarda baseline ilə müqayisə). Bitrise və GitHub Actions Xcode Instruments CLI və Gradle Profiler-ın işə salınmasını dəstəkləyir.
GitHub Actions (2024) `xcodebuild test-without-building` istifadə edərək iOS Performans Testi üçün rəsmi şablon dərc etdi. Şablon testləri GitHub maşınlarından birində işə salır və hesabatı artifact-’də dərc edir. Baseline repozitoriyada JSON faylında saxlanılır: hədd 10% aşıldıqda pipeline xəta ilə dayanır. Bu yanaşma hər qurmanın əl ilə yoxlanılması olmadan performans deqradasiyasının qarşısını alır.
CI-’da mobil Performans Testinin problemi — müxtəlif maşınlarda nəticələrin qeyri-sabitliyidir. Apple Silicon (M1–M4) və Intel Xeon fərqli icra müddətləri verir. Həll yolu — mütləq dəyərlər deyil, baseline-’a faiz nisbəti istifadə etməkdir. Əgər test baseline-’dan 15% uzun çəkərsə — qurma yoxlama tələb edən kimi qeyd olunur.
XCTest Performance iOS-’da `measure(metrics:)` metodundan istifadə edir, o kodu 10 dəfə işə salır və statistikaları qaytarır: orta, median, standart kənarlaşma. Verilənlər bazası performansının test edilməsi üçün XCTest-də pik RAM istehlakını qeyd edən XCTMemoryMetric-dən istifadə etmək rahatdır. Hədd test bitdikdən sonra `XCTPerformanceReport` vasitəsilə təyin edilir.
Android Macrobenchmark — Google-’un tətbiq səviyyəsində performans ölçülməsi üçün kitabxanası. Macrobenchmark istifadəçi ssenarilərini (Activity-nin başlanması, RecyclerView-ın sürüşdürülməsi, WebView-ın açılması) işə salır və icra müddətini ölçür. Baseline Profile — Android kompilyatorunun əvvəlcədən optimallaşdırdığı sinif və metodlar dəstidir. Google Play ilk başlanmanı 30% sürətləndirmək üçün Baseline Profile-’dan istifadə edir.
@RunWith(AndroidJUnit4::class)
class StartupBenchmark {
@get:Rule
val benchmarkRule = MacrobenchmarkRule()
@Test
fun startup() {
benchmarkRule.measureRepeated(
packageName = "com.example.app",
metrics = listOf(StartupTimingMetric()),
iterations = 5
) {
pressHome()
startActivityAndWait()
}
}
}
Hər iki yanaşma — XCTest Performance və Android Macrobenchmark — eyni konsepsiyadan istifadə edir: ortalama ilə çoxsaylı ölçmə və həddlə müqayisə. Performans bir rəqəmə endirilə bilməz. Hər buraxılış son 5 qurma üzrə metrika trendlərini ehtiva edən performans hesabatı ilə müşayiət olunmalıdır. Belə bir hesabat komandaya istifadəçilər hiss etməzdən əvvəl deqradasiyanı görməyə imkan verir.
Tez-tez verilən suallar
Performans Testi — Load Test, Stress Test, Volume Test və digər növləri əhatə edən geniş kateqoriyadır. Load Test — gözlənilən yük altında sistemin davranışını yoxlayan Performans Testinin xüsusi halıdır. Bütün Load Testlər Performans Testləridir, lakin əksinə deyil.
Əsas ölçülər (soyuq başlanğıc, FPS, RAM) — hər pull request-’də. Tam Performans Testi dəsti — hər buraxılışdan əvvəl. Gecə qaçışları — gündəlik qurmaları olan layihələr üçün. Google Macrobenchmark-ı gündə ən azı bir dəfə yerinə yetirməyi tövsiyə edir.
Üç metrika kritik hesab olunur: soyuq başlanğıc müddəti (5 saniyədən çox olmamalı), sürüşdürmə zamanı FPS (55 FPS-dən az olmamalı) və pik RAM istehlakı (200 MB-dan çox olmamalı). Google Play Console və App Store Connect avtomatik olaraq bu metrikaları izləyir.
Bəli, Performans Testi Xcode CLI (`xcodebuild test`) və Gradle (`gradle connectedCheck`) vasitəsilə tam avtomatlaşdırılır. k6 və Gatling kimi alətlər server hissəsinin yük testini avtomatlaşdırır. CI/CD inteqrasiyası insan iştirakı olmadan Performans Testini işə salmağa imkan verir.
Baseline (baza xətti) — yeni qurmaların nəticələrinin müqayisə edildiyi etalon performans ölçüsüdür. Baseline ilk stabil buraxılış mərhələsində müəyyən edilir və JSON və ya XML-də saxlanılır. Yeni qurma baseline-ı 10% aşarsa, CI pipeline reqressiya barədə siqnal verir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun