בדיקות API – המדריך המלא: איך בודקים ממשקי API, אילו תרחישים חשוב לבדוק ואיך מתחילים?
מדריך מקצועי לבדיקות API למתחילים ולבודקי תוכנה מנוסים. נלמד מהו API, כיצד לבצע בדיקות ידניות ואוטומטיות, איך לבדוק בקשות ותגובות HTTP, כיצד לעבוד עם Postman ו-Playwright, ואיך לזהות תקלות אבטחה, ביצועים ואינטגרציה.
בדיקות API הן בדיקות תוכנה שמטרתן לוודא שממשקי התקשורת בין מערכות, שירותים ואפליקציות פועלים בהתאם לדרישות. הבדיקות מתמקדות בשליחת בקשות לשרת, בדיקת התשובות שהוא מחזיר, אימות הנתונים, בדיקת קודי HTTP, הרשאות, טיפול בשגיאות, ביצועים ותקינות התקשורת בין רכיבי המערכת.
תוכן עניינים – כל הנושאים במדריך
- מה זה API ואיך הוא עובד?
- למה חשוב לבצע בדיקות API?
- סוגי ממשקי API וטכנולוגיות נפוצות
- HTTP Methods – סוגי הבקשות
- קודי HTTP – מה צריך לבדוק?
- סוגי בדיקות API
- איך מבצעים בדיקות API שלב אחר שלב?
- דוגמאות מעשיות לתרחישי בדיקה
- בדיקות API באמצעות Postman
- אוטומציה לבדיקות API
- בדיקות API באמצעות Playwright
- בדיקות אבטחה והרשאות API
- בדיקות ביצועים ועומסים לממשקי API
- תיעוד API ו-OpenAPI
- טעויות נפוצות בבדיקות API
- צ'קליסט מלא לבדיקות API
- איך מתחילים לעבוד בתחום בדיקות API?
- שאלות ותשובות נפוצות
1. מה זה API ואיך הוא עובד?
API הם ראשי התיבות של Application Programming Interface. מדובר בממשק שמאפשר למערכות תוכנה שונות לתקשר ביניהן, להעביר מידע, להפעיל פעולות ולשתף שירותים.
כדי להבין את הרעיון, נחשוב על אפליקציה להזמנת מוצרים. המשתמש נכנס לאפליקציה, בוחר מוצר ומבצע הזמנה. האפליקציה צריכה לקבל מידע ממערכת המוצרים, לבדוק מלאי, לחשב מחיר, ליצור הזמנה ולתקשר עם מערכת התשלומים.
במקום שכל רכיב במערכת יכיר את הקוד הפנימי של כל רכיב אחר, התקשורת מתבצעת באמצעות ממשקי API מוגדרים.
תהליך התקשורת כולל בדרך כלל שני מרכיבים מרכזיים:
- Request – בקשה: המידע שנשלח מהלקוח לשרת, כולל כתובת, שיטת HTTP, כותרות ונתונים.
- Response – תגובה: התשובה שמחזיר השרת, כולל קוד סטטוס, כותרות וגוף התגובה.
בודק התוכנה אינו מסתפק בשאלה האם השרת החזיר תשובה. הוא צריך לבדוק האם התשובה נכונה, האם היא עומדת בדרישות, האם הנתונים עקביים והאם המערכת מתנהגת כראוי גם בתנאים חריגים.
2. למה חשוב לבצע בדיקות API?
בדיקות API הן חלק מרכזי מתהליך הבטחת איכות התוכנה. במערכות מודרניות, חלק גדול מהלוגיקה העסקית מתבצע בצד השרת, ולכן בדיקת הממשק מאפשרת לבדוק את התנהגות המערכת גם ללא תלות בממשק המשתמש.
לדוגמה, באתר מסחר אלקטרוני ייתכן שכפתור ההזמנה נראה תקין, אך מאחורי הקלעים השרת מחשב מחיר שגוי, אינו מעדכן מלאי או מאפשר ליצור הזמנה ללא הרשאה מתאימה.
בדיקת API יכולה לחשוף בעיות כאלה באופן ישיר.
וידוא שהשרת מחזיר מידע נכון, מלא ועקבי.
איתור בעיות בלוגיקה העסקית לפני שהן מגיעות למשתמש.
בדיקת הרשאות, אימות משתמשים וחשיפת מידע רגיש.
וידוא שמערכות שונות מעבירות ומקבלות מידע בצורה תקינה.
היתרונות המרכזיים של בדיקות API
- אפשר לבדוק את הלוגיקה העסקית ללא צורך להפעיל את כל ממשק המשתמש.
- אפשר לאתר בעיות כבר בשלבי הפיתוח הראשונים.
- אפשר לבדוק מגוון גדול של נתונים ותרחישים חריגים.
- אפשר לבצע בדיקות אוטומטיות כחלק מתהליך CI/CD.
- אפשר לבדוק תקשורת בין Microservices ומערכות חיצוניות.
- אפשר לזהות בעיות אבטחה שאינן נראות בבדיקות UI רגילות.
- אפשר לשלב בדיקות API בתהליכי Regression ולצמצם בדיקות ידניות חוזרות.
3. סוגי ממשקי API וטכנולוגיות נפוצות
לא כל ממשקי ה-API פועלים באותה צורה. קיימות מספר ארכיטקטורות וטכנולוגיות, ולבודק חשוב להכיר את ההבדלים ביניהן.
REST API
REST הוא סגנון ארכיטקטוני נפוץ מאוד לפיתוח ממשקי API. הוא מבוסס בדרך כלל על פרוטוקול HTTP, ומשתמש בשיטות כמו GET, POST, PUT, PATCH ו-DELETE.
בממשקי REST, המשאבים מזוהים באמצעות כתובות URL. לדוגמה:
הכתובת מתייחסת למשתמש שמזהה הרשומה שלו הוא 123.
SOAP API
SOAP הוא פרוטוקול תקשורת מבוסס XML, המשמש בין היתר במערכות ארגוניות, מערכות פיננסיות ומערכות ותיקות. הוא כולל מבנה הודעות מוגדר ולעיתים קרובות משתמש בתיאור שירות באמצעות WSDL.
בבדיקות SOAP חשוב לבדוק את מבנה ה-XML, את תקינות ההודעות, את הטיפול בשגיאות ואת ההתאמה להגדרות השירות.
GraphQL
GraphQL מאפשר ללקוח להגדיר אילו נתונים הוא מעוניין לקבל. במקום להסתמך על מספר Endpoints שונים, ניתן להשתמש בנקודת גישה אחת ולשלוח שאילתות המגדירות את מבנה התוצאה המבוקשת.
בבדיקות GraphQL חשוב לבדוק את תקינות השאילתות, את שדות התגובה, את הרשאות הגישה לשדות ואת אופן הטיפול בשגיאות.
WebSocket API
WebSocket מאפשר תקשורת דו-כיוונית רציפה בין לקוח לשרת. הוא מתאים למערכות צ'אט, התראות בזמן אמת, מסחר ומערכות שבהן נדרשת העברת מידע מתמשכת.
בדיקות WebSocket מתמקדות בחיבור, ניתוק, העברת הודעות, סדר האירועים, טיפול בנפילות תקשורת והתאוששות מחיבור מחדש.
| סוג API | מאפיין מרכזי | שימוש נפוץ |
|---|---|---|
| REST | תקשורת מבוססת HTTP ומשאבים | אתרים ואפליקציות |
| SOAP | הודעות XML מובנות | מערכות ארגוניות |
| GraphQL | שאילתות גמישות | מערכות עם מבני מידע מורכבים |
| WebSocket | תקשורת דו-כיוונית מתמשכת | צ'אט ועדכונים בזמן אמת |
4. HTTP Methods – סוגי הבקשות בבדיקות API
אחד הנושאים החשובים ביותר בבדיקות API הוא הכרת שיטות HTTP. השיטה קובעת מהי הפעולה שהלקוח מבקש לבצע מול השרת.
| Method | תפקיד | דוגמה |
|---|---|---|
| GET | שליפת נתונים | קבלת פרטי משתמש |
| POST | יצירת משאב או הפעלת פעולה | יצירת משתמש חדש |
| PUT | החלפה או עדכון מלא של משאב | עדכון פרטי משתמש |
| PATCH | עדכון חלקי | עדכון כתובת בלבד |
| DELETE | מחיקת משאב | מחיקת משתמש |
| HEAD | קבלת כותרות ללא גוף התגובה | בדיקת זמינות משאב |
| OPTIONS | בדיקת אפשרויות תקשורת נתמכות | בדיקת שיטות HTTP נתמכות |
מה חשוב לבדוק בכל שיטה?
GET: האם הנתונים שחזרו נכונים? האם ניתן לשלוף רשומה קיימת? מה קורה כאשר מזהה אינו קיים? האם הפרמטרים לסינון ולמיון עובדים כראוי?
POST: האם נוצרת רשומה חדשה? האם מתקבל מזהה ייחודי? האם הנתונים נשמרים בפועל? האם בקשה כפולה עלולה ליצור רשומות כפולות?
PUT: האם העדכון המלא מתבצע כראוי? האם שדות שלא נשלחו מטופלים בהתאם לחוזה הממשק? האם ניתן לעדכן רשומה שאינה קיימת?
PATCH: האם רק השדות המבוקשים משתנים? האם יתר השדות נשארים ללא שינוי?
DELETE: האם הרשומה נמחקת או עוברת למצב מחוק בהתאם לדרישות? האם ניתן למחוק אותה שוב? האם משתמש לא מורשה יכול לבצע מחיקה?
GET, PUT, DELETE ו-HEAD מוגדרות כשיטות Idempotent בפרוטוקול HTTP. כלומר, ביצוע חוזר של אותה בקשה אמור להביא לאותה תוצאה מבחינת המצב הסופי של המשאב. POST אינו מוגדר כך כברירת מחדל. חשוב לבדוק את ההתנהגות בפועל בהתאם לחוזה הממשק ולדרישות העסקיות.
5. קודי HTTP – מה צריך לבדוק בתשובת השרת?
כל בקשת HTTP מקבלת בדרך כלל קוד סטטוס שמספק מידע על תוצאת הפעולה. בודק API צריך להכיר את הקודים הנפוצים ולוודא שהשרת מחזיר את הקוד המתאים לכל תרחיש.
קבוצת 2xx – הצלחה
- 200 OK: הבקשה הצליחה.
- 201 Created: משאב חדש נוצר בהצלחה.
- 202 Accepted: הבקשה התקבלה לעיבוד, אך העיבוד עדיין לא בהכרח הושלם.
- 204 No Content: הבקשה הצליחה ללא גוף תגובה.
קבוצת 3xx – הפניה
- 301 Moved Permanently: המשאב הועבר באופן קבוע.
- 302 Found: הפניה זמנית.
- 304 Not Modified: ניתן להשתמש בגרסה השמורה במטמון בהתאם לתנאי הבקשה.
קבוצת 4xx – שגיאת בקשה או לקוח
- 400 Bad Request: הבקשה אינה תקינה.
- 401 Unauthorized: חסר אימות תקף או שהאימות נכשל.
- 403 Forbidden: המשתמש אינו מורשה לבצע את הפעולה.
- 404 Not Found: המשאב לא נמצא.
- 405 Method Not Allowed: שיטת HTTP אינה נתמכת עבור המשאב.
- 409 Conflict: קיים קונפליקט במצב המשאב.
- 415 Unsupported Media Type: סוג התוכן שנשלח אינו נתמך.
- 422 Unprocessable Content: התוכן מובן מבחינה תחבירית, אך אינו עומד בדרישות העיבוד.
- 429 Too Many Requests: נשלחו יותר מדי בקשות בפרק זמן מסוים.
קבוצת 5xx – שגיאת שרת
- 500 Internal Server Error: שגיאה פנימית בשרת.
- 502 Bad Gateway: שרת ביניים קיבל תשובה לא תקינה משרת אחר.
- 503 Service Unavailable: השירות אינו זמין כרגע.
- 504 Gateway Timeout: שרת ביניים לא קיבל תשובה בזמן.
חשוב לזכור: קוד HTTP תקין אינו מוכיח שהפעולה העסקית בוצעה נכון. לדוגמה, API יכול להחזיר 200 OK ובכל זאת להחזיר סכום הזמנה שגוי. לכן תמיד בודקים גם את גוף התגובה ואת התוצאה העסקית.
6. סוגי בדיקות API
בדיקות API אינן מסתכמות בשליחת בקשה ובדיקת קוד התשובה. תהליך בדיקות מקצועי כולל מגוון סוגי בדיקות, שכל אחד מהם בודק היבט אחר של איכות הממשק.
Functional Testing – בדיקות פונקציונליות
בדיקות שמטרתן לוודא שה-API מבצע את הפעולות בהתאם לדרישות העסקיות.
לדוגמה: האם שירות יצירת הזמנה אכן יוצר הזמנה? האם חישוב המע"מ נכון? האם ניתן לקבל את פרטי ההזמנה לאחר יצירתה?
Positive Testing – בדיקות חיוביות
בדיקת התנהגות הממשק כאשר שולחים נתונים תקינים ובקשות שעומדות בדרישות.
לדוגמה: יצירת משתמש עם כתובת דואר אלקטרוני תקינה, סיסמה שעומדת במדיניות והנתונים הנדרשים.
Negative Testing – בדיקות שליליות
בדיקות שבהן שולחים נתונים שגויים, חסרים או לא צפויים, כדי לוודא שהמערכת מטפלת בהם בצורה מבוקרת.
לדוגמה: שליחת כתובת דואר אלקטרוני לא תקינה, ערך שלילי במקום מחיר, מזהה שאינו קיים או שדה חובה חסר.
Boundary Testing – בדיקות גבולות
בדיקות שמתמקדות בערכים בקצוות הטווחים המותרים.
אם מערכת מאפשרת להזמין בין מוצר אחד ל-100 מוצרים, יש לבדוק את הערכים 0, 1, 2, 99, 100 ו-101 בהתאם לדרישות.
Schema Validation – בדיקת מבנה התגובה
בדיקת התאמה של מבנה הנתונים לחוזה הממשק. בודקים האם השדות קיימים, האם סוגי הנתונים נכונים, האם שדות חובה מוחזרים והאם ערכים עומדים במגבלות שהוגדרו.
Integration Testing – בדיקות אינטגרציה
בדיקת התקשורת בין API לבין מערכות אחרות. לדוגמה, מערכת הזמנות שמעבירה מידע למערכת מלאי, למערכת סליקה ולמערכת משלוחים.
Contract Testing – בדיקות חוזה
בדיקות שמוודאות שהצרכן והספק של השירות מסכימים על מבנה הבקשות והתגובות. הבדיקות חשובות במיוחד בסביבת Microservices, שבה שינוי בממשק אחד עלול להשפיע על שירותים אחרים.
Regression Testing – בדיקות נסיגה
בדיקה ששינויים בקוד, בעדכוני גרסה או בתשתיות לא פגעו בפונקציונליות קיימת של הממשק.
Security Testing – בדיקות אבטחה
בדיקת הרשאות, אימות משתמשים, חשיפת נתונים, טיפול בטוקנים וניסיון גישה למשאבים שאינם מורשים למשתמש.
Performance Testing – בדיקות ביצועים
בדיקת זמני תגובה, קצב בקשות, יציבות ויכולת הממשק להתמודד עם עומסי עבודה שונים.
למידע נוסף על התחום, מומלץ לקרוא גם את המדריך שלנו בנושא בדיקות ביצועים – המדריך המלא.
7. איך מבצעים בדיקות API שלב אחר שלב?
כדי לבצע בדיקות API בצורה מקצועית, מומלץ לעבוד לפי תהליך מובנה. התהליך מאפשר לכסות את הדרישות, לצמצם פספוסים ולייצר תיעוד שניתן לחזור אליו.
לומדים מה השירות אמור לבצע, מי משתמש בו, אילו נתונים נדרשים, אילו תנאים עסקיים קיימים ומהן התוצאות הצפויות.
בודקים את רשימת ה-Endpoints, שיטות HTTP, פרמטרים, כותרות, סוגי נתונים, הרשאות וקודי תגובה אפשריים.
מגדירים כתובת שרת, משתמשים, הרשאות, נתוני בדיקה, Tokens וחיבור למערכות התלויות.
מכינים תרחישים חיוביים, שליליים, בדיקות גבולות, בדיקות הרשאות, בדיקות מבנה ותרחישי אינטגרציה.
שולחים בקשות באמצעות Postman, כלי בדיקה אחר או קוד אוטומציה. בודקים את התשובות מול התוצאה הצפויה.
מתעדים את הבקשה, התגובה, קוד הסטטוס, הנתונים שנשלחו, התוצאה בפועל והתוצאה הצפויה.
לאחר תיקון התקלה מבצעים בדיקה חוזרת, ובהתאם להשפעה מריצים גם בדיקות נסיגה.
8. דוגמאות מעשיות לתרחישי בדיקות API
נניח שאנחנו בודקים מערכת לניהול משתמשים. המערכת כוללת API לשליפת משתמש, יצירת משתמש חדש ועדכון פרטים.
דוגמה 1 – שליפת משתמש באמצעות GET
דוגמה לתגובה תקינה:
מה צריך לבדוק?
- האם התקבל קוד HTTP 200?
- האם מזהה המשתמש שחזר הוא 123?
- האם שם המשתמש נכון?
- האם כתובת הדואר האלקטרוני תואמת לנתונים במערכת?
- האם השדה active מחזיר ערך Boolean?
- האם לא נחשפו פרטים רגישים שאינם אמורים להיות מוחזרים?
דוגמה 2 – יצירת משתמש באמצעות POST
נשלחת בקשה ליצירת משתמש חדש:
תרחישי הבדיקה האפשריים:
- יצירת משתמש עם כל השדות התקינים.
- יצירת משתמש ללא שם.
- יצירת משתמש ללא כתובת דואר אלקטרוני.
- יצירת משתמש עם כתובת דואר אלקטרוני לא תקינה.
- יצירת משתמש עם כתובת שכבר קיימת במערכת.
- שליחת ערך לא חוקי בשדה role.
- שליחת שדה נוסף שאינו מוגדר בחוזה הממשק.
- שליחת גוף בקשה ריק.
בכל תרחיש יש לוודא את קוד התגובה, הודעת השגיאה, מצב הנתונים לאחר הבקשה וההתנהגות העסקית הצפויה. אין להניח שכל API חייב להחזיר את אותו קוד בכל מקרה: יש לבדוק את חוזה הממשק ואת דרישות המערכת.
דוגמה 3 – עדכון משתמש באמצעות PATCH
נניח שהמשתמש רוצה לשנות את כתובת הדואר האלקטרוני שלו בלבד.
יש לבדוק שהכתובת עודכנה, ושיתר פרטי המשתמש לא השתנו. כדאי גם לבדוק מה קורה כאשר שולחים כתובת לא תקינה, שדה שאינו ניתן לעדכון או מזהה משתמש שאינו קיים.
דוגמה 4 – בדיקת מחיקת משתמש
לאחר המחיקה יש לבדוק האם המשתמש אכן אינו זמין לשליפה, האם הרשומות הקשורות אליו מטופלות בהתאם לדרישות והאם משתמש ללא הרשאה יכול לבצע מחיקה.
דוגמה 5 – בדיקת Pagination
כאשר API מחזיר רשימה ארוכה של פריטים, נהוג להשתמש בחלוקה לעמודים (Pagination).
תרחישי בדיקה:
- בדיקת מספר הרשומות שמוחזרות בעמוד.
- בדיקת מעבר לעמוד הבא והקודם.
- בדיקת עמוד ראשון ואחרון.
- בדיקת מספר עמוד שלילי.
- בדיקת limit גדול מהמותר.
- בדיקת עמוד שאינו מכיל תוצאות.
- בדיקת כפילויות או רשומות חסרות במעבר בין עמודים.
דוגמה 6 – בדיקת סינון ומיון
יש לבדוק שכל המוצרים שייכים לקטגוריה המבוקשת, שהמיון מתבצע בסדר הנכון, מה קורה כאשר הקטגוריה אינה קיימת והאם פרמטרים לא תקינים מטופלים בצורה מבוקרת.
9. בדיקות API באמצעות Postman
Postman הוא אחד הכלים המוכרים והנפוצים לביצוע בדיקות API. הוא מאפשר לשלוח בקשות HTTP, להגדיר כותרות ופרמטרים, להוסיף נתוני JSON, לנהל הרשאות, לבדוק תגובות ולכתוב בדיקות אוטומטיות.
היתרון המרכזי הוא האפשרות לבצע בדיקות API ללא צורך לכתוב מערכת בדיקה שלמה בקוד.
איך מבצעים בדיקת API ב-Postman?
- פותחים בקשה חדשה.
- בוחרים את שיטת HTTP המתאימה, למשל GET או POST.
- מזינים את כתובת ה-Endpoint.
- מגדירים Headers בהתאם לדרישות.
- מוסיפים Authorization אם נדרש.
- בבקשות הכוללות נתונים, מגדירים Body בפורמט המתאים.
- שולחים את הבקשה באמצעות Send.
- בודקים את קוד התגובה, גוף התגובה, הכותרות וזמן התגובה.
- מוסיפים Assertions כדי לאמת את התוצאה באופן אוטומטי.
דוגמה לבדיקות אוטומטיות ב-Postman
אפשר לכתוב בדיקות JavaScript באזור Tests או Scripts של הבקשה:
בדוגמה זו מתבצעות ארבע בדיקות:
- בדיקת קוד HTTP.
- בדיקת מזהה המשתמש.
- בדיקת קיום שדה email.
- בדיקת זמן תגובה מתחת לשתי שניות.
חשוב להגדיר את סף זמן התגובה בהתאם לדרישות המערכת ולתנאי סביבת הבדיקה. ערך של שתי שניות בדוגמה אינו תקן מחייב.
עבודה עם Collections ו-Environments
Postman מאפשר לארגן בקשות בקבוצות הנקראות Collections. ניתן להגדיר Environment Variables כגון כתובת שרת, מזהה משתמש ו-Access Token, וכך להריץ את אותן בדיקות מול סביבות שונות.
לדוגמה:
כך ניתן להחליף בין סביבת QA, סביבת Staging וסביבת Production בלי לשנות את כל כתובות הבקשות באופן ידני.
10. אוטומציה לבדיקות API
במערכות שבהן קיימים עשרות או מאות ממשקי API, ביצוע כל הבדיקות באופן ידני עלול להיות תהליך ארוך, יקר ומועד לטעויות.
אוטומציה מאפשרת להריץ תרחישי בדיקה באופן חוזר, לבדוק תגובות, להשוות נתונים, לזהות חריגות ולשלב את הבדיקות בתהליך הפיתוח.
כלים נפוצים לאוטומציה של בדיקות API
| כלי | שימוש מרכזי | למי מתאים? |
|---|---|---|
| Postman | בדיקות ידניות ואוטומטיות | מתחילים ומנוסים |
| Playwright | בדיקות API ו-UI | בודקי אוטומציה |
| REST Assured | בדיקות REST באמצעות Java | מפתחי ובודקי Java |
| Newman | הרצת Collections של Postman משורת הפקודה | אוטומציה ו-CI/CD |
| Karate | בדיקות API באמצעות DSL ייעודי | צוותי QA ופיתוח |
| pytest + requests | בדיקות API באמצעות Python | בודקי Python |
מה כדאי להפוך לאוטומטי?
- בדיקות שליפת מידע מממשקים מרכזיים.
- בדיקות יצירה ועדכון של רשומות.
- בדיקת קודי HTTP.
- בדיקת מבנה JSON.
- בדיקות הרשאות ואימות משתמשים.
- בדיקות תהליכים עסקיים שחוזרים על עצמם.
- בדיקות Regression לאחר שינויים בקוד.
- בדיקות אינטגרציה בין שירותים.
לא כל תרחיש מתאים לאוטומציה. יש לבחון את יציבות הממשק, עלות התחזוקה, תדירות ההרצה והערך העסקי של הבדיקה.
11. בדיקות API באמצעות Playwright
Playwright מוכר בעיקר ככלי לאוטומציה של בדיקות ממשק משתמש, אך הוא כולל גם יכולות לביצוע בדיקות API באמצעות APIRequestContext.
באמצעות Playwright ניתן לשלוח בקשות HTTP, לבדוק את התגובות, לבצע Assertions, לעבוד עם נתונים ולשלב בדיקות API בתוך תהליכי בדיקה רחבים יותר.
דוגמה לבדיקת API ב-Playwright
נניח שאנחנו רוצים לבדוק שליפת משתמש באמצעות GET.
מה מתבצע בקוד?
- נשלחת בקשת GET לכתובת ה-API.
- נבדק שקוד התגובה הוא 200.
- מתבצעת קריאה של גוף התגובה בפורמט JSON.
- נבדק שמזהה המשתמש הוא 123.
- נבדק שקיים שדה email.
דוגמה לבדיקת יצירת משתמש באמצעות POST
הדוגמה מניחה שהממשק מחזיר 201 בעת יצירת משתמש. יש להתאים את הבדיקה לחוזה הממשק בפועל.
בדיקת API כחלק מתהליך E2E
אחד היתרונות של Playwright הוא האפשרות לשלב בדיקות API עם בדיקות ממשק משתמש. לדוגמה, אפשר ליצור משתמש באמצעות API, להיכנס לאתר ולבדוק שהמשתמש מופיע במסך המתאים.
כך ניתן לחסוך זמן בהכנת נתוני בדיקה ולבדוק תהליך עסקי שלם.
להעמקה בנושא, מומלץ לקרוא את המדריך בדיקות API עם Playwright – מדריך מעשי לאוטומציה.
12. בדיקות אבטחה והרשאות API
אבטחת API היא אחד התחומים החשובים ביותר בתהליך בדיקות התוכנה. ממשק שאינו מוגן כראוי עלול לאפשר גישה למידע אישי, שינוי נתונים, פעולות ללא הרשאה או חשיפת מידע עסקי.
בדיקות אבטחה צריכות להתבצע בסביבת בדיקה מורשית ובהתאם למדיניות הארגון.
Authentication – אימות משתמשים
אימות נועד לוודא את זהות המשתמש או השירות שמבצע את הבקשה.
יש לבדוק:
- מה קורה כאשר לא נשלח Token?
- מה קורה כאשר נשלח Token לא תקין?
- מה קורה כאשר פג תוקף ה-Token?
- האם ניתן להשתמש ב-Token של משתמש אחר?
- האם מנגנון הרענון של Token פועל בהתאם לדרישות?
Authorization – הרשאות גישה
אימות והרשאות הם שני דברים שונים. גם משתמש שהזדהה בהצלחה אינו אמור לקבל גישה לכל מידע או פעולה במערכת.
לדוגמה, משתמש רגיל אינו אמור להיות מסוגל לצפות בפרטי משתמש אחר או לבצע פעולות המיועדות למנהל מערכת בלבד.
בדיקות IDOR ו-BOLA
אחת הבעיות הנפוצות בממשקי API היא חשיפת מידע באמצעות שינוי מזהה משאב בבקשה.
לדוגמה, משתמש מחובר שולח:
בודקים האם שינוי המזהה ל-1002 מאפשר גישה להזמנה שאינה שייכת לאותו משתמש.
המערכת צריכה לאכוף הרשאות בצד השרת ולא להסתמך על כך שהמשתמש לא ישנה את המזהה בעצמו.
בדיקות אבטחה נוספות
- חשיפת סיסמאות, Tokens או מידע אישי בתגובות.
- בדיקת הרשאות לפי תפקיד המשתמש.
- בדיקת הגבלת קצב בקשות (Rate Limiting).
- בדיקת קלטים חריגים ונתונים לא צפויים.
- בדיקת מנגנוני אימות והרשאות מול שירותים חיצוניים.
- בדיקת CORS כאשר הממשק נצרך מדפדפנים.
- בדיקת טיפול בשגיאות ללא חשיפת Stack Traces או פרטים פנימיים.
- בדיקת הגנה מפני שימוש לא מורשה במשאבים.
מסגרת מקצועית מוכרת בתחום היא OWASP API Security Top 10, שמציגה סיכוני אבטחה מרכזיים בממשקי API.
13. בדיקות ביצועים ועומסים לממשקי API
גם כאשר API מחזיר נתונים נכונים, חשוב לבדוק האם הוא מסוגל לעשות זאת במהירות וביציבות תחת עומסי עבודה שונים.
ממשק API איטי עלול לגרום לאפליקציה להיתקע, להאריך תהליכים עסקיים ולפגוע בחוויית המשתמש. כאשר מספר המשתמשים גדל, בעיות ביצועים עלולות להפוך לתקלות משמעותיות.
אילו מדדים חשוב לבדוק?
- Response Time: הזמן שלוקח לשרת להחזיר תגובה.
- Throughput: מספר הבקשות שהמערכת מסוגלת לעבד בפרק זמן נתון.
- Requests Per Second: מספר הבקשות בשנייה.
- Error Rate: שיעור הבקשות שנכשלו.
- Latency: זמן ההשהיה בתקשורת.
- Percentiles: מדדים כגון P90, P95 ו-P99 המתארים את זמני התגובה באחוזונים.
- Resource Utilization: שימוש במעבד, בזיכרון, ברשת ובמשאבי מערכת אחרים.
דוגמה לתרחיש בדיקת עומסים ל-API
נניח שקיים API להצגת קטלוג מוצרים באתר מסחר אלקטרוני.
נבנה תרחיש שבו מספר המשתמשים הווירטואליים גדל בהדרגה. כל משתמש שולח בקשות לשליפת מוצרים, סינון לפי קטגוריה ומיון לפי מחיר.
במהלך הבדיקה נמדוד:
- זמן תגובה ממוצע ואחוזונים.
- מספר הבקשות שהשרת מצליח לעבד.
- שיעור שגיאות HTTP.
- עומס על בסיס הנתונים.
- שימוש במשאבי השרת.
- התנהגות המערכת כאשר מספר הבקשות גדל.
כלים לבדיקות עומסים של API
כלים כמו JMeter ו-k6 מאפשרים לשלוח מספר רב של בקשות API ולבחון את התנהגות המערכת תחת עומס.
לקריאה נוספת:
- כלי בדיקות עומסים – JMeter, k6 וכלים נוספים
- אילו מדדים בודקים בבדיקות עומסים?
- Load Testing לעומת Stress Testing
14. תיעוד API ו-OpenAPI – למה זה חשוב לבודק?
כדי לבדוק API בצורה מקצועית, צריך להבין מה הממשק אמור לעשות. כאן נכנס לתמונה תיעוד ה-API.
התיעוד מספק מידע על השירות, נקודות הגישה, הפרמטרים, מבנה הנתונים, ההרשאות וקודי התגובה.
מהו OpenAPI?
OpenAPI הוא תקן לתיאור ממשקי HTTP API בצורה מובנית וקריאה למחשבים ולבני אדם. באמצעותו ניתן לתעד Endpoints, שיטות HTTP, פרמטרים, Schemas, מנגנוני אבטחה ותגובות אפשריות.
תיעוד OpenAPI יכול לשמש את צוות הפיתוח, צוות QA ואת צוותי האינטגרציה. כלים כמו Swagger UI מאפשרים להציג את התיעוד ולהתנסות בבקשות מתוך ממשק משתמש.
קישור: OpenAPI Initiative.
מה בודק תוכנה צריך לחפש בתיעוד?
- רשימת כל ה-Endpoints.
- שיטת HTTP לכל Endpoint.
- שדות חובה ושדות רשות.
- סוגי נתונים ומגבלות.
- מבנה Request ו-Response.
- קודי שגיאה אפשריים.
- מנגנוני Authentication ו-Authorization.
- כללי Pagination, Sorting ו-Filtering.
- תלות בין שירותים וממשקים.
פער בין התיעוד להתנהגות בפועל של ה-API עשוי להעיד על תקלה, תיעוד שאינו מעודכן או חוסר בהירות בדרישות. בכל מקרה יש לתעד את הפער ולברר מהו החוזה המחייב.
15. טעויות נפוצות בבדיקות API
גם בודקים מנוסים עלולים לפספס בעיות כאשר הבדיקות מתמקדות רק בתרחישים בסיסיים.
| טעות | מה הבעיה? | מה כדאי לעשות? |
|---|---|---|
| בדיקת Status בלבד | התגובה יכולה להיות שגויה למרות קוד תקין | לבדוק גם את גוף התגובה |
| בדיקת נתונים תקינים בלבד | תקלות רבות מתגלות רק בקלט חריג | להוסיף Negative Testing |
| התעלמות מהרשאות | גישה לא מורשית למידע | לבדוק משתמשים ותפקידים שונים |
| בדיקת Endpoint בודד | תקלות באינטגרציה לא מתגלות | לבדוק תהליכים מקצה לקצה |
| התעלמות מ-Response Time | ממשק יכול להיות תקין אך איטי | להגדיר דרישות ביצועים |
| נתוני בדיקה לא מבוקרים | תוצאות לא עקביות בין הרצות | לנהל נתוני בדיקה ולנקות אותם |
| היעדר בדיקות חוזרות | תיקון עלול ליצור תקלות חדשות | לבנות Regression Suite |
16. צ'קליסט מלא לבדיקות API
לפני שמסיימים בדיקת API, מומלץ לעבור על רשימת הבדיקות הבאה. ניתן להשתמש בה כבסיס לתוכנית בדיקות בפרויקט חדש או כחלק מבדיקות Regression.
בדיקות פונקציונליות
- בדיקת GET לשליפת נתונים.
- בדיקת POST ליצירת נתונים.
- בדיקת PUT ו-PATCH לעדכון.
- בדיקת DELETE למחיקה.
- בדיקת תוצאות מול הדרישות העסקיות.
בדיקות נתונים
- בדיקת שדות חובה.
- בדיקת שדות רשות.
- בדיקת סוגי נתונים.
- בדיקת ערכים חריגים.
- בדיקת ערכים מינימליים ומקסימליים.
- בדיקת Null, ערכים ריקים ונתונים חסרים.
בדיקות HTTP
- בדיקת Status Codes.
- בדיקת Headers.
- בדיקת Content-Type.
- בדיקת מבנה Response.
- בדיקת טיפול בשגיאות.
בדיקות אבטחה
- בדיקת משתמש ללא הרשאה.
- בדיקת Token לא תקין.
- בדיקת Token שפג תוקפו.
- בדיקת גישה לנתוני משתמש אחר.
- בדיקת חשיפת מידע רגיש.
בדיקות אינטגרציה וביצועים
- בדיקת תקשורת עם מערכות חיצוניות.
- בדיקת תהליכים עסקיים בין מספר שירותים.
- בדיקת זמני תגובה.
- בדיקת שיעור שגיאות.
- בדיקת התנהגות בעומס.
בדיקות אוטומציה
- בדיקת Assertions.
- בדיקת Schema.
- בדיקת נתונים דינמיים.
- בדיקת הרצה חוזרת.
- שילוב בדיקות בתהליך CI/CD.
17. איך מתחילים לעבוד בתחום בדיקות API?
בדיקות API הן מיומנות חשובה עבור בודקי תוכנה ידניים ואוטומטיים. החדשות הטובות הן שאפשר להתחיל ללמוד את התחום גם ללא ניסיון קודם בפיתוח תוכנה, בתנאי שבונים את הידע בהדרגה ומתרגלים באופן מעשי.
שלב ראשון – הבנת יסודות HTTP
לומדים מהן בקשות ותגובות, מה ההבדל בין GET ל-POST, מה משמעות קודי HTTP וכיצד מועברים נתונים בין לקוח לשרת.
שלב שני – עבודה עם JSON
לומדים לקרוא ולנתח מבני JSON, להבין אובייקטים ומערכים, לזהות שדות חובה ולבדוק סוגי נתונים.
שלב שלישי – תרגול ב-Postman
מתחילים עם בקשות GET ו-POST, ממשיכים לעדכון ומחיקה, לומדים לעבוד עם Headers, Tokens ו-Environment Variables.
שלב רביעי – כתיבת תרחישי בדיקה
מתרגלים כתיבת תרחישים חיוביים ושליליים, בדיקות גבולות, בדיקות הרשאות, בדיקות נתונים ובדיקות אינטגרציה.
שלב חמישי – לימוד אוטומציה
לאחר שמבינים כיצד API עובד וכיצד בודקים אותו באופן ידני, אפשר ללמוד JavaScript או Python ולהתחיל לכתוב בדיקות אוטומטיות.
שלב שישי – בניית תיק עבודות
כדאי לבנות פרויקט קטן הכולל Collection של Postman, תרחישי בדיקה, Assertions, תיעוד תקלות ובמידת האפשר גם קוד אוטומציה ב-Playwright.
חשוב להציג לא רק את הכלים שבהם השתמשתם, אלא גם את יכולת החשיבה הבדיקתית: אילו סיכונים זיהיתם, אילו תרחישים בניתם וכיצד וידאתם את נכונות התוצאות.
18. שאלות ותשובות נפוצות בנושא בדיקות API
מה זה בדיקות API?
בדיקות API הן בדיקות תוכנה שמטרתן לוודא שממשקי התקשורת בין מערכות פועלים בהתאם לדרישות. בודקים את הבקשות, התגובות, הנתונים, קודי HTTP, ההרשאות וההתנהגות העסקית.
מה ההבדל בין בדיקות API לבדיקות UI?
בדיקות UI מתמקדות בממשק המשתמש ובפעולות שהוא מבצע, בעוד שבדיקות API מתמקדות בתקשורת בין מערכות ובפעולות שמבוצעות בצד השרת. שתי השיטות משלימות זו את זו.
האם צריך לדעת לתכנת כדי לבצע בדיקות API?
לא בהכרח. ניתן להתחיל בבדיקות ידניות באמצעות Postman ללא כתיבת קוד. עם זאת, ידע בסיסי ב-JavaScript או Python מועיל מאוד להמשך הדרך ולאוטומציה.
איזה כלי הכי מתאים לבדיקות API?
Postman הוא נקודת התחלה נוחה לבדיקות ידניות ואוטומטיות. Playwright מתאים לבדיקות API בקוד ולשילוב עם בדיקות UI, REST Assured מתאים לסביבות Java, ו-Karate מציע דרך נוספת לכתיבת בדיקות API.
מה ההבדל בין API ל-REST API?
API הוא מושג כללי המתאר ממשק המאפשר תקשורת בין מערכות. REST הוא סגנון ארכיטקטוני נפוץ ליישום ממשקי API, בדרך כלל באמצעות HTTP.
מה זה Endpoint?
Endpoint הוא נקודת גישה לממשק API, בדרך כלל כתובת URL המאפשרת לבצע פעולה או לגשת למשאב מסוים.
מה זה JSON בבדיקות API?
JSON הוא פורמט נפוץ להעברת נתונים בין מערכות. בבדיקות API בודקים את מבנה הנתונים, את סוגי השדות, את הערכים ואת התאמתם לתוצאה הצפויה.
מה ההבדל בין 401 ל-403?
401 מציין בעיית אימות, כגון Token חסר או לא תקין. 403 מציין שהבקשה אינה מורשית, גם כאשר זהות המשתמש כבר ידועה למערכת.
האם בדיקות API מחליפות בדיקות UI?
לא. בדיקות API ובדיקות UI בודקות שכבות שונות במערכת. שילוב ביניהן מאפשר לקבל כיסוי בדיקות רחב יותר ולזהות תקלות גם בממשק המשתמש וגם בלוגיקה העסקית.
האם אפשר לבצע בדיקות עומסים באמצעות API?
בהחלט. ניתן לשלוח מספר רב של בקשות לממשק ולמדוד זמני תגובה, Throughput, שיעור שגיאות וצריכת משאבים באמצעות כלים כגון JMeter ו-k6.
מה כדאי ללמוד אחרי Postman?
מומלץ ללמוד כתיבת בדיקות אוטומטיות באמצעות JavaScript או Python, להכיר Playwright או REST Assured, ולהעמיק בנושאי Authentication, Contract Testing, אינטגרציה ו-CI/CD.
סיכום: בדיקות API הן מיומנות מרכזית בעולם ה-QA
בדיקות API הפכו לחלק בלתי נפרד מתהליך בדיקות התוכנה במערכות מודרניות. הן מאפשרות לבדוק את הלוגיקה העסקית, את איכות הנתונים, את התקשורת בין מערכות ואת רמת האבטחה והביצועים של השירותים.
בודק תוכנה מקצועי צריך לדעת כיצד לנתח תיעוד API, להבין בקשות ותגובות HTTP, לכתוב תרחישי בדיקה חיוביים ושליליים, לבדוק הרשאות, לזהות תקלות ולתעד אותן בצורה ברורה.
הדרך הנכונה להתחיל היא ללמוד את יסודות HTTP ו-JSON, להתנסות בבדיקות ידניות באמצעות Postman, ובהמשך להרחיב את הידע לאוטומציה באמצעות Playwright, Python או כלים נוספים.
ככל שמערכות תוכנה הופכות למבוזרות ומבוססות שירותים, היכולת לבדוק ממשקי API בצורה יסודית הופכת ליתרון מקצועי משמעותי עבור כל מי שעוסק בבדיקות תוכנה.
ממשיכים ללמוד ולהעמיק בתחום ה-QA
ב-TESQA תמצאו מדריכים מעשיים לבדיקות תוכנה ידניות ואוטומטיות, בדיקות API, Playwright, בדיקות ביצועים, עומסים וכלים מקצועיים לעולם ה-QA.
לכל מדריכי TESQAלקרוא מאמרים זה נחמד אבל לא יביא אותך לתוצאה שאתה רוצה, בדיוק בשביל זה הכנו עבורך את הקורס הדיגיטלי המהיר, תוך שעתיים וחצי תלמד את תחום הבדיקות ידניות, תוכל להתחיל לעבוד מהבית דרך FIVERR או ולהתכונן נכון לראיונות עבודה שיעזרו לך לצלוח אותם. כנס כאן הקורס ממוקד בבדיקות תוכנה ידניות הנותן בסיס חזק לתחום.
לעבוד מהבית כבודק תוכנה עם FIVERR >> לחץ כאן