Functional Testing چیست؟
بررسی اینکه یک قابلیت کامل از دید کاربر طبق نیازمندی کسبوکار درست کار میکند، بدون توجه به جزئیات پیادهسازی داخلی.
چرا مهم است؟
Unit/Integration Test صحت فنی کد را نشان میدهند اما تضمین نمیکنند قابلیت نهایی همان چیزی است که کسبوکار میخواهد؛ Functional Test این شکاف را پر میکند.
تعریف
Functional Test یک قابلیت (Feature) را از دید ورودی/خروجی بیرونی بررسی میکند — بدون توجه به اینکه داخل کد چطور پیاده شده — و معمولاً روی نیازمندیهای کسبوکار نوشته میشود.
تفاوت با بقیه انواع تست
| نوع | سؤالی که جواب میدهد |
|---|---|
| Unit Test | آیا این متد درست کار میکند؟ |
| Integration Test | آیا این مؤلفهها با هم درست کار میکنند؟ |
| Functional Test | آیا این قابلیت طبق نیازمندی کار میکند؟ |
مثال (سناریو ثبت سفارش)
[Fact]
public async Task PlacingOrder_WithValidCart_ChargesCustomerAndReducesStock()
{
// Arrange: کاربر و سبد خرید معتبر
// Act: اجرای کامل فرایند ثبت سفارش (از API تا دیتابیس)
// Assert: سفارش ثبت شد، موجودی کم شد، پرداخت انجام شد
}
اشتباه رایج
❌ قاطیکردن Functional Test با Unit Test بدون جداسازی — باعث کندشدن اجرای مجموعه تستهای سریعی میشود که باید در هر Commit اجرا شوند.
منبع و مطالعه بیشتر
خلاصه
Functional Test میسنجد آیا یک قابلیت طبق نیازمندی کسبوکار درست کار میکند، نه اینکه کد داخلی چطور نوشته شده. باید از Unit Test سریع جدا نگه داشته شود تا چرخه بازخورد سریع بماند. مرجع کامل: Microsoft Learn.
