
تست واحد رفتار یک بخش کوچک، تست یکپارچه همکاری چند بخش و تست سرتاسری نتیجهٔ یک مسیر کامل را بررسی میکند. نوع تست را بر اساس خطایی انتخاب کنید که میخواهید کشف کنید. برای فروشگاه، محاسبهٔ تخفیف، ذخیرهٔ سفارش و خرید از مرورگر سه رفتار متفاوتاند.
| رفتار مورد انتظار | آزمون مناسب | نمونهٔ سناریو |
|---|---|---|
| محاسبه تخفیف | واحد | سفارش زیر حداقل خرید تخفیف نمیگیرد |
| ذخیره سفارش با اقلام | یکپارچه | خطای یکی از اقلام کل تراکنش را برمیگرداند |
| تکمیل خرید از مرورگر | سرتاسری | کاربر سبد را ثبت میکند و شماره سفارش میبیند |
مثال واحد با ورودی مرزی
import assert from "node:assert/strict";
import test from "node:test";
function qualifiesForDiscount(total) {
return total >= 1_000_000;
}
test("discount starts at the minimum order total", () => {
assert.equal(qualifiesForDiscount(999_999), false);
assert.equal(qualifiesForDiscount(1_000_000), true);
});
عدد نزدیک به مرز معمولاً رفتار شرط را بهتر از دو عدد دور نشان میدهد. نام تست باید نتیجهای را بیان کند که برای کسبوکار مهم است. اگر روش محاسبه تغییر کرد و نتیجه یکسان بود، تست همچنان باید معتبر بماند.
تست یکپارچه چه زمانی ارزش دارد؟
وقتی خطا ممکن است از قرارداد میان دو بخش به وجود بیاید. برای نمونه، آزمون ثبت سفارش را با پایگاه دادهٔ آزمایشی اجرا کنید و بهجای شمارش فراخوانی متدهای داخلی، وضعیت واقعی جدول سفارش و اقلام را بررسی کنید. دادهٔ شروع را در خود تست یا نمونهٔ ثابت بسازید تا تست به نتیجهٔ اجرای قبلی وابسته نباشد. برای API، علاوه بر ثبت موفق، رفتار دسترسی حساب دوم را هم بررسی کنید.
تست سرتاسری را روی مسیرهای ضروری متمرکز کنید
ورود، ثبت سفارش و دریافت رسید نمونههایی از مسیرهای مناسباند. در این آزمونها روی متن و رفتار قابل مشاهده تکیه کنید. انتظار برای ظاهر شدن پیام تأیید از مکث ثابت دقیقتر است. وقتی یک خطا در محیط واقعی پیدا میشود، ابتدا کوچکترین آزمونی را بنویسید که همان خطا را بازتولید میکند. این کار هم عیبیابی را سریعتر میکند و هم خطر تکرار خطا را پایین میآورد.
مدیریت خطای درخواست در فرانتاند · مستندات اجراکنندهٔ تست Node.js