מבוא
באוטומציית בדיקות מודרנית, היכולת להריץ את אותה בדיקה עם מערכי נתונים שונים היא קריטית לכיסוי בדיקות מקיף. בדיקות מונעות נתונים מאפשרות לנו לאמת את התנהגות היישום שלנו על פני תרחישים שונים מבלי לשכפל קוד בדיקה. מאמר זה בוחן יישום בדיקות מונעות נתונים באמצעות Playwright TypeScript וקבצי Excel, ומציע פתרון מעשי לניהול נתוני בדיקה חיצוניים.
שיתפתי את הפתרון המוצג במאמר זה בפרויקט הדוגמה שלי Playwright Typescript example project.
הכלים הטכנולוגיים המשמשים למימוש הפתרון הם:
- שפת תכנות: TypeScript
- מנוע בדיקות: Playwright Test
- ספריית אינטגרציה עם Excel: xlsx
מדוע בדיקות מונעות נתונים חשובות?
בדיקות מונעות נתונים מפרידות את לוגיקת הבדיקה מנתוני הבדיקה, ומספקות מספר יתרונות מרכזיים:
- הפחתת שכפול קוד על ידי שימוש חוזר באותה לוגיקת בדיקה עם מערכי נתונים שונים
- תחזוקה קלה יותר מכיוון שניתן לשנות נתוני בדיקה מבלי לשנות קוד
- כיסוי בדיקות טוב יותר באמצעות תרחישי נתונים מרובים
- חברי צוות שאינם טכניים יכולים לתרום על ידי עדכון נתוני בדיקה ב-Excel
- הוספת תסריטי בדיקות ללא שינויי קוד
מימוש הפתרון
בואו נפרק את המימוש למרכיבי הליבה שלו:
1. מחלקת כלי עזר לקבצים
ראשית, אנו יוצרים מחלקת כלי עזר לטיפול בפעולות קבצי Excel:
import xlsx from "xlsx";
/**
* Utility class for file operations
*/
export class FileUtils {
/**
* Reads data from an Excel file and converts it to a JSON array.
* @param {string} filePath - The path to the Excel file.
* @returns {Promise<{ [key: string]: any }[]>} - A promise that resolves to an array of JSON objects representing the data in the Excel file.
*/
static async readExcelFile(
filePath: string
): Promise<{ [key: string]: any }[]> {
const file = xlsx.readFile(filePath);
const data: any[] = [];
const sheets = file.SheetNames;
for (let i = 0; i < sheets.length; i++) {
const sheetData = xlsx.utils.sheet_to_json(file.Sheets[sheets[i]]);
data.push(...sheetData);
}
return data;
}
}
מחלקה זו:
- משתמשת בספריית
xlsx
לקריאת קבצי Excel - ממירה נתוני Excel לפורמט JSON
- מטפלת במספר גיליונות בקובץ יחיד
- מחזירה Promise עם הנתונים המנותחים
2. הרצת תסריטי בדיקה
כך אנו מריצים תסריטי בדיקה מונעי הנתונים:
import { Constants } from "../utilities/constants";
import { FileUtils } from "../utilities/fileUtils";
import { expect, test } from "@playwright/test";
import path from "path";
const data = await FileUtils.readExcelFile(
path.join(Constants.DATA_PATH, "data.xls")
);
data.forEach(record => {
test(`Login test for ${record.description}`, async ({ page }) => {
await page.goto("https://www.saucedemo.com/");
if (record.user) {
await page.fill('input[data-test="username"]', record.user);
}
if (record.password) {
await page.fill('input[data-test="password"]', record.password);
}
await page.click('input[data-test="login-button"]');
const errorMessage = page.locator('[data-test="error"]');
await expect(errorMessage).toHaveText(record.error);
});
});
בואו נפרק מה קורה כאן:
טעינת נתונים:
- אנו קוראים את קובץ ה-Excel באמצעות מחלקת FileUtils שלנו
- נתיב הקובץ נבנה באמצעות
path.join
לתאימות בין פלטפורמות
יצירת בדיקה
- לולאת
forEach
יוצרת בדיקה נפרדת עבור כל רשומת נתונים, ומאפשרת כיסוי בדיקות מקיף על פני תרחישים מרובים. - שמות הבדיקות הדינמיים כוללים את התיאור מהנתונים, מה שמקל על זיהוי והבנה של כל מקרה בדיקה.
- הפתרון תומך במילוי מותנה של שדות שם המשתמש והסיסמה - הוא יכול לטפל בערכים חוקיים וגם בערכי
null
עבור שדות אלה בהתבסס על הנתונים המסופקים בקובץ ה-Excel. - שלב האימות משווה את הודעות השגיאה בפועל מול הנתונים הצפויים, ומבטיח שהיישום מתנהג כמתוכנן על פני תרחישי הבדיקה השונים.
3. מבנה נתוני Excel
קובץ ה-Excel שלנו data.xls
צריך לכלול עמודות התואמות לדרישות הבדיקה:
- description: תיאור מקרה בדיקה
- user: שם משתמש לבדיקה
- password: סיסמה לבדיקה
- error: הודעת שגיאה צפויה
4. גילוי בדיקות במצב ממשק משתמש של Playwright
אחת התכונות הנהדרות של Playwright היא מצב ממשק המשתמש המובנה שלו, המאפשר לנו לזהות ולהריץ תסריטי בדיקות באופן ויזואלי. במצב ממשק המשתמש, Playwright יקצה אוטומטית שמות תיאוריים לבדיקות מונעות הנתונים בהתבסס על המידע בקובץ ה-Excel. זה מקל על צוות הבדיקות להבין ולהריץ במהירות את תסריטי הבדיקות השונים, בנפרד או יחדיו כסוויטת בדיקות. מנוע הבדיקות של Playwright מספק ממשק נוח לניהול והרצת הבדיקות האוטומטיות, ומשפר עוד יותר את זרימת העבודה של בדיקות מונעות נתונים.
מסקנה
בדיקות מונעות נתונים עם Playwright TypeScript ו-Excel מספקות פתרון חזק לניהול נתוני בדיקה בנפרד מקוד הבדיקה. גישה זו הופכת את הבדיקות ליותר ניתנות לתחזוקה, ניתנות להרחבה ונגישות לחברי צוות שאינם טכניים.
שילוב יכולות הבדיקה החזקות של Playwright עם הממשק המוכר של Excel יוצר זרימת עבודה יעילה לביצוע כיסוי בדיקות נרחב. על ידי הפרדת נתוני הבדיקה מלוגיקת הבדיקה, אנו יכולים להוסיף בקלות מקרי בדיקה חדשים מבלי לשנות קוד, מה שהופך את סוויטת הבדיקות שלנו לגמישה וניתנת לתחזוקה יותר.
בדיקות מהנות!