# راهنمای تست سیستم (Software Testing) تست نرم‌افزار برای اطمینان از کیفیت (QA) کدهای نوشته شده، عدم وجود باگ و تضمین کارکرد صحیح سامانه قبل از انتشار بسیار حیاتی است. در این سامانه استراتژی‌های تست زیر به کار گرفته می‌شود. ## ۱. تست‌های واحد در Backend (Unit Testing) از آنجا که سیستم بک‌اند ما با `NestJS` نوشته شده است، فریم‌ورک استاندارد تست آن یعنی `Jest` از پیش بر روی سیستم تنظیم شده است. - **هدف:** در این لایه، تک‌تک Service ها و ماژول‌ها بدون نیاز به راه‌اندازی واقعی دیتابیس تست می‌شوند تا مطمئن شویم منطق محاسبه‌ها (مثل محاسبه تخفیف‌ها یا اتصال به درگاه) درست است. - **نحوه نوشتن تست:** برای هر سرویس یک فایل در کنار آن با پسوند `.spec.ts` ایجاد می‌شود (مثلاً `product.service.spec.ts`). - **اجرای تست‌ها:** برای اجرای تست‌های واحد بک‌اند دستور زیر را اجرا کنید: ```bash cd backend npm run test ``` ## ۲. تست‌های End-to-End در Backend (E2E Testing) تست e2e کل چرخه را از درخواست کاربر تا ذخیره در دیتابیس بررسی می‌کند. - **نحوه نوشتن تست:** تست‌های e2e در پوشه `backend/test/` قرار دارند و معمولاً به صورت ریکوئست‌های شبیه‌سازی شده HTTP از طریق ابزار `Supertest` ایجاد می‌شوند. - **اجرای تست‌ها:** ```bash 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) در سورس پیج صحیح است؟