מה זה API?
(Application Programming Interface) API פירוש הקיצור
הוא ממשק תכנות יישומים. זוהי דרך שבה יישומים או שירותים שונים יכולים לתקשר ולשתף מידע או פונקציות באמצעות קוד ללא שימוש בממשק משתמש גרפי. לדוגמה, ניתן להשתמש ב API של שירותי תחזית מזג אויר כדי לספק מידע רלוונטי לאתר שמשרת גולשי גלים. זהו כלי חשוב ושימושי בעולם התכנות והטכנולוגיה, שמאפשר לחסוך זמן ומשאבים, להתממשק לשירותים אחרים, וליצור יישומים חדשניים ויצירתיים. כל אחד יכול לבנות API אך ישנם תקנים ומתודולוגיות כמו SOAP ו REST שמגדירים את הצורה שבה הבקשות והתגובות נשלחות ומתקבלות. בדיקות API יבטיחו ש ה API שבנינו יעבוד כמצופה.
בדיקות API Testing) API) - למה זה חשוב?
בעת שימוש ב-API, נדרשת רמה גבוהה של איכות ועקביות. API שבור יגרום למשתמשים לזנוח את האפליקציה שלא תגיב כמצופה ותגרום למפתחים לעשות התאמות ושינויים בתהליכים שלהם או להפסיק להשתמש ב API שרמתו נמוכה (אם יש להם אלטרנטיבה אחרת...). כדי לוודא רמה גבוהה של עקביות ואיכות יש לבצע בדיקות API.
בדיקות API הן סוג של בדיקות תוכנה המפעילות את ממשק ה API ומבטיחות שהוא פועל כצפוי, ומשלים באופן אמין את הפונקציונליות שלו ללא פגיעה בביצועים. ניתן לבצע בדיקות כאלה הן בצורה ידנית והן בצורה אוטומטית. בדיקות API הן סוג של 'בדיקות אינטגרציה' לבדיקת צד שרת של המערכת הנבדקת ויתרונן על בדיקות קצה-לקצה (e2e) הוא בכך שהן בודקות את לב המערכת בצורה מהירה, אמינה וזולה באופן יחסי.
כיצד לבדוק API באוטומציה?
בבדיקות API באוטומציה משתמשים בכלי תוכנה כדי להריץ בדיקות על API באופן אוטומטי, בצורה שיכולה לחסוך זמן ומשאבים, להגביר את היעילות והדיוק, ולאפשר בדיקות חוזרות בכל שלבי פיתוח המערכת הנבדקת (המוצר).
כדי לבדוק API באוטומציה, יש צורך לבחור בכלים המתאימים לסוג ה-API ולדרישות הבדיקה. ישנם כלים רבים זמינים בשוק, כאשר לכל כלי יש יתרונות וחסרונות ויש להשוות אותם לפי הפרמטרים הבאים:
תמיכה בסוגי API שונים, כמו REST, SOAP, GraphQL ועוד.
יכולת ליצור, לנהל ולשמור בקשות ותגובות.
יכולת לבצע בדיקות על פרמטרים, קודי סטטוס, גוף התגובה ועוד.
יכולת להשתמש במשתנים, לוגיקה, תנאים ולולאות.
יכולת להשתמש בסקריפטים בשפות תכנות שונות, כמו JavaScript, Python, Java ועוד.
יכולת להשתלב עם מערכות וכלים אחרים, כמו CI/CD, מערכות בקרת גרסאות, מערכות ניהול בדיקות ועוד.
ישנם כלים ספציפיים לבדיקות API כגון Postman ו-SOAPUI, המאפשרים לבצע בקשות API ללא כתיבת קוד. בנוסף ישנם כלים המאפשרים להקליט את כל הקריאות בתרחיש וליצור מהם טסטים לבדיקת ה API (לדוגמה Loadmill).
כיוון שאין דרך הנחשבת מומלצת לבדיקות API במערכות מבוססות קוד, ישנה חשיבות לצורה בה נכתוב את התשתית והטסטים ל API במערכות כאלה ובכך יתמקד מאמר זה.
כתיבת תשתית בדיקות ה API
לפני שנכתוב את הטסט הראשון יש לוודא את מבנה הקוד שיתאים לבדיקות ה API שלנו. נצטרך לבנות את ה client code (נקרא לקוד הזה proxy) במקום מרכזי כך שכל טסט שיצטרך לבצע קריאות יוכל לפנות אליו. לשם כך נבנה מחלקה, לדוגמה בשם PetsProxy, שתגדיר קבוצת פעולות ב API אשר יש להן path משותף.
// pets-proxy.js
export class PetsProxy {
baseUrl = 'my-base-url/path/pet';
getPetById(id) {
const url = `this.baseUrl/${id}`;
const response = client.get(url);
return response;
}
createPet(name, id, category) {
const url = this.baseUrl;
const response = client.post(
{name: name,
category: {name: category, id: id}
});
return response;
}
}
בדוגמה הזו המחלקה PetsProxy מכילה נתיב משותף בשם baseUrl שמתאים לשתי המתודות במחלקה getPetById שתפקידה להביא חיית מחמד לפי מספר זיהוי, ו createPet שתפקידה להוסיף חיית מחמד למאגר. אנו משתמשים ב client כדי לייצג http-client כללי (למשל Axios) אותו נעטוף למען הנוחות במתודות get, post, put וכו' שמקבלות אפס פרמטרים או יותר ומחזירות את התגובה לבקשה.
כל מה שנותר עכשיו זה ליצור טסט שיבדוק את ה API תוך שימוש ב PetsProxy, לדוגמה:
// tests/pet-suite.js
it("example-proxy-test", ()=> {
const proxy = new PetsProxy();
const response = proxy.getPetById(1);
expect(response.statusCode).toEqual(200);
})
כפי שניתן לראות השימוש ב PetsProxy הופך את כתיבת הטסט לדבר קל, נוח וקריא. אבל... בואו נעבור לפרק הבא.
כתיבת תשתית הבדיקות באופן אוטומטי
לא, זו לא טעות בכותרת. ניתן לכתוב את ה proxies שלנו בצורה אוטומטית עם כלי שנקרא OpenAPI Generator. זהו כלי שמשתמש בסְכֵמוֹת של ה API כדי ליצור קוד קליינט. כדי שנוכל לעבוד עם הכלי הזה צריך לוודא שיש ל API שלנו תיעוד מסוג OpenAPI מגרסה 3.0 ומעלה.
היתרון של כתיבה אוטומטית של ה proxies באמצעות OpenAPI Generator הוא שלא נצטרך לכתוב את כל הקוד בצורה ידנית (טוב זה ברור 😊), אבל חשוב יותר: אם משהו ישתנה בסכמות של ה API כמו הנתיבים או הפרמטרים שאנחנו צריכים לשלוח, נוכל לייצר באופן אוטומטי את כל ה proxies ולהפוך את תהליך התחזוקה שלהם לדבר הכי קל בעולם!
כיוון שיש הרבה מאמרים כיצד לעבוד עם OpenAPI Generator, אין טעם לחזור על זה כאן, אבל תוכלו להתחיל מהמאמר הזה, ולצפות בדמו ממש כאן 👇
סיכום
ה API מאפשר להפעיל את ליבת המערכת באמצעות קריאות ותגובות. במקרים רבים ארגונים חושפים את ה API ללקוחות שלהם או משתמשים בו כדי לבצע פעולות מהאפליקציה. לכן, בדיקות API חשובות לארגון ולמרבה המזל הן גם נחשבות כבדיקות שהחזר ההשקעה בהן הוא מהגבוהים ביותר, ומומלץ להוסיף אותן לכל מערכת בדיקות אוטומציה. יתר על כן, שימוש ב proxies כפי שמתואר במאמר, יוכל להזניק את בדיקות ה e2e שלכם לרמה אחרת כיוון שבעזרתם תוכלו להכין את התנאים עבור כל טסט ולבצע אימות של הנתונים בסוף כל טסט בצורה יעילה ומהירה ביותר.
Comments