Çəyirtkə ilə API Yükləmə Testi

Çəyirtkə ilə API Yükləmə Testi

Çəyirtkə ilə API Yükləmə Testi: Giriş

Siz yəqin ki, əvvəllər belə vəziyyətdə olmusunuz: siz nəyisə edən kod yazırsınız, məsələn, son nöqtə. Siz Postman və ya Insomnia istifadə edərək son nöqtənizi sınayırsınız və hər şey yaxşı işləyir. Siz son nöqtəni müştəri tərəfi tərtibatçısına ötürürsən, o da sonra onu istehlak edir API və tətbiqi yerləşdirir. Lakin istifadəçilər tətbiqdən istifadə etdikdə API uğursuz olur.

Bu, bir iş üçün baha başa gələn bir şey deyil, çox zəhlətökən bir vəziyyət ola bilər. Buna görə proqram tərtibatçıları proqram sistemlərində gözlənildiyi kimi işləmələrini təmin etmək üçün müxtəlif testlər həyata keçirirlər. API-lər fərqli deyil. Yerləşdirmədən əvvəl ən azı performans testləri və təhlükəsizlik testləri etməlisiniz.

Performans testləri funksionallıq testləri və yükləmə testləri şəklində qruplaşdırıla bilər. Funksionallıq testləri adətən Postman və ya Insomniadan istifadə etdiyiniz şeydir. API-nizin gözlədiyiniz kimi işləməsini təmin edirlər. Yük testləri, əksinə, API-nin real dünya istifadəsi və pik yüklə necə işləməsi ilə daha çox maraqlanır və bu məqalənin mövzusu budur. Yük testlərinə daha ətraflı baxaq.

API Yük Testi nədir?

API yük sınağı, inkişaf etdiricilərin son nöqtələrdə normal və pik yükü simulyasiya etmək üçün istifadə etdiyi bir sınaq növüdür. Bu cür sınaq tərtibatçılara API tətbiq edilməzdən əvvəl onun real dünya performansını qiymətləndirməyə imkan verir. Bu, onlara sistemin maksimum işləmə qabiliyyətini, əgər varsa, darboğazları və performansın pisləşməsini müəyyən etməyə kömək edir. API yükləmə testləri adətən virtual istifadəçilər yaratmaq və sonra API-nin funksionallığını eyni vaxtda yoxlamaq üçün istifadə etməklə həyata keçirilir. 

API yük testləri cavab müddəti, eyni vaxtda istifadəçilər, ötürmə sürətləri, resursdan istifadə səviyyələri, Uğursuzluq Arasında Orta Vaxt (MTBF), Uğursuzluq üçün Orta Vaxt (MTTF) və s. kimi ölçüləri ölçür. Bütün bu ölçülər API-nin nə qədər yaxşı işlədiyini müəyyən etmək üçün istifadə edilə bilər.

Yük testinin növləri

Hər birində istifadə halları olan bir neçə növ yük testi var. Gəlin onlardan bəzilərinə nəzər salaq.

Yük testi: Bu, yük testinin əsas formasıdır. Normal yük və gözlənilən pik yük altında sistemin (bu halda API) işini qiymətləndirmək üçün istifadə olunur.

Stress Testi: Bu, çox ağır yük altında sistemin işini qiymətləndirmək üçün istifadə olunur. Bu testin məqsədi sistemin uğursuzluqdan sonra bərpa olub-olmadığını və bunun üçün nə qədər vaxt lazım olduğunu öyrənməkdir. Yük adətən sistemin imkanlarını aşana qədər yavaş-yavaş artırılır.

Spike Testi: Bu, stress testinə bir az bənzəyir, ancaq ağır yükün yavaş-yavaş yüksəldilməsinin əksinə, qəfil tətbiq edilməsi istisna olmaqla. Bu cür test istifadəçi və ya ziyarətçilərin orta sayında qəfil artım olduqda və ya sisteminizə DDOS hücumu olduqda baş verənləri əks etdirir.

Islatma Testi: Bu test yuxarıdakı digər testlərdən fərqlidir. Bu, sisteminizi normal yükün 80%-nin (və ya təxminən) altına qoyur və onu uzun müddət, məsələn, 12-14 saat ərzində işlək vəziyyətdə qoyur. Bu cür test zamanla sistemin nə qədər etibarlı olduğunu müəyyən edir.

Çəyirtkə ilə API-lərinizi sınaqdan keçirin

Tərtibatçıların API-lərini yükləmə sınağı üçün müxtəlif seçimlərə giriş imkanı var. Bəzi ümumi yük test alətləri Gatling, JMeter və Locust-dur. Bu yazıda Çəyirtkəyə diqqət yetirəcəyik.

Locust, Google, Microsoft və Riot Games kimi ən yaxşı şirkətlər tərəfindən API-lərini sınaqdan keçirmək üçün istifadə olunan piton əsaslı açıq mənbəli yük testi vasitəsidir. Bu yazıda bir API testini necə yükləməyi nümayiş etdirəcəyik. 

Bu dərslik üçün mən Flask ilə sadə API yaradacağam. Siz mənimlə birlikdə izləyə bilərsiniz və ya sadəcə API-nizi Node ilə və ya rahat olduğunuz çərçivə ilə yarada bilərsiniz.

Tələblər

Python 3

Quraşdırma və Quraşdırma

Birincisi, qlobal Python mühitinizi pozmamaq üçün kompüterinizdə virtual mühit qurmalısınız. Bunu etmək üçün aşağıdakı əmrləri yerinə yetirin. Qeyd edək ki, bu əmrlər Windows terminalına aiddir.

$ mkdir layihəsi

$ cd /d layihəyə gedən yol

$ python -m venv venv

$ venv\Scripts\aktivləşdirin

 

Əvvəlcə biz yaratdıq layihə kataloq. Sonra mövcud kataloqumuzu dəyişdirdik layihə. Daha sonra həmin kataloq daxilində Python üçün virtual mühit yaratdıq və aktivləşdirdik. 

İndi quraşdırmaya davam edəcəyik Kolba(biz ondan yüklə sınaqdan keçiriləcək son nöqtələri yaratmaq üçün istifadə edəcəyik) və Locust özü. 

 

Flask quraşdırmaq üçün işə salın. içində olduğunuzdan əmin olun layihə virtual mühit yaratdığınız yer.

$ pip quraşdırma kolbası

 

Çəyirtkəni quraşdırmaq üçün işə salın

$ pip quraşdırma çəyirtkə

 

Bunu etdikdən sonra aşağıdakı əmrləri yazın. Sizdə olduğunuzdan əmin olun layihə Bunu etdiyiniz zaman kataloq.

$ surəti nul __init__.py

$ mkdir proqramı

$ surəti nul app\app.py

$ surəti nul app\__init__.py

 

Bu əmr Flask istifadə edərək son nöqtələrimizi yaratmaq üçün istifadə edəcəyimiz bəzi fayllar yaradır. Yeri gəlmişkən, bu faylları fayl tədqiqatçınızdan istifadə edərək də yarada bilərsiniz. Bəs bunun əyləncəsi nədir? Bunu etdikdən sonra aşağıdakı kodu kopyalayın app.py

flask idxal Flask, jsonify, sorğu

proqram = Flask(__adı__)

avtomobil_modelləri = [

  { 'brend': 'Tesla', 'model': 'Model S' }

]

 

təyyarə_modelləri = [

  { 'brend': 'Boeing', 'model': '747' }

]

 

@app.route('/cars')

def get_cars():

  jsonify (car_models) qaytarın

@app.route('/planes')

def get_planes():

  jsonify (təyyarə_modelləri) qaytarın

əgər __adı__ == '__əsas__':

    app.run(debug=Doğru)  

 

Yuxarıdakı kodda bir metod var maşınları_alın avtomobil markalarının və onların modellərinin siyahısını almaq üçün istifadə olunur və təyyarələri_alın təyyarə markalarının və onların modellərinin siyahısını almaq üçün istifadə olunur. Bu son nöqtəni sınaqdan keçirməyimiz üçün app.py-ni işə salmalıyıq. Bunu etmək üçün aşağıdakı əmri işlədin.

$ python yolu\to\app.py

Bunu işə saldıqdan sonra belə bir şey görməlisiniz:

API Yükləmə Testi 1

Terminaldan URL-i köçürüb yazırsanız avtomobil or təyyarə /-dan sonra oradakı məlumatları görə bilməlisiniz. Bununla belə, məqsədimiz son nöqtəni brauzerlə yox, çəyirtkə ilə yoxlamaqdır. Beləliklə, bunu edək. Kökündə aşağıdakı əmri işlədin layihə kataloq.

 

$ surəti nul locust_test.py

 

Bu, faylınızın kökündə 'locust_test.py' faylı yaradır layihə kataloq. Bunu etdikdən sonra faylı açın və aşağıdakı kodu daxil edin. Qısa zamanda izah edəcəyik.

 

idxal vaxtı

çəyirtkə idxal HttpUser, vəzifə, arasında

 

Class UserBehaviour(HttpUser):

    gözləmə_vaxtı = arasında (5, 10)

 

    @task

    def get_cars(self):

        self.client.get('/cars')

    

    @task

    def get_planes(self):

        self.client.get('/planes')

 

Bu, API testini yükləmək üçün Locust-dan istifadənin əsas nümunəsidir. Əvvəlcə bir sinif yaradırıq İstifadəçi Davranışı, istənilən uyğun ad verilə bilər, lakin genişləndirilməlidir HttpUser. HttpUser -də göstərdiyimiz tapşırıqları yerinə yetirmək üçün birdən çox virtual istifadəçinin yaradılmasının qayğısına qalan sinifdir İstifadəçi Davranışı sinif. 

Tapşırıq, metodu ilə bəzəyərək müəyyən edilir @task dekorator. adlı bir funksiyamız da var arasında() növbəti tapşırığı yerinə yetirməzdən əvvəl gözləmək üçün bir sıra saniyələri təyin etməyə imkan verir. Kodumuzda bunun üçün 5-10 saniyə aralığı təyin etdiyimizi görə bilərsiniz. 

Kodu işə salmaq üçün hələ də virtual mühitinizdə olduğunuzdan əmin olun. Yaratdığınız biri API-yə xidmət göstərən server tərəfindən istifadə olunursa, yeni terminal açın, kataloqunuzu öz layihə qovluğuna daxil olun və yaratdığınız virtual mühiti aktivləşdirin. Virtual mühiti aktivləşdirmək əmrini yuxarıda tapa bilərsiniz. İndi terminalınıza aşağıdakı əmri daxil edin.

 

$ çəyirtkə -f locust_test.py

 

Buna bənzər bir şey görməlisiniz:

API Yükləmə Testi 2

Varsayılan olaraq, çəyirtkə veb interfeysi http://localhost/8089 ünvanında yerləşir. Veb saytına daxil olsanız, belə bir interfeys görməlisiniz:

API Yükləmə Testi 3

İnterfeysdən istifadəçilərin sayını, kürü sürətini (saniyədə yaradılan istifadəçilər) və Host təyin edə bilərik. Serverin işlədiyi terminalı yoxlayaraq hostunuzun ünvanını əldə edə bilərsiniz. Bizim vəziyyətimizdə o, 5000 portundadır. üzərinə kliklədiyiniz zaman Qoşmağa başla, sizə aşağıdakı interfeys təqdim olunacaq.

API Yükləmə Testi 4

Bu, uğursuz sorğuların sayı, sorğu üçün orta vaxt, sorğu üçün minimum vaxt, saniyədə sorğular və s. kimi müxtəlif faydalı göstəriciləri göstərir. Gördüklərinizdən razı qaldıqdan sonra dayanma düyməsini sıxa bilərsiniz. 


Olan başqa Statistika nişanı, var Charts daha çox göstərən tab məlumat aşağıdakı şəkildəki kimi bir qrafik şəklində.

Bir var saniyə üçün ümumi sorğular qrafiki, cavab müddəti qrafiki,istifadəçi sayı qrafiki, hamısı zamana qarşı qurulmuşdur. Qrafiklərdən istifadə edərək, sabit cavab müddəti üçün nə qədər istifadəçinin məqbul olduğunu müəyyən edə bilərsiniz və ya artan istifadəçi sayına və bu kimi digər anlayışlara baxmayaraq, daimi cavab müddəti üçün qrafiklərinizi müşahidə edə bilərsiniz. Bunları paylaşmaq istəyirsinizsə stats başqası ilə, siz bir hesabat yükləyə bilərsiniz Məlumat yükləyin nişanı.

Nəticə vermək üçün...

API-nizi yüklə sınamaq inkişaf prosesinizdə mühüm fəaliyyətdir, ona görə də onun dizayn dövrünüzə daxil olduğundan əmin olun. Yeri gəlmişkən, istifadəçilərin sayı və kürü sürəti üçün dəyərləri dəyişdirərək digər yük test növlərini də həyata keçirə bilərsiniz. 

Əgər sünbül testi etmək istəyirsinizsə, istifadəçilərin sayı üçün böyük bir dəyər (məsələn, 2000) və sonra kürü sürətiniz üçün eyni dərəcədə böyük bir dəyər (məsələn, 500) göstərin. Bu o deməkdir ki, 4 saniyə ərzində siz 2000 istifadəçinin hamısını yaratmış və son nöqtələrinizə daxil olacaqsınız. Stress testi oxşar olacaq, lakin kürü sürəti üçün daha aşağı qiymətə malikdir. Bütün edə biləcəyinizi öyrənmək üçün Çəyirtkəyə baxın sənədlər