CodeShot
End-to-End Testing1 دقیقه مطالعه

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.

این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←