Functional Requirement یا نیازمندی فانکشنال مشخص می‌کند نرم‌افزار باید چه قابلیت و رفتاری ارائه دهد. این نیازمندی معمولاً با سناریوی کاربر، ورودی، خروجی و شرایط پذیرش بیان می‌شود. نمونه آن ثبت سفارش، اعمال کد تخفیف، جست‌وجوی محصول یا امکان لغو مرسوله است.

مثال از یک فروشگاه اینترنتی

شناسهنیازمندیشرط پذیرش
FR-01مشتری بتواند محصول موجود را به سبد اضافه کندموجودی و تعداد سبد پس از عملیات صحیح باشد
FR-02مشتری بتواند کد تخفیف معتبر وارد کندتخفیف فقط برای سفارش واجد شرایط اعمال شود
FR-03سیستم پس از پرداخت موفق سفارش را تایید کندوضعیت سفارش و شماره پرداخت ثبت شوند
FR-04کاربر بتواند سفارش خود را پیگیری کندفقط سفارش‌های خود کاربر قابل مشاهده باشند

چه چیزی نیازمندی فانکشنال نیست؟

«صفحه سفارش باید در کمتر از ۳۰۰ میلی‌ثانیه پاسخ بدهد» یک نیازمندی نان‌فانکشنال یا معیار کیفیت است. «مشتری باید بتواند آدرس ارسال را ویرایش کند» قابلیت سیستم است و فانکشنال محسوب می‌شود. امنیت و دسترس‌پذیری می‌توانند شرط‌های کیفی فراگیر باشند که روی اجرای همه قابلیت‌ها اثر می‌گذارند.

نوشتن یک شرط پذیرش قابل تست

Feature: Apply discount code
  Scenario: Valid code on an eligible order
    Given a cart with an eligible subtotal
    When the customer applies code "WELCOME10"
    Then the payable total is reduced by 10 percent
    And the discount is recorded on the order

برای اینکه نیازمندی قابل توسعه و تست باشد، باید محدوده آن دقیق مشخص شود. اصطلاح‌هایی مانند «خوب»، «سریع» و «کاربرپسند» بدون معیار پذیرش قابل اندازه‌گیری نیستند.

اصطلاحات فنی: نیازمندی نان‌فانکشنال، سیستم دیزاین، یونیت تست، رابط برنامه‌نویسی کاربردی.