API testi müasir proqram təminatının inkişafında ən mühüm bacarıqlardan biridir. Tətbiqlərin getdikcə daha çox mikroxidmətlər arxitekturasına, üçüncü tərəf inteqrasiyalarına və mobil arxaplanlarına asılılığa keçdiyi bir dövrdə API-lərin keyfiyyəti və etibarlılığı onların üzərinə qurulan məhsulların keyfiyyətini birbaşa müəyyən edir.
API Testi Niyə Vacibdir
API-lər proqram sistemləri arasında müqavilələrdir. API pozulanda ona asılı olan hər müştəri də pozulur -- mobil tətbiqlər çökür, veb frontendlər səhv göstərir, inteqrasiyalar sessizliklə uğursuzlaşır və məlumatlar korlanır. API testi bu problemləri istehsalata çatmazdan əvvəl tutur.
**API testi üçün biznes arqumenti inandırıcıdır:**
- İnkişaf zamanında tutulan API xətaları istehsalda tutulan xətalardan 10 dəfə az təmir xərci tələb edir
- Avtomatlaşdırılmış API testləri dəqiqələr və ya saatlar alan manual UI testinə nisbətən saniyələr ərzində işləyir
- API testləri UI testlərindən daha sabitdir, çünki API-lər istifadəçi interfeylərindən daha az dəyişir
- Əhatəli API test dəsti API-nin həqiqətdə necə davrandığının canlı sənədləşdirilməsi kimi xidmət edir
API Test Növləri
**Funksional test** hər API son nöqtəsinin verilmiş giriş üçün düzgün cavab qaytardığını təsdiq edir. GET /users istifadəçilər siyahısını qaytarırmı? POST /orders düzgün sahələrlə yeni sifariş yaradırmı? DELETE /items/123 həqiqətən elementi silirsmi?
**Təsdiq testi** cavabların gözlənilən sxemə uyğun gəldiyini yoxlayır -- düzgün məlumat növləri, tələb olunan sahələr mövcud, düzgün formatlaşdırma.
**İnteqrasiya testi** bir neçə API son nöqtəsinin birgə düzgün işlədiyini təsdiq edir. Sifariş yaratmaq inventar, ödəniş və bildiriş xidmətinin çağrılmasını ehtiva edə bilər.
**Performans testi** müxtəlif yük şərtlərində cavab müddətlərini, ötürmə qabiliyyətini və resurs istifadəsini ölçür.
**Təhlükəsizlik testi** zəiflikləri araşdırır -- autentifikasiya keçidi, SQL inyeksiyası, XSS, pozulmuş erişim nəzarəti və məlumat ifşası.
API Testi üçün Əsas Alətlər
### HTTP Müştəriləri
**Postman** ən populyar API test alətidir. Kolleksiya xüsusiyyəti sorğuları məntiqi qruplara təşkil edir.
**Insomnia** daha təmiz interfeysi olan yüngül alternativdir. GraphQL-i nativ dəstəkləyir.
**curl** komanda sətiri standartıdır. Hər tərtibatçı əsas curl əmrləri ilə rahat olmalıdır.
**Brauzer əsaslı alətlər** -- Vaxtım Yoxdu-dakılər kimi -- API işi zamanı sürətli məlumat manipulyasiyası üçün qiymətlidir. JSON Formatlayıcı API cavablarını təsdiq edir və gözəlləşdirir, Base64 Kodlayıcı autentifikasiya token kodlamasını idarə edir, URL Kodlayıcı sorğu parametrlərinin düzgün formatlaşdırılmasını təmin edir.
Effektiv API Testlərinin Yazılması
### Sorğu Qurulumu
- **HTTP metodu**: GET, POST, PUT, PATCH, DELETE -- əməliyyat üçün düzgün metodu istifadə edin
- **URL və yol parametrləri**: Dinamik seqmentlərin düzgün əvəz edildiyini təmin edin
- **Sorğu parametrləri**: Xüsusi simvolların idarə edilməsi üçün bütün sorğu parametrlərinin URL kodlaşdırılmasını edin
- **Başlıqlar**: Content-Type, Authorization, Accept düzgün müəyyən edilməlidir
- **Sorğu mətni**: POST və PUT sorğuları üçün mətn etibarlı JSON olmalıdır
- **Autentifikasiya**: Bearer tokenlər, API açarları düzgün daxil edilməlidir
### Cavab Təsdiqləməsi
Yalnız status kodunu yoxlamayın -- tam cavabı təsdiq edin:
- Status kodu: 200, 201, 204, 400, 401, 403, 404, 500 -hər birinin xüsusi mənası var
- Cavab mətni: Hər sahənin strukturunu, məlumat növlərini və dəyərlərini təsdiq edin
- Başlıqlar: Content-Type, keş başlıqları, sürət məhdudiyyəti başlıqları yoxlayın
- Cavab müddəti: Maksimum qəbul edilə bilən cavab müddətləri müəyyən edin
- Səhv cavabları: Səhv cavablarının mənalı səhv mesajları ehtiva etdiyini təsdiq edin
Autentifikasiya Testi
- **Etibarlı etimadnamələr**: Düzgün etimadnamələrin autentifikasiya tokeni qaytardığını təsdiq edin
- **Etibarsız etimadnamələr**: Səhv şifrələrin 500 deyil, 401 qaytardığını təsdiq edin
- **Müddəti bitmiş tokenlər**: Müddəti bitmiş JWT tokenlərinin rədd edildiyini təsdiq edin
- **Əksik autentifikasiya**: Qorunan son nöqtələrin token verilmədikdə 401 qaytardığını təsdiq edin
- **Kifayətsiz icazələr**: Lazımi rolu olmayan istifadəçilərin 403 aldıqlarını təsdiq edin
Ümumi API Test Səhvləri
- **Yalnız uğurlu yolların test edilməsi**: Test dəstiniz səhv halları, kənar halları və sərhəd şərtlərini ehtiva etməlidir.
- **Cavab müddətlərinin nəzərə alınmaması**: Funksional olaraq düzgün amma cavab verməyə 30 saniyə çəkən API effektiv olaraq pozulmuşdur.
- **Parallelliyin test edilməməsi**: Eyni anda bir istifadəçi üçün mükəmməl işləyən API-lər paralel yük altında uğursuz ola bilər.
- **Test məlumatlarının kodda sabitlənməsi**: Xüsusi verilənlər bazası qeydlərinə asılı olan testlər kövrəkdir.
- **Təhlükəsizlik testlərinin atlanması**: SQL inyeksiyası və XSS zəiflikləri avtomatlaşdırılmış təhlükəsizlik testi ilə önlənə bilər.
CI/CD İnteqrasiyası
API testləri hər kod dəyişikliyində avtomatik işləməlidir:
- Pre-commit: Xarici asılılıqları mak edən sürətli vahid testlərini işlədin
- Pull request: Staging mühitinə qarşı inteqrasiya testlərini işlədin
- Yerləşdirmədən əvvəl: Performans testləri daxil tam test dəstini işlədin
- Yerləşdirmədən sonra: Yerləşdirmənin uğurlu olduğunu təsdiq etmək üçün istehsala qarşı tüstü testlərini işlədin
Vaxtım Yoxdu-dakı pulsuz tərtibatçı alətləri API test iş axınının hər addımında sizə dəstək olur. JSON cavablarını formatlayin və təsdiq edin, Base64 autentifikasiya başlıqlarını kodlayın və dekodlayın, JWT tokenlərini yoxlayın və sorğu parametrlərini URL-kodlayın -- hamısı brauzerinizdə, hamısı gizli, hamısı pulsuz.