איך אני יכול ליישם גישה זו?
יישום גישת data-testid
בתהליך הפיתוח שלך בצד ה-Front-End כולל כמה שלבים, מהקמת הפרויקט ועד לתהליכי עבודה מומלצים לשימוש יעיל בתכונה זו. להלן מדריך שלב אחר שלב ליישום הגישה.
אמץ גישה של בדיקות תחילה
תכנן עבור בדיקות
לפני תחילת הקידוד, ודא כי הבדיקות הן שיקול מרכזי בעיצוב רכיבי ה-UI שלך. דון עם הצוות שלך כיצד ייבדקו האלמנטים ואיפה יוחל data-testid
.
שלב את צוות הבדיקות מוקדם
ערב את מהנדסי ה-QA מוקדם בתהליך הפיתוח כדי לזהות אילו אלמנטים יזדקקו לתכונת data-testid
. שיתוף פעולה זה מבטיח כי הרכיבים שלך מעוצבים עם מחשבה על בדיקות.
הוסף תכונות data-testid לרכיבים שלך
זהה אלמנטים חשובים
קבע אילו אלמנטים ב-UI שלך הם קריטיים לבדיקה. אלו יכולים להיות כפתורים, שדות קלט בטפסים, קישורים וכל תוכן דינמי שהבדיקות שלך יתקשרו איתו.
החל את data-testid
הוסף את תכונת data-testid
לאלמנטים חשובים אלו. לדוגמה:
<button data-testid="submit-button">Submit</button>
<input data-testid="username-input" type="text" />
היה סלקטיבי
הימנע מהוספת data-testid
לכל אלמנט. התרכז באלמנטים הרלוונטיים ישירות למקרי הבדיקה שלך. שימוש יתר ב-data-testid
יכול לעמוס על קוד ה-HTML ולהקשות על התחזוקה.
כתוב סקריפטים לבדיקה באמצעות data-testid
עדכון בדיקות קיימות
אם יש לך ערך בדיקות, רפאקטור את הבדיקות שלך כדי להשתמש בסילקטורים data-testid
במקרים מתאימים. זה ישפר את יציבות הבדיקות שלך. דוגמה עם Playwright ו Cypress:
// בדיקה Playwright בשימוש ב data-testid
await page.click('[data-testid="submit-button"]');
await page.fill('[data-testid="username-input"]', 'testuser');
// בדיקה Cypress בשימוש ב data-testid
cy.get('[data-testid="submit-button"]').click();
cy.get('[data-testid="username-input"]').type('testuser');
שמירת קריאת בדיקות
השתמש בערכים משמעותיים ומסכמים ל data-testid
. זה יגביר קריאת הבדיקות שלך ויהפך אותה קל יותר להבין.
שילוב data-testid בתהליך הפיתוח שלך
סטנדרטיזציה בשימוש
יצירה סידוריה או נומניות ל data-testid
בפרוייקט שלך. זה יווצר סימפתרמיה ברשת הקוד ויהפך את העבודה של כל חבר צוות קל יותר לעמוד.
בדיקות קוד
במהלך בדיקות הקוד, בדוק שערכים data-testid
מושמים באופן מתאים וסימפתרמי. ודא שהם משמעותיים ונחוצים לבדיקות.
מטפלים המצעדים לשימוש ב data-testid
- השתמש בשמות מאורגנים עם מקום: אוהב שמות מאורגנים או סייג_קאיס עבור ערכים
data-testid
(לדוגמה,submit-button
,username_input
) כדי לשמור על השמות סימפתרמיים וקריאים. - אין בשימוש במידע דינמי: אל תכניס מידע דינמי כמו שעות זמן
- איזון כיסוי הבדיקות: השתמש ב-
data-testid
עבור אלמנטים קריטיים בממשק המשתמש שצריך לבדוק, אך אל תסתמך עליו יתר על המידה. שלב אותו עם בוררי בדיקה אחרים במידת הצורך כדי לשמור על הבדיקות שלך מקיפות.
הערך את ההשפעה על פיתוח האוטומציה שלך
- יציבות באוטומציה: עם
data-testid
המספק בוררים יציבים, בדיקות האוטומציה שלך יהפכו לאמינות יותר וקלות יותר לתחזוקה, מה שיפחית בדיקות לא יציבות. - חיסכון בזמן: ההפחתה בזמן תחזוקת הבדיקות מאפשרת לצוות הבטחת האיכות שלך להתמקד בכתיבת בדיקות חדשות ובשיפור כיסוי הבדיקות.
- שיתוף פעולה משופר: מפתחים ומהנדסי הבטחת איכות יכולים לעבוד יחד בצורה יעילה יותר, שכן השימוש ב-
data-testid
הוא פשוט ומבהיר את הכוונה מאחורי כל בדיקה.
אוטומציה ותחזוקת הבדיקות שלך
- אינטגרציה עם CI/CD: שלב את מערך הבדיקות שלך בצנרת האינטגרציה/הפצה המתמשכת (CI/CD). זה מאפשר לבדיקות האוטומטיות לרוץ עם כל עדכון קוד, ומבטיח שהאפליקציה שלך תישאר יציבה.
- ניטור ועדכון: סקור באופן קבוע את הבדיקות והשימוש ב-
data-testid
ככל שהאפליקציה מתפתחת. עדכן או הוסף תכונותdata-testid
חדשות ככל שפונקציות חדשות מפותחות.
חינוך הצוות
- הדרכה: ספק הדרכות או תיעוד לצוות שלך על איך להשתמש נכון ב-
data-testid
גם בפיתוח וגם בבדיקות. - שיפור מתמשך: תעודדו את הצוות שלכם לתת משוב על שימוש ב
data-testid
ותשפרו את הגישה שלכם בהתבסס על המשוב שלהם.
איך אני יכול ליישם את הגישה הזו בסגנונות שונים?
יישום הגישה של data-testid
בסגנונות ניסוי שונים כמו Selenium, Playwright וCypress עולה בהבנה של איך כל כלי מתנגש עם ה-DOM ואיך ניתן להשתמש במאפיין data-testid
כדי ליצור סקריפטים יציבים ואמינים. הנה מדריך מפורט על איך ליישם את הגישה הזו בשימוש בכל אחד מהכלים הללו.
1. Selenium
Selenium נגשת לאלמנטים רשת באמצעות מוצאים כמו ID, קלאס, שם, XPath ועוד. באמצעות data-testid
, ניתן ליצור מוצאים יותר יציבים שלא תלויים במבנה החזותי של העמודה. נניח שיש לכם טופס התחברות עם שדה שם משתמש, שדה סיסמה וכפתור שליחה.
- קוד HTML:
<form>
<input data-testid="username-input" type="text" name="username" />
<input data-testid="password-input" type="password" name="password" />
<button data-testid="submit-button" type="submit">Login</button>
</form>
- תרשימת ניסוי Selenium:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class LoginTest {
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("http://yourapp.com/login");
// מוצאת אלמנטים באמצעות data-testid
WebElement usernameInput = driver.findElement(By.cssSelector("[data-testid='username-input']"));
WebElement passwordInput = driver.findElement(By.cssSelector("[data-testid='password-input']"));
WebElement submitButton = driver.findElement(By.cssSelector("[data-testid='submit-button']"));
// מתנגשת עם האלמנטים
usernameInput.sendKeys("testuser");
passwordInput.sendKeys("password");
submitButton.click();
// מבצעת פעולות או הצהרות נוספות
driver.quit();
}
}
יתרונות ב-Selenium
- יציבות: שימוש ב
data-testid
ב-Selenium מבטיח שהמוצאים שלך פחות נוצרים להשבר בשל שינויים ב-UI. - תחזוקה: קל יותר לעדכן או לשפר ניסויים מאחר ו
data-testid
פחות נועד לשנות מאשר קלאסים או ID.
2. Playwright
Playwright מספק יכולות חיסוניות חזקות עבור יישומים רשתיים. הוא תומך בסלקטורים כמו CSS, טקסט, XPath, ו data-testid
>
דוגמה
בשימוש באותה טבלת הכניסה לדוגמה:
- מעבדת בדיקות Playwright (טYPEScript):
import { chromium, Browser, Page } from 'playwright';
(async () => {
const browser: Browser = await chromium.launch();
const page: Page = await browser.newPage();
await page.goto('http://yourapp.com/login');
// משמשים data-testid כדי למצוא אלמנטים
await page.fill('[data-testid="username-input"]', 'testuser');
await page.fill('[data-testid="password-input"]', 'password');
await page.click('[data-testid="submit-button"]');
// ביצוע פעולות נוספות או הנחות
await browser.close();
})();
יתרונות בPlaywright
- יעילות: התמיכה של Playwright ב
data-testid
עוזרת לעיתים רבות בכתיבת תסריטים קצרים וברורים. - עמידות: סלקטורים
data-testid
עוזרים לתסריטים להיות יותר עמידים לשינויים במבנה DOM.
3. Cypress
Cypress הוא רשת בדיקות סוף-לסוף בJavaScript שמספק חוויה פיצולנית טובה למפתחים. הוא גם תומך בתווית data-testid
עבור מציאת אלמנטים.
דוגמה
בשימוש באותה טבלת הכניסה:
- מעבדת בדיקות Cypress (JavaScript):
describe('Login Test', () => {
it('should login with valid credentials', () => {
cy.visit('http://yourapp.com/login');
// משמשים data-testid כדי למצוא אלמנטים
cy.get('[data-testid="username-input"]').type('testuser');
cy.get('[data-testid="password-input"]').type('password');
cy.get('[data-testid="submit-button"]').click();
// ביצוע פעולות נוספות או הנחות
cy.url().should('include', '/dashboard');
});
});
יתרונות בCypress
- חוויה מפתח: הסינטציקה של Cypress במעבר ל
data-testid
מוצאת תסריטים קריאים וקלים לשמירה. - יציבות בדיקות: סלקטורים
data-testid
עו
מערכת המיטבים הכללית ליישום data-testid
- שמות משמעותיים: השתמש בשמות המופיעים בתוויות data-testid שמשמעותיים. לדוגמה, data-testid="submit-button" הוא יותר משמעותי מאשר data-testid="btn1".
- סימטריה: שמר על סימטריה באופן בו אתה מיישם data-testid במערכת המופיעה שלך. זה עוזר ליצירת תסמינים מאוחדים.
- שימוש מסויים: יש ליישם data-testid על רכיבים קריטיים לבדיקה. אל תשתמש בהם ביותר מדי, כי זה יכול להפוך את הHTML למאוכלס.
- היממה משתנה: אל תכניס את הערכים הדינמיים כמו זמנים או ספרי ההישגים הייחודיים בתוויות data-testid, כי הם יכולים לגרום לכשלון בבדיקות אם המידע ישתנה.
סיכום
היציאת הגישה data-testid לתהליך הפיתוח הקדמי שלך מעניקה יתרונות משמעותיים בתוך מערכות בדיקה כמו Selenium, Playwright ו-Cypress. היא מגבירה את היציבות, הקריאות והשמרנות של התסמינים שלך, ומובילה לבדיקות יותר אמינות ולתהליך QA יעיל יותר. על-ידי השימוש בדוגמאות והמיטבים המסוימים המצורףים, אתה יכול בקלות להשתל את data-testid בעולם העבודה שלך ולשפר את איכות המוצר שלך כולו.
הצעים
Source:
https://dzone.com/articles/how-data-testid-can-revolutionize-ui-testing