Chigirtka bilan API yuk sinovi

Chigirtka bilan API yuk sinovi

Chigirtka bilan API yukini tekshirish: Kirish

Ehtimol, siz avval ham shunday vaziyatda bo'lgansiz: siz biror narsani bajaradigan kod yozasiz, masalan, oxirgi nuqta. Siz oxirgi nuqtangizni Postman yoki Insomnia yordamida sinab ko'rasiz va hamma narsa yaxshi ishlaydi. Siz so'nggi nuqtani mijoz tomonidan ishlab chiquvchiga o'tkazasiz, so'ngra u iste'mol qiladi API va ilovani ishga tushiradi. Ammo keyin, foydalanuvchilar ilovadan foydalanganda API muvaffaqiyatsiz tugadi.

Bu biznes uchun qimmatga tushmaslik uchun juda zerikarli vaziyat bo'lishi mumkin. Shuning uchun dasturiy ta'minot ishlab chiquvchilari dasturiy ta'minot tizimlarida kutilgan darajada ishlashini ta'minlash uchun turli xil testlarni o'tkazadilar. API-lar farq qilmaydi. Joylashtirishdan oldin siz kamida ishlash testlari va xavfsizlik testlarini o'tkazishingiz kerak.

Ishlash testlarini funksionallik testlari va yuk testlariga guruhlash mumkin. Funktsionallik testlari odatda Postman yoki Insomniadan foydalanadigan narsadir. Ular sizning API siz kutganingizdek ishlashini ta'minlaydi. Boshqa tomondan, yuk testlari sizning API-ning haqiqiy foydalanish va eng yuqori yuk bilan qanday ishlashi bilan ko'proq bog'liq va bu maqola shu haqida. Keling, yuk testlarini batafsil ko'rib chiqaylik.

API yuk testi nima?

API yuk testi - bu ishlab chiquvchilar so'nggi nuqtalarda normal va eng yuqori yukni simulyatsiya qilish uchun foydalanadigan sinov turi. Ushbu turdagi sinov ishlab chiquvchilarga API o'rnatilishidan oldin uning haqiqiy ishlashini baholash imkonini beradi. Bu ularga tizimning maksimal ish qobiliyatini, agar mavjud bo'lsa, qiyinchiliklarni va ishlashning pasayishini aniqlashga yordam beradi. API yuk testlari odatda virtual foydalanuvchilarni yaratish va keyin ulardan API funksiyalarini bir vaqtning o'zida sinab ko'rish uchun foydalanish orqali amalga oshiriladi. 

API yuk testlari javob vaqti, bir vaqtda foydalanuvchilar, o'tkazish tezligi, resurslardan foydalanish darajalari, muvaffaqiyatsizlik orasidagi o'rtacha vaqt (MTBF), muvaffaqiyatsizlikka uchragan o'rtacha vaqt (MTTF) va boshqalar kabi ko'rsatkichlarni o'lchaydi. Ushbu ko'rsatkichlarning barchasi API qanchalik yaxshi ishlashini aniqlash uchun ishlatilishi mumkin.

Yuklarni sinovdan o'tkazish turlari

Bir necha turdagi yuk sinovlari mavjud, ularning har biri o'z holatlariga ega. Keling, ulardan ba'zilarini ko'rib chiqaylik.

Yuk sinovi: Bu yuk sinovining asosiy shakli. Oddiy yuk va kutilgan eng yuqori yuk ostida tizimning ishlashini (bu holda API) baholash uchun ishlatiladi.

Stress testi: Bu juda og'ir yuk ostida tizimning ishlashini baholash uchun ishlatiladi. Ushbu testning maqsadi tizim muvaffaqiyatsizlikdan keyin tiklanadimi yoki yo'qligini va buning uchun qancha vaqt ketishini ko'rishdir. Yuk odatda tizimning imkoniyatlaridan oshib ketguncha asta-sekin ko'tariladi.

Spike testi: Bu stress testiga biroz o'xshaydi, faqat og'ir yuk asta-sekin ko'tarilishdan farqli o'laroq, to'satdan qo'llaniladi. Ushbu turdagi test sizning o'rtacha foydalanuvchilar yoki tashrif buyuruvchilar sonining keskin o'sishi yoki tizimingizga DDOS hujumi sodir bo'lganda nima sodir bo'lishini ko'rsatadi.

Namlik sinovi: Ushbu test yuqoridagilardan farq qiladi. Bu sizning tizimingizni normal yukning 80% (yoki taxminan) ostiga qo'yadi va uni uzoq vaqt, masalan, 12 dan 14 soatgacha ishlaydi. Ushbu turdagi test tizimning vaqt o'tishi bilan qanchalik ishonchli ekanligini aniqlaydi.

Chigirtka bilan API-laringizni sinovdan o'tkazing

Ishlab chiquvchilar o'zlarining API-larini yuklashni sinab ko'rish uchun turli xil variantlardan foydalanishlari mumkin. Ba'zi umumiy yuk sinov vositalari Gatling, JMeter va Locust. Biz ushbu maqolada chigirtkaga e'tibor qaratamiz.

Chigirtka - bu Google, Microsoft va Riot Games kabi eng yaxshi kompaniyalar tomonidan API'larini sinab ko'rish uchun ishlatiladigan python-ga asoslangan ochiq manba yuk sinov vositasi. Ushbu maqolada biz API testini qanday yuklashni ko'rsatamiz. 

Ushbu qo'llanma uchun men Flask bilan oddiy API yarataman. Siz men bilan birga kuzatib borishingiz yoki shunchaki API-ni Node yoki o'zingizga qulay bo'lgan ramka yaratishingiz mumkin.

talablar

Python 3

O'rnatish va o'rnatish

Birinchidan, global Python muhitingizni buzmaslik uchun shaxsiy kompyuteringizda virtual muhitni o'rnatishingiz kerak. Buning uchun quyidagi buyruqlarni bajaring. Ushbu buyruqlar Windows terminaliga tegishli ekanligini unutmang.

$ mkdir loyihasi

$ cd /d loyihaga yo'l

$ python -m venv venv

$ venv\Scripts\activate

 

Birinchidan, biz yaratdik loyiha katalog. Keyin biz joriy katalogimizni o'zgartirdik loyiha. Keyin biz ushbu katalog ichida Python uchun virtual muhit yaratdik va faollashtirdik. 

Endi biz o'rnatishga o'tamiz chirog'i(biz undan yukni sinab ko'rish uchun so'nggi nuqtalarni yaratish uchun foydalanamiz) va Chigirtka o'zi. 

 

Flaskni o'rnatish uchun ishga tushiring. ichida ekanligingizga ishonch hosil qiling loyiha virtual muhit yaratgan joyingiz.

$ pip o'rnatish kolbasi

 

Chigirtkani o'rnatish uchun ishga tushiring

$ pip o'rnatish chigirtka

 

Bu bajarilgandan so'ng, quyidagi buyruqlarni yozing. Sizning ichingizda ekanligingizga ishonch hosil qiling loyiha buni qilganingizda katalog.

$ nusxa nul __init__.py

$ mkdir ilovasi

$ null app\app.py nusxasi

$ nul ilovani nusxalash\__init__.py

 

Bu buyruqlar Flask yordamida so'nggi nuqtalarimizni yaratish uchun foydalanadigan ba'zi fayllarni yaratadi. Aytgancha, siz ushbu fayllarni fayl tadqiqotchisi yordamida ham yaratishingiz mumkin. Lekin buning nimasi qiziq? Buni qilganingizdan so'ng, quyidagi kodni nusxalang app.py

from flask import Flask, jsonify, so'rov

ilova = Flask (__name__)

avtomobil_modellari = [

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

]

 

samolyot_modellari = [

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

]

 

@app.route('/cars')

def get_cars():

  jsonify(car_models)ni qaytarish

@app.route('/planes')

def get_planes():

  jsonify (plane_models)ni qaytarish

agar __name__ == '__asosiy__':

    app.run(debug=To'g'ri)  

 

Yuqoridagi kodda usul mavjud get_cars avtomobil markalari va ularning modellari ro'yxatini olish uchun ishlatiladi, va get_planes samolyot brendlari va ularning modellari ro'yxatini olish uchun foydalaniladi. Ushbu so'nggi nuqta sinovini yuklashimiz uchun app.py dasturini ishga tushirishimiz kerak. Buning uchun quyidagi buyruqni bajaring.

$ python path\to\app.py

Buni ishga tushirgandan so'ng, siz shunga o'xshash narsani ko'rishingiz kerak:

API yuk sinovi 1

Agar siz URLni terminaldan ko'chirsangiz va yozsangiz Masofa bosib o'tgan avtomobillar or samolyotlar / dan keyin siz u erda ma'lumotlarni ko'rishingiz kerak. Biroq, bizning maqsadimiz oxirgi nuqtani brauzer bilan emas, balki chigirtka bilan sinab ko'rishdir. Shunday qilib, buni qilaylik. O'zingizning ildizingizda quyidagi buyruqni ishga tushiring loyiha katalog.

 

$ nul nusxa locust_test.py

 

Bu sizning ildizingizda "locust_test.py" faylini yaratadi loyiha katalog. Buni qilganingizdan so'ng, faylni oching va quyidagi kodni joylashtiring. Buni qisqa vaqt ichida tushuntiramiz.

 

import vaqti

chigirtka importidan HttpUser, vazifa, orasida

 

Class UserBehaviour(HttpUser):

    kutish_vaqti = orasida (5, 10)

 

    @task

    def get_cars(self):

        self.client.get('/cars')

    

    @task

    def get_planes(self):

        self.client.get('/planes')

 

Bu API sinovini yuklash uchun Locust-dan foydalanishning asosiy misolidir. Birinchidan, biz sinf yaratamiz Foydalanuvchining xatti-harakati, bu har qanday mos nom berilishi mumkin, lekin kengaytirilishi kerak HttpUser. HttpUser biz ko'rsatgan vazifalarni bajarish uchun bir nechta virtual foydalanuvchilarni yaratishga g'amxo'rlik qiladigan sinf Foydalanuvchining xatti-harakati sinf. 

Vazifa bilan metodni bezash orqali aniqlanadi @task dekorator. Bizda funksiya mavjud orasida() bu bizga keyingi vazifani bajarishdan oldin kutish uchun soniyalar oralig'ini belgilash imkonini beradi. Kodimizda buning uchun 5 dan 10 sekundgacha vaqt ajratilganligini ko'rishingiz mumkin. 

Kodni ishga tushirish uchun siz hali ham virtual muhitda ekanligingizga ishonch hosil qiling. Agar siz yaratganingiz API-ga xizmat ko'rsatuvchi server tomonidan foydalanilayotgan bo'lsa, yangi terminalni oching, katalogingizni o'z manzilingizga o'zgartiring. loyiha katalogini oching va yaratgan virtual muhitni faollashtiring. Virtual muhitni faollashtirish buyrug'ini yuqorida topishingiz mumkin. Endi terminalingizga quyidagi buyruqni kiriting.

 

$ chigirtka -f locust_test.py

 

Siz shunga o'xshash narsani ko'rishingiz kerak:

API yuk sinovi 2

Odatiy bo'lib, chigirtkaning veb-interfeysi http://localhost/8089 manzilida joylashgan. Agar siz veb-saytga kirsangiz, quyidagi interfeysni ko'rishingiz kerak:

API yuk sinovi 3

Interfeysdan biz foydalanuvchilar sonini, paydo bo'lish tezligini (soniyada yaratilgan foydalanuvchilar) va Xostni belgilashimiz mumkin. Xost manzilini server ishlayotgan terminalni tekshirish orqali olishingiz mumkin. Bizning holatda, u 5000-portda. Siz bosganingizda To'planishni boshlang, sizga quyidagi interfeys taqdim etiladi.

API yuk sinovi 4

Bu sizga turli xil foydali ko'rsatkichlarni ko'rsatadi, masalan, muvaffaqiyatsiz so'rovlar soni, so'rov uchun o'rtacha vaqt, so'rov uchun minimal vaqt, soniyada so'rovlar va hokazo. Ko'rganingizdan qoniqsangiz, to'xtatish tugmasini bosishingiz mumkin. 


Bundan tashqari statistika tab, mavjud grafikalar ko'proq ko'rsatadigan yorliq axborot quyidagi rasmdagi kabi grafik shaklida.

Bu yerda sekundiga jami so'rovlar grafik, javob vaqti grafigi, va foydalanuvchilar soni grafigi, hammasi vaqtga qarshi tuzilgan. Grafiklardan foydalanib, siz qat'iy javob berish vaqti uchun qancha foydalanuvchilar qabul qilinishini aniqlashingiz mumkin yoki foydalanuvchilar sonining ko'payishiga va shunga o'xshash boshqa tushunchalarga qaramay, doimiy javob vaqti uchun jadvallaringizni kuzatishingiz mumkin. Bularni baham ko'rmoqchi bo'lsangiz Statistikasi boshqa birov bilan, siz hisobotni dan yuklab olishingiz mumkin Ma'lumotni yuklab oling yorlig'ini bosing.

Xulosa qilmoq...

API-ni yuklash sinovi ishlab chiqish jarayonida hal qiluvchi faoliyatdir, shuning uchun u dizayn siklingizga kiritilganligiga ishonch hosil qiling. Aytgancha, siz foydalanuvchilar soni va urug'lanish tezligi uchun qiymatlarni o'zgartirish orqali boshqa yuk sinovlarini ham amalga oshirishingiz mumkin. 

Agar siz spike testini o'tkazmoqchi bo'lsangiz, foydalanuvchilar soni uchun katta qiymatni (masalan, 2000), so'ngra urug'lanish tezligi uchun teng darajada katta qiymatni (masalan, 500) belgilang. Bu degani, 4 soniya ichida siz 2000 ta foydalanuvchi yaratib, so‘nggi nuqtalaringizga kirish imkoniga ega bo‘lasiz. Stress testi shunga o'xshash bo'ladi, lekin urug'lanish tezligi uchun ancha past qiymatga ega. Qo'lingizdan kelganini bilish uchun Chigirtkaga qarang hujjatlar