בדיקת עומס API עם ארבה

בדיקת עומס API עם ארבה

בדיקת עומס API עם ארבה: מבוא

כנראה שהיית במצב הזה בעבר: אתה כותב קוד שעושה משהו, נקודת קצה למשל. אתה בודק את נקודת הקצה שלך באמצעות Postman או Insomnia, והכל עובד בסדר. אתה מעביר את נקודת הקצה למפתח בצד הלקוח, אשר לאחר מכן צורך את API ופורס את האפליקציה. אבל אז, ה-API נכשל כאשר המשתמשים משתמשים באפליקציה.

זה יכול להיות מצב סופר מעצבן להיות בו, שלא לדבר על יקר לעסק. זו הסיבה שמפתחי תוכנה מבצעים מגוון בדיקות על מערכות תוכנה כדי לוודא שהן פועלות כמצופה. ממשקי API אינם שונים. לפני הפריסה, עליך לבצע לפחות בדיקות ביצועים ובדיקות אבטחה.

ניתן לקבץ מבחני ביצועים לבדיקות פונקציונליות ובדיקות עומס. מבחני פונקציונליות הם מה שאתה בדרך כלל משתמש עבור Postman או Insomnia. הם מבטיחים שה-API שלך פועל כפי שאתה מצפה. מבחני עומס, לעומת זאת, עוסקים יותר בביצועי ה-API שלך עם שימוש בעולם האמיתי ועומס שיא, ועל זה עוסק המאמר הזה. בואו נסתכל על מבחני עומס ביתר פירוט.

מהי בדיקת עומס API?

בדיקת עומס API היא סוג של בדיקות שמפתחים משתמשים בהם כדי לדמות עומס נורמלי ושיא על נקודות קצה. סוג זה של בדיקות מאפשר למפתחים להעריך את הביצועים האמיתיים של ממשק API לפני פריסתו. זה עוזר להם לזהות את קיבולת ההפעלה המקסימלית של מערכת, צווארי בקבוק אם יש, וירידה בביצועים. בדיקות עומס API נעשות בדרך כלל על ידי יצירת משתמשים וירטואליים ולאחר מכן שימוש בהם כדי לבדוק את הפונקציונליות של ה-API במקביל. 

מבחני עומס של API מודדים מדדים כמו זמן תגובה, משתמשים במקביל, קצבי תפוקה, רמות ניצול משאבים, Mean Time Between Failure (MTBF), Mean Time To Failure (MTTF), וכן הלאה. ניתן להשתמש בכל המדדים הללו כדי לקבוע עד כמה ה-API מצליח.

סוגי בדיקות עומס

ישנם מספר סוגים של בדיקות עומס, כל אחד עם מקרי השימוש שלו. בואו נסתכל על כמה מהם.

בדיקת עומס: זוהי הצורה הבסיסית של בדיקת עומס. הוא משמש להערכת הביצועים של מערכת (במקרה זה, API) תחת עומס רגיל ועומס שיא צפוי.

מבחן לחץ: זה משמש להערכת הביצועים של מערכת תחת עומס כבד מאוד. המטרה של בדיקה זו היא לראות אם מערכת מתאוששת לאחר כשל, וכמה זמן לוקח לעשות זאת. העומס מוגבר בדרך כלל לאט עד שהוא חורג מהיכולות של המערכת.

בדיקת ספייק: זה קצת דומה לבדיקת מאמץ, למעט עומס כבד מופעל בפתאומיות, בניגוד להגביר לאט. סוג זה של בדיקה מייצג את מה שקורה כאשר יש עלייה פתאומית במספר הממוצע של משתמשים או מבקרים, או כאשר יש מתקפת DDOS על המערכת שלך.

בדיקת השרייה: מבחן זה אינו כמו האחרים לעיל. זה שם את המערכת שלך מתחת ל-80% (או בערך) מהעומס הרגיל ומשאיר אותה פועלת לתקופה ארוכה, נניח 12 עד 14 שעות. סוג זה של בדיקה קובע עד כמה המערכת אמינה לאורך זמן.

טען בדיקת ממשקי ה-API שלך עם ארבה

למפתחים יש גישה למגוון אפשרויות לבדיקת עומסים של ממשקי ה-API שלהם. כמה כלי בדיקת עומס נפוצים הם Gatling, JMeter ו-Locusst. במאמר זה נתמקד בארבה.

Locust הוא כלי בדיקת עומסים מבוסס פיתון בקוד פתוח המשמש חברות מובילות כמו גוגל, מיקרוסופט ו-Riot Games כדי לבדוק את ממשקי ה-API שלהם. במאמר זה, נדגים כיצד לטעון בדיקת API. 

עבור המדריך הזה, אני אצור API פשוט עם Flask. אתה יכול לעקוב איתי או פשוט ליצור את ה-API שלך עם Node, או כל מסגרת שנוח לך איתה.

דרישות

פייתון 3

התקנה והתקנה

ראשית, עליך להגדיר סביבה וירטואלית במחשב האישי שלך כדי שלא תבלבל את סביבת Python העולמית שלך. כדי לעשות זאת, הפעל את הפקודות הבאות. שים לב שהפקודות הללו חלות על מסוף Windows.

פרויקט $ mkdir

$ cd /d path\to\project

$ python -m venv venv

$ venv\Scripts\activate

 

ראשית, יצרנו א פּרוֹיֶקט מַדרִיך. לאחר מכן שינינו את הספרייה הנוכחית שלנו ל פּרוֹיֶקט. לאחר מכן יצרנו והפעלנו סביבה וירטואלית עבור Python בתוך הספרייה הזו. 

כעת, נעבור להתקנה בקבוק(נשתמש בו כדי ליצור את נקודות הקצה שייבדקו בעומס) ו אַרְבֶּה עצמו. 

 

כדי להתקין את Flask, הפעל. ודא שאתה ב- פּרוֹיֶקט שבו יצרת סביבה וירטואלית.

$ pip להתקין בקבוק

 

כדי להתקין את Locust, הפעל

$ pip להתקין ארבה

 

ברגע שזה נעשה, הקלד את הפקודות הבאות. תוודא שאתה ברשותך פּרוֹיֶקט ספרייה כשאתה עושה זאת.

$ copy nul __init__.py

אפליקציית $ mkdir

$ copy nul app\app.py

$ copy nul app\__init__.py

 

פקודה זו יוצרת כמה קבצים שבהם נשתמש כדי ליצור את נקודות הקצה שלנו באמצעות Flask. אתה יכול גם ליצור קבצים אלה באמצעות סייר הקבצים שלך אגב. אבל מה הכיף בזה? לאחר שעשית את זה, העתק את הקוד שלהלן לתוך app.py

מ-flask import Flask, jsonify, request

app = בקבוק (__ שם__)

דגמי_מכוניות = [

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

]

 

מודלים_מטוסים = [

  { 'brand': 'בואינג', 'דגם': '747' }

]

 

@app.route('/cars')

def get_cars():

  החזר jsonify(מכוניות_מודלים)

@app.route('/planes')

def get_planes():

  החזר את jsonify(plane_models)

אם __name__ == '__main__':

    app.run(debug=True)  

 

הקוד לעיל מכיל שיטה להשיג_מכוניות השתמשו כדי לקבל רשימה של מותגי רכב והדגמים שלהם, ו get_planes השתמשו כדי לקבל רשימה של מותגי מטוסים והדגמים שלהם. כדי שנוכל לטעון בדיקת נקודת קצה זו, עלינו להפעיל את app.py. לשם כך הפעל את הפקודה למטה.

$ python path\to\app.py

ברגע שאתה מפעיל את זה, אתה אמור לראות משהו כזה:

בדיקת עומס API 1

אם תעתיק את כתובת האתר מהמסוף ותקליד מכוניות or מטוסים אחרי ה-/, אתה אמור להיות מסוגל לראות את הנתונים שם. עם זאת, המטרה שלנו היא לבדוק את נקודת הקצה עם ארבה, לא עם הדפדפן. אז בואו נעשה את זה. הפעל את הפקודה הבאה בשורש שלך פּרוֹיֶקט במדריך.

 

$ copy nul locust_test.py

 

זה יוצר קובץ 'locust_test.py' בשורש שלך פּרוֹיֶקט מַדרִיך. לאחר שעשית את זה, פתח את הקובץ והדבק את הקוד שלהלן. נסביר זאת בקרוב.

 

זמן יבוא

מאת ייבוא ​​ארבה HttpUser, משימה, בין

 

class Behavior User(HttpUser):

    wait_time = between(5, 10)

 

    @מְשִׁימָה

    def get_cars(עצמי):

        self.client.get('/cars')

    

    @מְשִׁימָה

    def get_planes(self):

        self.client.get('/planes')

 

זוהי דוגמה בסיסית לשימוש בלקוס לטעינת בדיקת API. ראשית, אנו יוצרים כיתה התנהגות משתמשים, שניתן לתת לו כל שם מתאים אך חייב להאריך HttpUser. HttpUser היא המחלקה שדואגת ליצור מופע של מספר משתמשים וירטואליים לבצע את המשימות שאנו מציינים ב- התנהגות משתמשים מעמד. 

משימה מוגדרת על ידי עיטור שיטה עם @מְשִׁימָה מְעַצֵב. יש לנו גם פונקציה שנקראת בֵּין() המאפשר לנו לציין טווח של שניות להמתין לפני ביצוע המשימה הבאה. אתה יכול לראות שהקצינו לזה טווח של 5 עד 10 שניות בקוד שלנו. 

כדי להפעיל את הקוד, ודא שאתה עדיין בסביבה הוירטואלית שלך. אם זה שיצרת נמצא בשימוש על ידי השרת המשרת את ה-API, פתח מסוף חדש, שנה את הספרייה שלך פּרוֹיֶקט ספרייה, והפעל את הסביבה הוירטואלית שיצרת. אתה יכול למצוא את הפקודה להפעלת סביבה וירטואלית למעלה. כעת, הזן את הפקודה למטה בטרמינל שלך.

 

$ locust -f locust_test.py

 

אתה אמור לראות משהו כזה:

בדיקת עומס API 2

כברירת מחדל, ממשק האינטרנט של לוקוס נמצא בכתובת http://localhost/8089. אם אתה מבקר באתר, אתה אמור לראות ממשק כזה:

בדיקת עומס API 3

מהממשק נוכל לציין את מספר המשתמשים, קצב השרצים (משתמשים שנוצרו בשנייה) ומארח. אתה יכול לקבל את הכתובת של המארח שלך על ידי בדיקת הטרמינל שבו השרת פועל. במקרה שלנו, זה ביציאה 5000. כשאתה לוחץ על תתחיל להסתבך, יוצג לך הממשק למטה.

בדיקת עומס API 4

זה מראה לך מדדים שימושיים שונים כמו מספר הבקשות שנכשלו, זמן ממוצע לבקשה, הזמן המינימלי לבקשה, בקשות לשנייה וכן הלאה. ברגע שאתה מרוצה ממה שאתה רואה, אתה יכול ללחוץ על כפתור העצירה. 


חוץ סטָטִיסטִיקָה לשונית, יש א תרשימים לשונית שמציגה יותר מידע בצורה של גרף, כמו התמונה למטה.

יש סך כל הבקשות לשנייה גרף, גרף זמן תגובה, ו גרף מספר המשתמשים, כולם זוממים נגד הזמן. באמצעות הגרפים, אתה יכול לקבוע כמה משתמשים מקובלים לזמן תגובה קבוע, או שאתה יכול לצפות בתרשימים שלך במשך זמן תגובה קבוע למרות מספר גדל והולך של משתמשים, ותובנות אחרות מסוג זה. אם אתה רוצה לשתף את אלה סטטיסטיקות עם מישהו אחר, אתה יכול להוריד דוח מה- הורד נתונים TAB.

להסיק...

בדיקת עומסים של ה-API שלך היא פעילות מכרעת בתהליך הפיתוח שלך, אז וודא שהיא משולבת במחזור העיצוב שלך. אגב, אתה יכול גם לבצע סוגי בדיקות עומס אחרים על ידי שינוי הערכים של מספר המשתמשים וקצב השרצים. 

אם אתה רוצה לעשות בדיקת ספייק, ציין ערך גדול (נניח 2000) עבור מספר המשתמשים, ולאחר מכן ערך גדול באותה מידה עבור קצב השרצים שלך (500 למשל). המשמעות היא שבתוך 4 שניות, כל 2000 המשתמשים ייצרו וייגשו לנקודות הקצה שלך. מבחן מאמץ יהיה דומה, אך עם ערך נמוך בהרבה לקצב השרצים. כדי לגלות כל מה שאתה יכול לעשות, בדוק את הארבה תיעוד