End-to-End (E2E) Testing چیست؟
تست کل سیستم از ابتدا تا انتها — از رابط کاربری واقعی تا دیتابیس واقعی — دقیقاً همان مسیری که یک کاربر واقعی طی میکند.
چرا مهم است؟
تنها E2E Test میتواند تضمین کند که همه لایهها (Frontend، API، دیتابیس، سرویسهای جانبی) واقعاً با هم و در محیطی شبیه Production درست کار میکنند.
تعریف
E2E Test کل جریان یک سناریوی کاربری را از رابط کاربری (یا نقطه ورود بیرونی) تا پایگاهداده و سرویسهای واقعی طی میکند؛ بالاترین سطح هرم تست و کندترین/شکنندهترین نوع تست.
مثال (Playwright)
[Test]
public async Task User_CanLogin_AndSeeDashboard()
{
await Page.GotoAsync("https://app.example.com/login");
await Page.FillAsync("#email", "user@example.com");
await Page.FillAsync("#password", "P@ssw0rd");
await Page.ClickAsync("button[type=submit]");
await Expect(Page.Locator("h1")).ToHaveTextAsync("داشبورد");
}
هرم تست (Test Pyramid)
بالا: E2E (کمتعداد، کند، پرهزینه نگهداری) → وسط: Integration (متوسط) → پایین: Unit (زیاد، سریع، ارزان).
اشتباه رایج
❌ تلاش برای پوششدادن همه سناریوها با E2E Test بهجای Unit/Integration — Test Suite را بهشدت کند و شکننده (Flaky) میکند.
منبع و مطالعه بیشتر
خلاصه
E2E Test کل مسیر واقعی کاربر را از UI تا دیتابیس تست میکند و بالاترین سطح هرم تست است. چون کند و شکننده است، باید کمتعداد و فقط برای سناریوهای حیاتی نوشته شود. مرجع کامل: مستندات Playwright.
