45 lines
4.1 KiB
Markdown
45 lines
4.1 KiB
Markdown
# راهنمای تست سیستم (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) در سورس پیج صحیح است؟
|