canina/docs/06-testing.md

4.1 KiB
Raw Permalink Blame History

راهنمای تست سیستم (Software Testing)

تست نرم‌افزار برای اطمینان از کیفیت (QA) کدهای نوشته شده، عدم وجود باگ و تضمین کارکرد صحیح سامانه قبل از انتشار بسیار حیاتی است. در این سامانه استراتژی‌های تست زیر به کار گرفته می‌شود.

۱. تست‌های واحد در Backend (Unit Testing)

از آنجا که سیستم بک‌اند ما با NestJS نوشته شده است، فریم‌ورک استاندارد تست آن یعنی Jest از پیش بر روی سیستم تنظیم شده است.

  • هدف: در این لایه، تک‌تک Service ها و ماژول‌ها بدون نیاز به راه‌اندازی واقعی دیتابیس تست می‌شوند تا مطمئن شویم منطق محاسبه‌ها (مثل محاسبه تخفیف‌ها یا اتصال به درگاه) درست است.
  • نحوه نوشتن تست: برای هر سرویس یک فایل در کنار آن با پسوند .spec.ts ایجاد می‌شود (مثلاً product.service.spec.ts).
  • اجرای تست‌ها: برای اجرای تست‌های واحد بک‌اند دستور زیر را اجرا کنید:
    cd backend
    npm run test
    

۲. تست‌های End-to-End در Backend (E2E Testing)

تست e2e کل چرخه را از درخواست کاربر تا ذخیره در دیتابیس بررسی می‌کند.

  • نحوه نوشتن تست: تست‌های e2e در پوشه backend/test/ قرار دارند و معمولاً به صورت ریکوئست‌های شبیه‌سازی شده HTTP از طریق ابزار Supertest ایجاد می‌شوند.
  • اجرای تست‌ها:
    cd backend
    npm run test:e2e
    

۳. تست‌های UI در Frontend (Component Testing)

برای اینکه مطمئن شویم کامپوننت‌های رابط کاربری به درستی رندر می‌شوند و با کلیک کردن به استورها واکنش نشان می‌دهند، از سیستم تستی مثل Jest و React Testing Library استفاده می‌کنیم. (توجه: در صورت پیاده‌سازی این ابزار در سیستم).

  • مواردی که باید در فرانت‌اند تست شوند:
    • فرآیند افزودن محصول به سبد خرید (cartStore).
    • رندرینگ صحیح اطلاعات دریافتی از API.
    • اجرای صحیح و عدم بروز خطا در فرم‌های لاگین و اعتبارسنجی‌ها.

۴. تست‌های یکپارچگی سیستمی در Frontend (E2E Frontend - Playwright / Cypress)

برای شبیه‌سازی رفتار واقعی کاربر (کارهایی مثل باز کردن صفحه، کلیک روی یک دکمه و پرداخت سبد خرید) می‌توان از ابزارهایی مثل Cypress یا Playwright استفاده کرد. این ابزارها یک مرورگر واقعی را باز کرده و مراحل را طی می‌کنند. این نوع تست قبل از فرآیند Deployment روی سیستم اعمال می‌شود تا از اینکه یک بروزرسانی کل سیستم ثبت سفارش را از کار انداخته جلوگیری شود.

۵. چک لیست تست‌های دستی (Manual QA Checklist)

هیچ کدی بدون پاس کردن چک لیست زیر نباید روی سرور Production پابلیش شود:

  1. قابلیت ثبت‌نام کاربر جدید و لاگین صحیح تست شده است؟
  2. آیا محصول می‌تواند به سبد خرید اضافه شده و فرآیند Checkout بدون خطا نمایش داده شود؟
  3. در موبایل (Responsive) آیا هدر، دکمه‌های ناوبری و گرید محصولات خوانا و قابل دسترس هستند؟
  4. آیا درخواستی به بک‌اند وجود دارد که باعث بازگشت ارور 500 سرور شود؟
  5. آیا عملکرد سئو (تولید تگ‌های Title و JSON-LD) در سورس پیج صحیح است؟