דמיין שיש לך אפליקציה אינטרנט חדשה ואתה יודע שהיא פועלת טוב עם קבוצה קטנה של משתמשים. אך איך האפליקציה שלך תגיב לתעבורת התעבורה המוגבלת שלא נצפתה? הפעל בדיקת עומס על האפליקציה שלך באמצעות Python!
במאמר זה, תלמד איך להפעיל בדיקת עומס על אפליקציה אינטרנט על ידי הדמיה של מאות משתמשים שגושבים על האפליקציה שלך בו זמנית.
המשך לקרוא כדי להתחיל בבדיקת עומס של אתרים!
דרישות מקדימות
המדר הזה יהיה הדגמה מעשית. אם ברצונך להתחיל, הקפד לוודא שיש לך את הדברים הבאים:
- מחשב Ubuntu Linux – המדר זה משתמש ב-Ubuntu 21.04, אך גם macOS או הפצות Linux אחרות יעבדו, כולל WSL.
- Python 3.8 או גרסה גבוהה ומותקן.
- מנהל חבילות Pip ו-מודול Environment וירטואלי.
- A Microsoft Azure account with a storage account.
הגדרת אתר אינטרנט סטטי
לפני שאתה מריץ בדיקת עומס נגד אתר אינטרנט, עליך תחילה להקין אתר הדגמה. תיצור אתר סטטי וAPI דמו עבור המדריך הזה, אך כאן תתמקד תחילה באתר הסטטי. אתר סטטי יראה לך את היסודות של בדיקת העומס, בעוד ש-API יראה לך כיצד להעביר פרמטרים שונים ולהדמות פעולות שונות.
אם ברצונך להתחיל לרוץ בדיקת עומס נגד API, אתה יכול לדלג לקטע הבא, שבו תתקין את Locust ותריץ אותו על המחשב שלך. הדמוים במדריך זה משתמשים ב-דמו API של Swagger Petstore.
- צור קובץ חדש בעורך הקוד המועדף עליך, העתק את הקוד למטה לתוך הקובץ החדש ושמור אותו בשם המועדף עליך. לדוגמה, הקובץ נקרא load_test_page.html.
למטה נמצא מסמך HTML, שמציג את הטקסט "זהו דף בדיקה" כאשר נפתח בדפדפן אינטרנט.
2. לאחר מכן, פתח את דפדפן האינטרנט האהוב עליך ונווט אל חשבון האחסון שלך ב-פורטל Azure.
3. עקוב אחרי השלבים למטה כדי לאפשר את אחסון אתר סטטי בחשבון אחסון ולהגדיר את דף הבית של האתר שלך:
- לחץ על אתר סטטי בפאנל הניווט השמאלי. הדף של אתר סטטי הוא המקום בו תעלה את הקבצים לאתר הדגמה שלך.
- לחץ על מופעל, כפי שמוצג למטה, כדי להפעיל את אירוח האתר הסטטי.
- הזן load_test_page.html בשדה שם מסמך האינדקס, ולחץ על שמור. בכך יוצר זאת תיק blob ו-URL (נקודת קצה ראשית), המצביעה לאתר שלך. ה-URL עדיין לא יעבוד, אך שמור אותו למען העתיד.

4. לחץ על ממגד שמור (תצוגה מקדימה) בפאנל השמאלי ונווט אל מכולות Blob → $web. מכולת blob של $web, שנוצרה על ידי יכולת האתר הסטטי, תארח את כל הקבצים הסטטיים שלך.
לחץ על העלאה, ולהעלות את load_test_page.html שיצרת בשלב הראשון.

5. לבסוף, פתח כרטיסיה חדשה בדפדפן האינטרנט שלך, נווט ל-URL שסימנת בשלב השני, וראה האם ה-URL עובד כעת.

התקנת מסגרת Locust
עכשיו יש לך אתר לבדיקה, אך עדיין נדרשות כלי בדיקת עומס כדי לבדוק את האתר שלך. כתיבת קוד לניהול בדיקת עומס גבוהה היא זמן רב ומוכרת לשגיאות. למה לא להשתמש ב-מסגרת Locust? Locust הוא כלי פתוח הכתוב ב-Python שאפשר להתקין דרך מנהל החבילות pip.
אם תרצה לשפר את יכולות התכנות שלך ב-Python, כדאי לבדוק את פונקציות Python למתחילים.
Locust יכול להריץ בדיקות עומס נגד אתרים סטטיים, יישומי אינטרנט או אפילו APIים. הדרישה היחידה היא שכל מה שאתה בודק יש לו נקודת קצה HTTP(S) שבאפשרותך להגיע אליה מהמכשיר שלך.
כברירת מחדל, מנהל החבילות
pip
מתקין חבילות בתיקייה ~/.local על Linux ו-MacOS, שאינה בנתיב המערכת. הנתיב הזה זמין רק לסביבת פיתוח וירטואלית של Python, ולכן תשתמש ב־pip
במדריך זה.
- פתח את הטרמינל שלך והרץ את הפקודות שלמטה כדי ליצור סביבה וירטואלית חדשה ולהתקין את Locust.

2. הרץ את הפקודות שלמטה כדי ליצור ספרייה חדשה ולנווט אליה. כך תשמור על קבצי locust מבודדים משאר בסיס הקוד שלך, וזה יעזור לך לארגן טוב יותר. לדוגמה, הספרייה תקרא locust_dir.
3. לבסוף, צור קובץ חדש בשם locustfile.py בתוך הספרייה locust_dir, ואז העתק/הדבק את הקוד לתוך קובץ locustfile.py. קובץ זה יכיל את ההוראות לבדיקה שלך, כגון איך לדמות משתמשים, אילו נקודות קצה המשתמשים יגיעו אליהן, ואילו פרמטרים להעביר.
כאשר ה-Locust רץ, הוא מחפש קובץ ספציפי בשם locustfile.py. לכן הכי טוב לשמור על קובץ כזה בתיקייה נפרדת (locust_dir), כך שה-Locust יוכל למצוא אותו, וניתן ליצור בדיקות נוספות בלתי תלויות בדיקות אחרות.
הקוד למטה מבצע בקשת HTTP GET נגד נתיב המארח שאתה מספק, שזה שווה להרצת curl http://<Host>/
מהשורת פקודה.
פעם שהתגובה מתקבלת, ה-Locust שולח מיידית את הבקשה הבאה, והתהליך חוזר על עצמו לכל משתמש וירטואלי במבחן.
אם הנתיב בשיטה נראה בלתי שלם, זה בגלל שהוא כזה. רק הנתיב ופרמטרי השאילתה מוגדרים בקובץ locust, בעוד המארח מועבר בזמן ריצה. השיטה הזו תהיה יותר הגיונית בשלב הבא.
ביצוע מבחן עומס נגד אתרים סטטיים
עכשיו, לאחר שהתקנת את Locust, הגיע הזמן לבצע מבחן עומס! בדיקת עומס היא יותר מכתיבה של סדרת בקשות אינטרנט כדי לראות מה היישום שלך עושה. מבחן מלא תועד זמני תגובה, שיעורי כשל וקודי שגיאה בצומתים והגדרות שונות.
Locust גמיש בהרצתו כיוון שניתן לקרוא לו משורת הפקודה או דרך ממשק אינטרנט. במדריך זה, תשתמש בממשק האינטרנט כדי לבצע מבחן עומס נגד אתר סטטי.
הפעל את הפקודה locust
כדי להתחיל את היישום הגרפי של locust באמצעות תרחיש הבדיקה מקובץ locustfile.py שלך.

2. פתח דפדפן אינטרנט ונווט אל http://localhost:8089/ כדי לגשת ל-Locust. הפורט 8089 הוא הפורט המוגדר כברירת מחדל שעליו רץ Locust.
זכור את ה-URL (נקודת קצה ראשית) שרשמת בשלב שלוש תחת הסעיף "הקמת אתר סטטי"? הגיע הזמן להשתמש בו בשלב הבא!
3. לבסוף, הזן את ה-URL (נקודת קצה ראשית) לתוך שדה ה-Host שנראה בצילום המסך למטה, ולחץ על התחל להמון כדי להתחיל את מבחן העומס. עשייה זו אומרת לכל הבדיקות בקובץ locustfile.py שלך לרוץ נגד ה-URL שהזנת בשדה Host.
לדמו זה, שינוי ערך שדות מספר המשתמשים או קצב ההפקה הוא אופציונלי.
המספר של המשתמשים הוא המספר המרבי של משתמשים וירטואליים שניתן ליצור בו זמנית. באותו זמן, קצב היצירה הוא המספר של משתמשים שנוצרים בכל שנייה עד שלוקוסט מגיע לשיא הקשריות של משתמשים וירטואליים. מספר המשתמשים הווירטואליים נשמר במקסימום עד שאתה עוצר את הבדיקה.

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

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

ביצוע בדיקת עומס נגד ממשקי API
עכשיו שאתה מכיר ביסודות של לוקוסט, בוא נסתכל על מקרה בדיקה מותאם למציאות יותר. אתר סטטי די יציב, ואין הרבה דברים שיכולים להשתבש כשאתה בוצע בדיקת ביצועים. אז למה לבצע בדיקת עומס נגד ממשקי API?
ממשק API יכול להכיל הרבה יותר שוני בתגובות, אפשרויות אחסון פחות יציבות והשפעה רבה יותר אם ישנה זמן השבת עבור הארגון שלך.
אם אתה לא מכיר את ממשקי ה-API ואיך הם עובדים, יש כתבה כאן שעוסקת ביסודות כמו אימות, שיטות HTTP ותגובות JSON. המאמר מיועד ל-PowerShell, אך המושגים של ה-API יהיו חשובים מאוד מאוחר יותר במאמר זה.
- החלף את תוכן הקובץ locustfile.py בקוד הבא, אשר עושה מספר פעולות:
- מפעיל בקשת GET כדי לאמת את המשתמש כאשר Locust מציע משתמש וירטואלי חדש
- מפעיל בקשת GET על המארח, שתכשיל כי משאב זה אינו קיים
- מפעיל בקשת POST שמעבירה גוף JSON על פני טווח של פריטים באותו נקודת קצה
.
ללא הוספת הצהרת
on_start
למחלקת הבדיקות שלך, שיטות אחרות תחזיר שגיאת "403 אינם מורשים" כאשר Locust מנסה לבצע בדיקות עליהם. נסה להעריך את השיטה הזו ולהריץ מחדש את Locust כדי לראות כיצד זה משפיע על הבדיקה.
2. לאחר מכן, פתח את מסמכי ה-API של חנות החיות המחמד. המקרה הבדיקה שלמעלה כתוב במיוחד עבור API זה, לכן יש לפתוח את העמוד הזה לצד המדריך כדי לעבור דרך הנקודות הסופיות.
הרץ את הפקודה locust
למטה כפי שעשית בקטע "ביצוע בדיקת העומס נגד אתרים סטטיים" (שלב אחד).

לבסוף, הזן https://petstore.swagger.io/v2 כשרת בממשק המשתמש של Locust.

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