在軟體開發中,編寫清晰且可維護的測試與編寫程式碼本身一樣重要。在這種情況下,兩個經常討論的原則是 WET(將所有內容寫兩次)和 DRY(不要重複自己)。
這些原則有助於指導我們如何建立測試,平衡可讀性、可維護性和效率。讓我們深入了解它們的含義、探索範例並了解何時應用每種方法。
?什麼是 WET 測試?
WET 測試是一種允許重複測試案例的風格。雖然通常被認為不太理想,但這種方法可以優先考慮簡單性和清晰度 - 特別是對於簡單的測試。
濕測試的優點:
WET 檢定範例:
describe('Login Tests - WET', () => { test('should allow user to login with valid credentials', async () => { await page.goto('https://example.com/login'); await page.fill('input[name="username"]', 'user1'); await page.fill('input[name="password"]', 'password1'); await page.click('button[type="submit"]'); await expect(page).toHaveURL('https://example.com/dashboard'); }); test('should show an error with invalid credentials', async () => { await page.goto('https://example.com/login'); await page.fill('input[name="username"]', 'user1'); await page.fill('input[name="password"]', 'wrongpassword'); await page.click('button[type="submit"]'); await expect(page).toHaveText('Invalid username or password'); }); });
在此範例中,登入步驟在測試中重複。
✨ 什麼是 DRY 測驗?
DRY 測試的重點是透過將共享邏輯抽象化為可重複使用的函數或設定來最大限度地減少冗餘。這種方法在複雜或大型專案中表現出色。
DRY 測驗的優點:
乾燥測試範例:
describe('Login Tests - DRY', () => { const login = async (username, password) => { await page.goto('https://example.com/login'); await page.fill('input[name="username"]', username); await page.fill('input[name="password"]', password); await page.click('button[type="submit"]'); }; test('should allow user to login with valid credentials', async () => { await login('user1', 'password1'); await expect(page).toHaveURL('https://example.com/dashboard'); }); test('should show an error with invalid credentials', async () => { await login('user1', 'wrongpassword'); await expect(page).toHaveText('Invalid username or password'); }); });
這裡,登入功能集中了共享步驟,使測試更乾淨,更易於維護。
?何時使用濕式與乾法?
根據個人經驗,選擇濕法還是乾法取決於您專案的複雜程度和要求。
在下列情況下使用濕式:
在下列情況下使用 DRY:
?要點
雖然 DRY 原則通常是首選,但 WET 測試也有一席之地。努力實現增強清晰度和可維護性的平衡。對於較小的專案或簡單的場景,WET 方法可能就足夠了。然而,在更大、更複雜的測試套件中,採用 DRY 可以顯著改善您的工作流程。
最終的目標是編寫清晰、可維護且高效的測試——無論採用什麼方法都可以!
以上是濕法與乾法:您應該了解的測試原則的詳細內容。更多資訊請關注PHP中文網其他相關文章!