Царцаатай API ачааллын туршилт

Царцаатай API ачааллын туршилт

Царцаатай API ачааллын туршилт: танилцуулга

Та өмнө нь ийм байдалд орсон байж магадгүй: та ямар нэгэн зүйл хийдэг код бичдэг, жишээлбэл төгсгөлийн цэг. Та Postman эсвэл Insomnia ашиглан төгсгөлийн цэгээ туршиж үзэхэд бүх зүйл хэвийн ажилладаг. Та төгсгөлийн цэгийг үйлчлүүлэгч талын хөгжүүлэгч рүү дамжуулж, дараа нь хэрэглэгч API мөн програмыг байрлуулдаг. Гэвч хэрэглэгчид програмыг ашиглах үед API амжилтгүй болдог.

Энэ нь бизнест маш их зардал гаргах нь бүү хэл маш ядаргаатай нөхцөл байдал байж болно. Тийм ч учраас програм хангамж хөгжүүлэгчид хүлээгдэж буй гүйцэтгэлийг баталгаажуулахын тулд програм хангамжийн системд янз бүрийн туршилт хийдэг. API нь ялгаагүй. Байршуулахын өмнө та хамгийн багадаа гүйцэтгэлийн туршилт, аюулгүй байдлын тест хийх хэрэгтэй.

Гүйцэтгэлийн туршилтыг функциональ тест болон ачааллын туршилт гэж бүлэглэж болно. Функциональ тест нь Postman эсвэл Insomnia-г ихэвчлэн ашигладаг. Тэд таны API таны хүлээж байгаагаар ажиллахыг баталгаажуулдаг. Нөгөө талаас ачааллын тестүүд нь таны API бодит хэрэглээ болон оргил ачааллын үед хэрхэн ажилладаг талаар илүү их санаа зовдог бөгөөд энэ нийтлэлийн тухай юм. Ачааллын туршилтыг илүү нарийвчлан авч үзье.

API ачааллын тест гэж юу вэ?

API ачааллын тест нь төгсгөлийн цэгүүд дээрх хэвийн болон оргил ачааллыг дуурайхад ашигладаг туршилтын нэг төрөл юм. Энэ төрлийн туршилт нь хөгжүүлэгчдэд API-г ашиглахаас өмнө түүний бодит гүйцэтгэлийг үнэлэх боломжийг олгодог. Энэ нь системийн хамгийн дээд хүчин чадал, хэрэв байгаа бол саад бэрхшээл, гүйцэтгэлийн доройтлыг тодорхойлоход тусалдаг. API ачааллын туршилтыг ихэвчлэн виртуал хэрэглэгчид үүсгэж, дараа нь API-ийн ажиллагааг нэгэн зэрэг шалгахын тулд ашигладаг. 

API ачааллын тест нь хариу өгөх хугацаа, нэгэн зэрэг хэрэглэгчид, дамжуулах хурд, нөөц ашиглалтын түвшин, бүтэлгүйтлийн хоорондох дундаж хугацаа (MTBF), бүтэлгүйтлийн дундаж хугацаа (MTTF) гэх мэт хэмжүүрүүдийг хэмждэг. Эдгээр бүх хэмжигдэхүүнийг API хэр сайн ажиллаж байгааг тодорхойлоход ашиглаж болно.

Ачааллын туршилтын төрлүүд

Ачааллын туршилтын хэд хэдэн төрөл байдаг бөгөөд тус бүр нь ашиглалтын тохиолдолтой байдаг. Тэдгээрийн заримыг нь харцгаая.

Ачааллын туршилт: Энэ бол ачааллын туршилтын үндсэн хэлбэр юм. Энэ нь хэвийн ачаалал болон хүлээгдэж буй оргил ачааллын үед системийн гүйцэтгэлийг (энэ тохиолдолд API) үнэлэхэд ашиглагддаг.

Стресс тест: Энэ нь маш их ачаалалтай байгаа системийн гүйцэтгэлийг үнэлэхэд хэрэглэгддэг. Энэхүү туршилтын зорилго нь систем бүтэлгүйтсэний дараа сэргээгдэх эсэх, үүнийг хийхэд хэр хугацаа шаардагдахыг шалгах явдал юм. Ачаалал нь системийн боломжоос хэтрэх хүртэл аажмаар нэмэгддэг.

Баяжуулалтын туршилт: Энэ нь ачааллыг аажмаар нэмэгдүүлэхийн оронд гэнэт ачаалал өгөхөөс бусад тохиолдолд стресс тесттэй бага зэрэг төстэй юм. Энэ төрлийн тест нь таны дундаж хэрэглэгчид эсвэл зочдын тоо гэнэт огцом нэмэгдэх эсвэл таны системд DDOS халдлага тохиолдоход юу тохиолдохыг харуулдаг.

Усанд орох туршилт: Энэ туршилт нь дээрх бусадтай адилгүй. Энэ нь таны системийг хэвийн ачааллын 80%-д (эсвэл ойролцоогоор) багтааж, 12-14 цагийн турш ажиллуулахад хүргэдэг. Энэ төрлийн тест нь цаг хугацааны явцад систем хэр найдвартай болохыг тодорхойлдог.

Царцааны тусламжтайгаар API-аа туршиж үзээрэй

Хөгжүүлэгчид өөрсдийн API-г ачааллыг шалгах олон янзын сонголтуудад хандах боломжтой. Зарим нийтлэг ачааллын туршилтын хэрэгслүүд нь Gatling, JMeter, Locust юм. Бид энэ нийтлэлд царцааны тухай ярих болно.

Locust бол Google, Microsoft, Riot Games зэрэг шилдэг компаниуд API-аа турших зорилгоор ашигладаг питон дээр суурилсан нээлттэй эхийн ачааллын туршилтын хэрэгсэл юм. Энэ нийтлэлд бид API тестийг хэрхэн ачаалахыг харуулах болно. 

Энэ зааварт зориулж би Flask-тай энгийн API үүсгэх болно. Та надтай хамт дагах эсвэл зүгээр л Node эсвэл өөрт тохирсон ямар ч хүрээ ашиглан API-аа үүсгэж болно.

Шаардлагууд

Python 3

Тохиргоо ба суурилуулалт

Эхлээд та дэлхийн Python орчныг бохирдуулахгүйн тулд компьютер дээрээ виртуал орчинг тохируулах хэрэгтэй. Үүнийг хийхийн тулд дараах тушаалуудыг ажиллуулна уу. Эдгээр тушаалууд нь Windows-ийн терминалд хамааралтай болохыг анхаарна уу.

$ mkdir төсөл

$ cd /d зам\төсөл

$ python -m venv venv

$ venv\Scripts\идэвхжүүлэх

 

Эхлээд бид үүсгэсэн төсөл лавлах. Дараа нь бид одоогийн лавлахаа өөрчилсөн төсөл. Дараа нь бид энэ директор дотор Python-д зориулсан виртуал орчин үүсгэн идэвхжүүлсэн. 

Одоо бид суулгац руу шилжих болно Колбо(бид үүнийг ачааллын туршилт хийх төгсгөлийн цэгүүдийг бий болгоход ашиглах болно) болон Царцаа өөрөө юм. 

 

Flask суулгахын тулд ажиллуулна уу. Та байгаа эсэхээ шалгаарай төсөл Та виртуал орчинг бий болгосон.

$ pip суулгах колбо

 

Locust суулгахын тулд ажиллуулна уу

$ pip суулгац царцаа

 

Үүнийг хийсний дараа дараах тушаалуудыг бичнэ үү. Та өөрийн байранд байгаа эсэхийг шалгаарай төсөл Үүнийг хийхдээ лавлах.

$ хуулбар nul __init__.py

$ mkdir програм

$ copy nul app\app.py

$ copy nul app\__init__.py

 

Энэ команд нь бид Flask ашиглан төгсгөлийн цэгүүдийг үүсгэхэд ашиглах зарим файлуудыг үүсгэдэг. Дашрамд хэлэхэд та эдгээр файлуудыг файл судлаач ашиглан үүсгэж болно. Гэхдээ үүний хөгжилтэй зүйл юу вэ? Үүнийг хийснийхээ дараа доорх кодыг хуулж ав app.py

from flask import Колбо, jsonify, хүсэлт

програм = Колбо(__нэр__)

машины_загвар = [

  { 'брэнд': 'Tesla', 'загвар': 'Model S' }

]

 

онгоцны_загвар = [

  { 'брэнд': 'Боинг', 'загвар': '747' }

]

 

@app.route('/cars')

def get_cars():

  jsonify (машин_загвар) буцаах

@app.route('/planes')

def get_planes():

  jsonify (онгоцны_загвар) буцаах

хэрэв __ name__ == '__ main__' бол:

    app.run(debug=Үнэн)  

 

Дээрх код нь аргыг агуулж байна машин авах автомашины брэнд, тэдгээрийн загваруудын жагсаалтыг авдаг байсан ба онгоц авах онгоцны брэнд, загваруудын жагсаалтыг авдаг байсан. Энэ төгсгөлийн тестийг ачаалахын тулд бид app.py-г ажиллуулах хэрэгтэй. Үүнийг хийхийн тулд доорх командыг ажиллуулна уу.

$ python зам\to\app.py

Үүнийг ажиллуулсны дараа та дараах зүйлийг харах болно.

API ачааллын туршилт 1

Хэрэв та терминалаас URL-г хуулж бичвэл автомашин or онгоцууд /-ийн дараа та тэнд байгаа өгөгдлийг харах боломжтой байх ёстой. Гэсэн хэдий ч бидний зорилго бол эцсийн цэгийг хөтөчөөр биш царцаагаар шалгах явдал юм. Тиймээс үүнийг хийцгээе. Өөрийн root хэсэгт дараах тушаалыг ажиллуулна уу төсөл сан.

 

$ copy nul locust_test.py

 

Энэ нь таны үндсэн хэсэгт 'locust_test.py' файлыг үүсгэнэ төсөл лавлах. Үүнийг хийснийхээ дараа файлыг нээгээд доорх кодыг оруулна уу. Бид үүнийг удахгүй тайлбарлах болно.

 

импортын хугацаа

царцаа импортоос HttpUser, даалгавар, хооронд

 

Class UserBehaviour(HttpUser):

    хүлээх_цаг = хооронд(5, 10)

 

    @даалгавар

    def get_cars(өөрөө):

        self.client.get('/cars')

    

    @даалгавар

    def get_planes(өөрөө):

        self.client.get('/planes')

 

Энэ нь API тестийг ачаалахад Locust ашиглах үндсэн жишээ юм. Эхлээд бид анги үүсгэнэ Хэрэглэгчийн зан төлөв, ямар ч тохиромжтой нэр өгч болох боловч өргөтгөх ёстой HttpUser. HttpUser Энэ нь бидний заасан даалгавруудыг гүйцэтгэхийн тулд олон виртуал хэрэглэгчдийг бий болгоход анхаардаг анги юм Хэрэглэгчийн зан төлөв анги. 

-ээр аргыг чимэглэх замаар даалгаварыг тодорхойлдог @даалгавар чимэглэгч. Бидэнд бас нэртэй функц бий хооронд() Энэ нь бидэнд дараагийн даалгаврыг гүйцэтгэхийн өмнө хүлээх секундын хязгаарыг зааж өгөх боломжийг олгодог. Коддоо бид 5-10 секундын хязгаарыг зааж өгсөн болохыг та харж болно. 

Кодыг ажиллуулахын тулд та виртуал орчинд байгаа эсэхээ шалгаарай. Хэрэв таны үүсгэсэн серверийг API-д үйлчилдэг сервер ашиглаж байгаа бол шинэ терминал нээж, лавлахаа өөрчилнө үү. төсөл лавлах болон үүсгэсэн виртуал орчныг идэвхжүүлнэ үү. Та дээрх виртуал орчныг идэвхжүүлэх командыг олох боломжтой. Одоо терминалдаа доорх командыг оруулна уу.

 

$ царцаа -f locust_test.py

 

Та иймэрхүү харагдах ёстой:

API ачааллын туршилт 2

Анхдагч байдлаар, царцааны вэб интерфэйс нь http://localhost/8089 дээр байрладаг. Хэрэв та вэбсайтад зочилвол дараах интерфэйсийг харах болно:

API ачааллын туршилт 3

Интерфэйсээс бид хэрэглэгчдийн тоо, үржлийн хурд (секундэд үүсгэсэн хэрэглэгчид), Хост зэргийг зааж өгч болно. Та сервер ажиллаж байгаа терминалыг шалгаснаар өөрийн хостын хаягийг авах боломжтой. Манай тохиолдолд энэ нь 5000 порт дээр байна. Та дарахад Бөөрөлж эхлэх, танд доорх интерфэйс харагдах болно.

API ачааллын туршилт 4

Энэ нь бүтэлгүйтсэн хүсэлтийн тоо, хүсэлтийн дундаж хугацаа, хүсэлтийн хамгийн бага хугацаа, секундэд хийх хүсэлт гэх мэт янз бүрийн ашигтай хэмжигдэхүүнүүдийг харуулдаг. Та харж байгаа зүйлдээ сэтгэл хангалуун болсны дараа зогсоох товчийг дарж болно. 


Үүнээс гадна Статистик таб, байдаг график илүү ихийг харуулах таб мэдээлэл доорх зураг шиг график хэлбэрээр.

Тэнд нь секундын график дахь нийт хүсэлт, хариу цагийн график, болон хэрэглэгчдийн тоо график, бүгд цаг хугацааны эсрэг зохиосон. Графикуудыг ашигласнаар та тогтмол хариу өгөх хугацаанд хэр олон хэрэглэгч хүлээн зөвшөөрөгдөхийг тодорхойлох боломжтой эсвэл хэрэглэгчдийн тоо нэмэгдэж байгаа ч гэсэн тогтмол хариу өгөх хугацаандаа графикаа ажиглаж болно. Хэрэв та эдгээрийг хуваалцахыг хүсвэл статистик өөр хэн нэгэнтэй бол та тайланг сайтаас татаж авах боломжтой Татаж авах таб.

Дүгнэх...

Өөрийн API-г ачаалах тест нь таны хөгжүүлэлтийн явцад маш чухал үйл ажиллагаа тул үүнийг таны дизайны мөчлөгт оруулсан эсэхийг шалгаарай. Дашрамд хэлэхэд, та хэрэглэгчдийн тоо болон үржлийн хурдыг өөрчилснөөр бусад ачааллын туршилтыг хийж болно. 

Хэрэв та спик тест хийхийг хүсвэл хэрэглэгчдийн тоонд том утгыг (2000 гэх мэт) зааж өгөөд дараа нь өөрийн үржлийн хурдыг (жишээ нь 500) адил том утгыг зааж өгнө үү. Энэ нь 4 секундын дотор та 2000 хэрэглэгчийг бүтээж, өөрийн эцсийн цэгүүдэд хандах боломжтой болно гэсэн үг юм. Стресс тест нь ижил төстэй боловч үржлийн хурдны хувьд хамаагүй бага байх болно. Та хийж чадах бүхнээ мэдэхийн тулд Царцааг үзээрэй бичиг баримт

Коболдын захидал: HTML-д суурилсан имэйлийн фишинг халдлага

Коболдын захидал: HTML-д суурилсан имэйлийн фишинг халдлага

Коболд захидал: HTML-д суурилсан цахим шуудангийн фишинг довтолгоонууд 31 оны 2024-р сарын XNUMX-нд Luta Security компани Коболд захидал хэмээх шинэ боловсронгуй фишинг векторын талаар гэрэл гэгээ оруулсан нийтлэлийг нийтлэв.

Цааш унших "