בדיקות API עם Playwright – מדריך מעשי לאוטומציה של ממשקי API

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

מה תלמדו במדריך?

  • מהן בדיקות API ומדוע הן חשובות.
  • מהו Playwright וכיצד הוא מאפשר לבדוק ממשקי API.
  • כיצד להגדיר סביבת עבודה ולהריץ בדיקה ראשונה.
  • כיצד לבדוק GET, POST, PUT, PATCH ו־DELETE.
  • כיצד לבדוק קודי HTTP, מבנה JSON, כותרות ונתונים.
  • כיצד לבצע בדיקות הרשאות, ולידציה וטיפול בשגיאות.
  • כיצד לשלב בדיקות API ובדיקות UI באותו פרויקט.
  • אילו טעויות נפוצות כדאי להימנע מהן.

1. מהן בדיקות API?

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

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

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

  • האם ניתן לקבל את רשימת ההזמנות של משתמש.
  • האם יצירת הזמנה חדשה מחזירה מזהה הזמנה.
  • האם אי אפשר ליצור הזמנה עם כמות שלילית.
  • האם משתמש לא מורשה מקבל תשובה מתאימה.
  • האם בקשה למזהה שאינו קיים מטופלת כראוי.

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

2. מהו Playwright וכיצד הוא משמש לבדיקות API?

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

באמצעות אובייקט APIRequestContext ניתן לשלוח בקשות לשירותים, לקבל תגובות ולבדוק את תוכנן. במסגרת Playwright Test אפשר לכתוב בדיקות מובנות באמצעות פונקציות כמו test ו־expect, להריץ מספר בדיקות ולצפות בדוחות על התוצאות.

למה לבחור ב־Playwright לבדיקות API?

  • אפשר להשתמש באותו כלי לבדיקות API ולבדיקות דפדפן.
  • ניתן לבדוק קודי סטטוס, כותרות וגופי תגובה.
  • אפשר לשלוח נתונים בפורמט JSON ולבדוק את התוצאה.
  • ניתן לנהל בדיקות באמצעות Playwright Test.
  • אפשר לשלב את הבדיקות בתהליכי CI/CD.
  • אפשר להשתמש בנתוני התחברות ובתוצאות של בקשות בבדיקות נוספות.

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

3. מה ההבדל בין בדיקות API לבדיקות UI?

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

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

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

להרחבה בנושא, קראו את המאמר בדיקות ידניות מול בדיקות אוטומטיות.

4. הכנת סביבת העבודה

כדי להתחיל לכתוב בדיקות API עם Playwright, נדרשים Node.js וסביבת עבודה לפרויקט JavaScript או TypeScript. בדוגמאות במדריך נשתמש ב־JavaScript וב־Playwright Test.

שלב ראשון: יצירת פרויקט

פתחו את הטרמינל בתיקייה שבה תרצו ליצור את הפרויקט והריצו:

mkdir playwright-api-tests
cd playwright-api-tests
npm init -y
npm install -D @playwright/test
npx playwright install

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

שלב שני: יצירת קובץ בדיקה

צרו תיקייה בשם tests ובתוכה קובץ בשם api.spec.js. בקובץ נכתוב בדיקה ראשונה באמצעות שירות API ציבורי לדוגמה.

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

5. בדיקת API ראשונה עם Playwright

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

const { test, expect } = require('@playwright/test');

test('GET - retrieve a post', async ({ request }) => {
  const response = await request.get(
    'https://jsonplaceholder.typicode.com/posts/1'
  );

  expect(response.status()).toBe(200);
  expect(response.ok()).toBeTruthy();

  const data = await response.json();

  expect(data.id).toBe(1);
  expect(typeof data.title).toBe('string');
  expect(typeof data.body).toBe('string');
  expect(typeof data.userId).toBe('number');
});

הסבר על הקוד

  • test מגדיר מקרה בדיקה עצמאי.
  • request הוא מופע APIRequestContext ש־Playwright מספק באמצעות סביבת הבדיקה.
  • request.get() שולח בקשת HTTP מסוג GET.
  • response.status() מחזיר את קוד הסטטוס של התגובה.
  • response.ok() מציין אם קוד התגובה נמצא בטווח 200–299.
  • response.json() קורא ומפענח את גוף התגובה כ־JSON.
  • expect() משווה את התוצאה לציפיות שהוגדרו בבדיקה.

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

6. כיצד מריצים את הבדיקה?

כדי להריץ את הבדיקות באמצעות Playwright Test, השתמשו בפקודה:

npx playwright test tests/api.spec.js

כדי להציג את תוצאות הריצה בפורמט מפורט יותר:

npx playwright test tests/api.spec.js --reporter=list

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

7. בדיקת בקשות POST ויצירת נתונים

בקשת POST משמשת במקרים רבים ליצירת משאב חדש. למשל, יצירת לקוח, פתיחת קריאת שירות או הוספת הזמנה.

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

const { test, expect } = require('@playwright/test');

test('POST - create a post', async ({ request }) => {
  const payload = {
    title: 'API testing with Playwright',
    body: 'Learning how to test REST APIs',
    userId: 1
  };

  const response = await request.post(
    'https://jsonplaceholder.typicode.com/posts',
    {
      data: payload
    }
  );

  expect(response.status()).toBe(201);

  const data = await response.json();

  expect(data.title).toBe(payload.title);
  expect(data.body).toBe(payload.body);
  expect(data.userId).toBe(payload.userId);
  expect(data.id).toBeDefined();
});

הפרמטר data מאפשר להעביר נתונים בבקשה. כאשר שולחים אובייקט JavaScript באמצעות האפשרות הזו, Playwright מטפל בקידוד הנתונים כ־JSON ובהגדרת Content-Type המתאים.

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

8. בדיקת PUT, PATCH ו־DELETE

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

בדיקת PUT – עדכון משאב

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

test('PUT - update a post', async ({ request }) => {
  const payload = {
    id: 1,
    title: 'Updated title',
    body: 'Updated content',
    userId: 1
  };

  const response = await request.put(
    'https://jsonplaceholder.typicode.com/posts/1',
    {
      data: payload
    }
  );

  expect(response.status()).toBe(200);

  const data = await response.json();

  expect(data.title).toBe('Updated title');
  expect(data.body).toBe('Updated content');
});

בדיקת PATCH – עדכון חלקי

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

test('PATCH - update one field', async ({ request }) => {
  const response = await request.patch(
    'https://jsonplaceholder.typicode.com/posts/1',
    {
      data: {
        title: 'Partially updated title'
      }
    }
  );

  expect(response.status()).toBe(200);

  const data = await response.json();

  expect(data.title).toBe('Partially updated title');
});

בדיקת DELETE – מחיקת משאב

DELETE משמש לבקשת מחיקה של משאב. חשוב לבדוק את קוד התגובה בהתאם לתכנון המערכת: שירותים מסוימים יחזירו 200, אחרים 204, ולעיתים התגובה תהיה שונה.

test('DELETE - delete a post', async ({ request }) => {
  const response = await request.delete(
    'https://jsonplaceholder.typicode.com/posts/1'
  );

  expect([200, 202, 204]).toContain(response.status());
});

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

חשוב: דוגמאות PUT, PATCH ו־DELETE מול שירות הדגמה אינן מוכיחות שהנתונים אכן נשמרו או נמחקו. כדי לבדוק התנהגות מתמשכת, השתמשו בסביבת בדיקות שבשליטתכם ובדקו את מצב המשאב לאחר הפעולה.

9. בדיקת קודי HTTP

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

קוד משמעות נפוצה מה כדאי לבדוק?
200 הבקשה הצליחה תוכן התגובה והנתונים
201 משאב נוצר מזהה המשאב והנתונים שנוצרו
204 הבקשה הצליחה ללא גוף תגובה שהתגובה תואמת לדרישה
400 בקשה לא תקינה הודעת שגיאה וטיפול בקלט
401 נדרש אימות התנהגות ללא פרטי התחברות תקפים
403 הגישה נדחתה הרשאות המשתמש
404 המשאב לא נמצא התנהגות עבור מזהה חסר
500 שגיאת שרת טיפול בתקלות ולוגים

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

10. בדיקת מבנה JSON ותוכן התגובה

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

נניח שה־API מחזיר מוצר עם השדות הבאים:

{
  "id": 101,
  "name": "Keyboard",
  "price": 249.90,
  "available": true
}

אפשר לבדוק את מבנה הנתונים ואת הערכים החשובים כך:

test('Validate product response', async ({ request }) => {
  const response = await request.get(
    'https://api.example.com/products/101'
  );

  expect(response.status()).toBe(200);

  const product = await response.json();

  expect(product).toEqual(
    expect.objectContaining({
      id: 101,
      name: expect.any(String),
      price: expect.any(Number),
      available: expect.any(Boolean)
    })
  );

  expect(product.price).toBeGreaterThan(0);
});

הכתובת api.example.com היא כתובת המחשה בלבד. כדי להריץ את הבדיקה בפועל יש להחליף אותה בכתובת ה־API האמיתית של סביבת הבדיקות ולוודא שהמוצר והערכים הצפויים קיימים.

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

11. בדיקת כותרות HTTP

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

test('Validate response headers', async ({ request }) => {
  const response = await request.get(
    'https://jsonplaceholder.typicode.com/posts/1'
  );

  expect(response.status()).toBe(200);

  const headers = response.headers();

  expect(headers['content-type']).toContain('application/json');
});

שמות הכותרות שמוחזרים באמצעות response.headers() מנורמלים בדרך כלל לאותיות קטנות. בבדיקה זו אנו מוודאים שהשרת מציין כי התגובה כוללת JSON.

12. בדיקות שליליות ותרחישי שגיאה

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

במערכת לניהול משתמשים, למשל, כדאי לבדוק:

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

דוגמה לבדיקת בקשה עם נתונים לא תקינים:

test('Reject invalid product data', async ({ request }) => {
  const response = await request.post(
    'https://api.example.com/products',
    {
      data: {
        name: '',
        price: -10
      }
    }
  );

  expect(response.status()).toBe(400);

  const error = await response.json();

  expect(error).toHaveProperty('message');
});

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

13. בדיקות אימות והרשאות

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

אימות (Authentication) בודק מי המשתמש. הרשאה (Authorization) בודקת אילו פעולות המשתמש רשאי לבצע. מערכת עשויה לזהות משתמש בהצלחה ועדיין למנוע ממנו לגשת למשאב שאינו מורשה לראות.

תרחישים שכדאי לכלול:

  • בקשה ללא אסימון התחברות.
  • בקשה עם אסימון לא תקף.
  • בקשה עם אסימון שפג תוקפו.
  • משתמש רגיל שמנסה לבצע פעולת מנהל.
  • משתמש שמנסה לקרוא מידע של משתמש אחר.
  • משתמש מורשה שמבצע פעולה מותרת.

דוגמה לשליחת בקשה עם Bearer Token:

test('Access protected endpoint', async ({ request }) => {
  const token = process.env.API_TOKEN;

  if (!token) {
    throw new Error('API_TOKEN environment variable is required');
  }

  const response = await request.get(
    'https://api.example.com/profile',
    {
      headers: {
        Authorization: `Bearer ${token}`
      }
    }
  );

  expect(response.status()).toBe(200);
});

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

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

14. שימוש ב־Base URL והגדרות משותפות

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

צרו או עדכנו את הקובץ playwright.config.js:

const { defineConfig } = require('@playwright/test');

module.exports = defineConfig({
  testDir: './tests',
  use: {
    baseURL: process.env.API_BASE_URL ||
      'https://jsonplaceholder.typicode.com'
  },
  reporter: 'list'
});

כעת אפשר לכתוב בדיקה עם נתיב יחסי:

test('GET post using baseURL', async ({ request }) => {
  const response = await request.get('/posts/1');

  expect(response.status()).toBe(200);
});

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

15. בדיקת API באמצעות הקשר עצמאי

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

const { test, expect, request } = require('@playwright/test');

test('Use a dedicated API request context', async () => {
  const apiContext = await request.newContext({
    baseURL: 'https://jsonplaceholder.typicode.com',
    extraHTTPHeaders: {
      Accept: 'application/json'
    }
  });

  try {
    const response = await apiContext.get('/posts/1');

    expect(response.status()).toBe(200);

    const data = await response.json();
    expect(data.id).toBe(1);
  } finally {
    await apiContext.dispose();
  }
});

הפקודה dispose משחררת את המשאבים של ההקשר. כאשר יוצרים הקשר באופן מפורש, חשוב לדאוג לסגירתו גם אם בדיקה נכשלת. שימוש ב־try/finally מסייע להבטיח זאת.

16. שילוב בדיקות API ובדיקות UI

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

תהליך בדיקה משולב עשוי לכלול:

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

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

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

17. ארגון פרויקט בדיקות API

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

דוגמה למבנה תיקיות אפשרי:

playwright-api-tests/
├── tests/
│   ├── users.spec.js
│   ├── products.spec.js
│   ├── orders.spec.js
│   └── authentication.spec.js
├── helpers/
│   └── test-data.js
├── playwright.config.js
├── package.json
└── .gitignore

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

18. בדיקות API בתהליך CI/CD

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

תהליך עבודה טיפוסי יכול לכלול:

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

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

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

19. טעויות נפוצות בבדיקות API עם Playwright

בדיקת קוד סטטוס בלבד

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

שימוש בנתונים לא יציבים

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

הנחות לא מבוססות לגבי קודי תגובה

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

חשיפת סודות בקוד

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

בדיקות שתלויות בסדר הריצה

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

התעלמות מבדיקות שליליות

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

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

20. רשימת בדיקה לבדיקות API מקצועיות

לפני שמסיימים לכתוב בדיקת API, כדאי לוודא שכיסינו את הנושאים הרלוונטיים:

  • האם נבדק קוד הסטטוס הצפוי?
  • האם נבדקו שדות התגובה והטיפוסים שלהם?
  • האם נבדקו ערכים וכללים עסקיים חשובים?
  • האם נבדקו כותרות HTTP רלוונטיות?
  • האם נבדקו נתונים חסרים או לא תקינים?
  • האם נבדקו אימות והרשאות לפי הצורך?
  • האם הבדיקה יכולה לרוץ באופן עצמאי?
  • האם הנתונים בסביבת הבדיקה מנוהלים כראוי?
  • האם נמנעתם משמירת סודות בקוד?
  • האם הבדיקה מספקת הודעת כשל ברורה?
  • האם ניתן להריץ אותה באופן אמין בתהליך CI/CD?
  • האם היקף הבדיקה תואם את הסיכון ואת דרישות המוצר?

21. תוכנית לימוד מעשית למתחילים

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

שלב 1 – היכרות עם HTTP

למדו את ההבדל בין GET, POST, PUT, PATCH ו־DELETE, ואת המשמעות של קודי סטטוס, כותרות וגוף הבקשה.

שלב 2 – JavaScript בסיסי

תרגלו אובייקטים, מערכים, פונקציות, async/await, טיפול בשגיאות ועבודה עם JSON.

שלב 3 – בדיקות ראשונות ב־Playwright

כתבו בדיקות GET ו־POST, בדקו קודי סטטוס ואמתו את התוכן שמוחזר.

שלב 4 – תרחישים שליליים

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

שלב 5 – פרויקט מעשי

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

שלב 6 – שילוב בתהליך העבודה

הוסיפו דוחות, ניהול משתני סביבה והרצה אוטומטית לאחר שינויי קוד או פריסה לסביבת בדיקות.

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

22. שאלות נפוצות על בדיקות API עם Playwright

האם אפשר לבצע בדיקות API עם Playwright בלי לפתוח דפדפן?

כן. Playwright מאפשר לשלוח בקשות HTTP באמצעות APIRequestContext ללא הפעלת דפדפן. הדבר שימושי במיוחד כאשר רוצים לבדוק שירותים, נתונים, הרשאות ולוגיקה בצד השרת.

האם צריך לדעת JavaScript כדי לבצע בדיקות API עם Playwright?

כן, לפחות ברמה בסיסית. מומלץ להכיר משתנים, אובייקטים, פונקציות, async/await, JSON וכתיבת תנאי בדיקה. אפשר להשתמש גם ב־TypeScript.

האם Playwright מתאים רק לבדיקות UI?

לא. לצד אוטומציה של דפדפנים, Playwright תומך גם בבדיקות API, וניתן לשלב בין שתי הגישות באותו פרויקט.

מה ההבדל בין Playwright לבדיקת API באמצעות Postman?

Postman מציע סביבת עבודה נוחה לשליחה ידנית של בקשות, בדיקת תגובות וניהול אוספי API. Playwright מאפשר לכתוב בדיקות כחלק מקוד, להריץ אותן באמצעות מסגרת בדיקות ולשלב אותן בתהליך CI/CD. הבחירה תלויה בצורכי הצוות, במיומנויות הקיימות ובאופן שבו רוצים לנהל את הבדיקות.

האם Playwright מתאים לבדיקות REST API?

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

האם אפשר לבדוק API שדורש התחברות?

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

האם בדיקות API מחליפות בדיקות UI?

לא. בדיקות API ובדיקות UI משלימות זו את זו. בדיקות API בוחנות את התנהגות השירות, ואילו בדיקות UI בוחנות את האינטראקציה ואת הצגת המידע למשתמש.

סיכום: כיצד להתחיל לבצע בדיקות API עם Playwright?

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

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

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

"`

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

קורס לבדיקות תוכנה מדויק

לעבוד מהבית כבודק תוכנה עם FIVERR >> לחץ כאן

להשאיר תגובה