صابر طباطبائی یزدی
صابر طباطبائی یزدی
خواندن ۹ دقیقه·۱۰ ساعت پیش

مسیر آموزشی سایپرس (Cypress) - 50 درس پیشنهادی


بخش 1: مقدمه و نصب (Basics and Setup)

  1. معرفی Cypress و کاربردهای آنهدف: آشنایی با سایپرس و موارد استفاده آن.
  2. نصب Cypress روی پروژههدف: نصب سایپرس روی یک پروژه ساده و بررسی ساختار آن.
  3. مرور ابزار و محیط کاربری Cypressهدف: آشنایی با محیط کاربری سایپرس.
  4. ایجاد اولین تست: باز کردن یک وب‌سایتهدف: نوشتن و اجرای اولین تست ساده.
  5. ساختار تست‌ها در Cypressهدف: بررسی فایل‌های تست و نحوه مدیریت آن‌ها.

بخش 2: تست‌های پایه (Basic Testing)

  1. کار با دستورات (Commands) در Cypressهدف: یادگیری دستورات پایه‌ای مانند cy.visit() و cy.get().
  2. آشنایی با Assertionsهدف: استفاده از Assertions برای تأیید نتایج.
  3. تست تعاملات ساده (کلیک، تایپ)هدف: شبیه‌سازی تعاملات کاربر.
  4. تست فرم‌ها (ورودی‌ها و ارسال داده)هدف: بررسی عملکرد فرم‌ها.
  5. تست لینک‌ها و انتقال بین صفحاتهدف: بررسی عملکرد لینک‌ها.

بخش 3: تست پیشرفته عناصر DOM (Advanced DOM Testing)

  1. انتخاب عناصر پیچیدههدف: استفاده از CSS Selector‌ها و XPath.
  2. کار با لیست‌ها و جداولهدف: تست عناصر تکرارشونده.
  3. آزمایش Drag & Drop و سایر تعاملات پیشرفتههدف: شبیه‌سازی تعاملات پیچیده کاربر.
  4. تست حالت‌های مختلف عناصر (Hover، Focus)هدف: بررسی واکنش‌های عناصر به حالت‌های مختلف.
  5. کار با Shadow DOM در Cypressهدف: تست عناصر تحت Shadow DOM.

بخش 4: مدیریت داده‌ها و API‌ها (Data Handling & API Testing)

  1. ایجاد و استفاده از Fixturesهدف: مدیریت داده‌ها برای تست‌ها.
  2. Mock کردن درخواست‌های APIهدف: تست رفتار برنامه با داده‌های شبیه‌سازی شده.
  3. تست درخواست‌های GET و POSTهدف: بررسی API‌های پروژه.
  4. بررسی Performance APIهدف: بررسی سرعت پاسخ API.
  5. ذخیره و بازیابی داده‌ها در Local Storageهدف: مدیریت داده‌ها در مرورگر.

بخش 5: مدیریت پروژه‌ها (Project Management)

  1. مدیریت چندین فایل تستهدف: سازماندهی تست‌ها در پروژه‌های بزرگ.
  2. ایجاد فایل‌های Helper و Custom Commandsهدف: کاهش تکرار کد.
  3. استفاده از Environment Variablesهدف: مدیریت تنظیمات تست.
  4. تنظیم Configurations سفارشیهدف: مدیریت پیکربندی سایپرس.
  5. آزمایش در مرورگرهای مختلفهدف: بررسی سازگاری با مرورگرهای مختلف.

بخش 6: مفاهیم پیشرفته و Performance Testing

  1. آشنایی با Cypress Pluginsهدف: افزودن قابلیت‌های جدید به سایپرس.
  2. تست زمان‌بندی شده (Delayed Testing)هدف: مدیریت تست‌هایی که زمان بیشتری می‌برند.
  3. بررسی سرعت بارگذاری صفحاتهدف: تحلیل عملکرد صفحات.
  4. شبیه‌سازی سرعت پایین شبکههدف: تست در شرایط مختلف شبکه.
  5. کار با فایل‌ها (آپلود و دانلود)هدف: بررسی آپلود و دانلود فایل‌ها.

بخش 7: Continuous Integration (CI) و اتوماسیون

  1. تنظیم Cypress در CI/CDهدف: اجرای خودکار تست‌ها در CI/CD.
  2. ایجاد گزارش‌های تصویری (Screenshots و Videos)هدف: بررسی مشکلات با استفاده از گزارش‌ها.
  3. مدیریت خطاها و Retry کردن تست‌هاهدف: بهبود پایداری تست‌ها.
  4. اجرای تست‌ها با Dockerهدف: تنظیم سایپرس در محیط‌های ایزوله.
  5. تنظیم گزارش‌دهی با ابزارهای جانبی (Allure و غیره)هدف: ایجاد گزارش‌های حرفه‌ای.

بخش 8: توسعه و بهبود تست‌ها

  1. نوشتن تست‌های قابل نگهداریهدف: بهبود کیفیت کد تست‌ها.
  2. مدیریت تست‌های ناکارآمد (Flaky Tests)هدف: رفع تست‌های ناپایدار.
  3. ایجاد تست‌های E2E کاملهدف: بررسی کامل جریان کاربری.
  4. ایجاد تست‌های ترکیبی (Integration و Unit Tests)هدف: تست چند سطحی.
  5. کار با داده‌های داینامیک و تست سناریوهای مختلفهدف: تست شرایط مختلف.

بخش 9: امنیت و دسترس‌پذیری (Security & Accessibility)

  1. تست امنیتی فرم‌هاهدف: بررسی حملات XSS و CSRF.
  2. بررسی دسترسی‌پذیری (Accessibility)هدف: تست قابلیت دسترسی صفحات.
  3. تست احراز هویت (Login و Token)هدف: بررسی فرآیندهای ورود و خروج.
  4. کار با Cookies در Cypressهدف: مدیریت کوکی‌ها در تست.
  5. بررسی Headerهای امنیتیهدف: تحلیل رفتار مرورگر در مقابل امنیت.

بخش 10: پروژه عملی و ارزیابی

  1. ایجاد پروژه عملی تست یک وب‌سایت کاملهدف: تمرین همه مفاهیم یاد گرفته شده.
  2. مدیریت بازخوردها و بهبود تست‌هاهدف: بهبود تست‌ها با توجه به بازخوردها.
  3. تست یک اپلیکیشن SPAهدف: بررسی عملکرد سایپرس در پروژه‌های SPA.
  4. ارزیابی و مرور تست‌هاهدف: تحلیل عملکرد تست‌ها.
  5. ارائه گزارش نهایی پروژه تستهدف: ارائه و مستندسازی تست‌ها.

با این مسیر، شما به طور گام به گام با تمام قابلیت‌ها و مفاهیم مرتبط با Cypress آشنا خواهید شد و در پایان توانایی اجرای تست‌های حرفه‌ای را خواهید داشت.


پیش‌آزمون مقدماتی سایپرس (Cypress Pretest)

سوالات عمومی:

  1. سایپرس چیست و چه کاربردی دارد؟الف) یک کتابخانه برای مدیریت داده‌ها
    ب) یک ابزار برای تست End-to-End
    ج) یک ابزار برای مدیریت دیتابیس
    د) یک ابزار طراحی رابط کاربری
  2. کدام یک از موارد زیر جزء ویژگی‌های اصلی سایپرس است؟الف) پشتیبانی از چندین مرورگر
    ب) اجرای همزمان تست‌ها
    ج) تست‌های قابل تکرار و سریع
    د) همه موارد بالا
  3. سایپرس از چه زبانی برای نوشتن تست‌ها استفاده می‌کند؟الف) Python
    ب) JavaScript
    ج) Java
    د) Ruby

سوالات مرتبط با نصب و پیکربندی:

  1. برای نصب سایپرس، کدام دستور در محیط Node.js استفاده می‌شود؟الف) npm install cypress
    ب) npm start cypress
    ج) npx cypress install
    د) npm init cypress
  2. برای اجرای سایپرس در حالت گرافیکی کدام دستور استفاده می‌شود؟الف) cypress open
    ب) npm run cypress
    ج) npx cypress open
    د) cypress run

سوالات مرتبط با مفاهیم پایه:

  1. دستور cy.visit() برای چه منظوری استفاده می‌شود؟الف) انتخاب یک عنصر
    ب) بازدید از یک URL مشخص
    ج) انتظار برای یک رویداد
    د) ارسال داده به سرور
  2. سایپرس برای انتخاب عناصر DOM از چه ابزارهایی پشتیبانی می‌کند؟الف) CSS Selectors
    ب) XPath
    ج) ID و Class
    د) همه موارد

سوالات مرتبط با Assertions:

  1. هدف از Assertions در سایپرس چیست؟الف) مدیریت خطاها
    ب) تأیید رفتار مورد انتظار
    ج) کاهش کدهای تست
    د) همه موارد
  2. کدام Assertion برای بررسی وجود یک متن خاص در صفحه استفاده می‌شود؟الف) should('have.value')
    ب) should('contain')
    ج) should('exist')
    د) should('be.visible')

سوالات مرتبط با تعاملات:

  1. دستور cy.get() برای چه کاری استفاده می‌شود؟الف) ارسال درخواست API
    ب) انتخاب یک عنصر DOM
    ج) شبیه‌سازی کلیک
    د) مدیریت داده‌ها
  2. برای شبیه‌سازی تایپ کردن یک مقدار در یک فیلد ورودی، کدام دستور استفاده می‌شود؟الف) cy.type()
    ب) cy.enter()
    ج) cy.fill()
    د) cy.type('value')

سوالات مرتبط با API و Mocking:

  1. سایپرس از کدام ابزار برای Mock کردن درخواست‌های API استفاده می‌کند؟الف) cy.mock()
    ب) cy.intercept()
    ج) cy.api()
    د) cy.request()
  2. دستور cy.request() برای چه منظوری استفاده می‌شود؟الف) ارسال درخواست‌های HTTP
    ب) بررسی کوکی‌ها
    ج) Mock کردن API
    د) بررسی ذخیره‌سازی Local

سوالات مرتبط با CI/CD:

  1. کدام یک از موارد زیر بخشی از فرآیند ادغام سایپرس در CI/CD است؟الف) تنظیم مرورگرها
    ب) اجرای خودکار تست‌ها
    ج) تولید گزارش‌ها
    د) همه موارد
  2. برای گرفتن اسکرین‌شات از یک تست، از چه دستوری استفاده می‌شود؟الف) cy.takeScreenshot()
    ب) cy.screenshot()
    ج) cy.saveScreenshot()
    د) cy.screen()

سوالات چالش‌برانگیز:

  1. سایپرس چگونه با Shadow DOM کار می‌کند؟الف) به طور پیش‌فرض از آن پشتیبانی نمی‌کند
    ب) با استفاده از پلاگین‌های خارجی
    ج) با تنظیم دستی includeShadowDom
    د) از طریق تنظیمات cy.getShadow()
  2. کدام یک از موارد زیر یک قابلیت پیشرفته سایپرس است؟الف) مدیریت داده‌های داینامیک
    ب) Mock کردن درخواست‌های پیچیده
    ج) تست‌های دسترسی‌پذیری
    د) همه موارد بالا

سوالات مرتبط با امنیت و دسترسی‌پذیری:

  1. برای بررسی دسترسی‌پذیری در سایپرس، از چه ابزار یا پلاگینی استفاده می‌شود؟الف) Cypress Accessibility
    ب) Axe
    ج) Screen Reader
    د) DevTools
  2. کوکی‌ها در سایپرس با چه دستوری مدیریت می‌شوند؟الف) cy.cookie()
    ب) cy.getCookie()
    ج) cy.cookies()
    د) cy.manageCookie()
  3. کدام یک از موارد زیر یک حمله امنیتی است که سایپرس قابلیت بررسی آن را دارد؟الف) SQL Injection
    ب) XSS
    ج) CSRF
    د) همه موارد

این سوالات پیش‌آزمون می‌توانند به مرور کلی مفاهیم و مباحثی که در طول جلسات آموزش سایپرس مطرح خواهند شد، کمک کنند. آیا نیاز به ویرایش یا اضافه کردن موارد دیگری دارید؟


پیش‌آزمون مقدماتی سایپرس (Cypress Pretest)

سوالات عمومی:

  1. سایپرس چیست و چه کاربردی دارد؟الف) یک کتابخانه برای مدیریت داده‌ها
    ب) یک ابزار برای تست End-to-End ✅
    ج) یک ابزار برای مدیریت دیتابیس
    د) یک ابزار طراحی رابط کاربری
  2. کدام یک از موارد زیر جزء ویژگی‌های اصلی سایپرس است؟الف) پشتیبانی از چندین مرورگر
    ب) اجرای همزمان تست‌ها
    ج) تست‌های قابل تکرار و سریع
    د) همه موارد بالا ✅
  3. سایپرس از چه زبانی برای نوشتن تست‌ها استفاده می‌کند؟الف) Python
    ب) JavaScript ✅
    ج) Java
    د) Ruby

سوالات مرتبط با نصب و پیکربندی:

  1. برای نصب سایپرس، کدام دستور در محیط Node.js استفاده می‌شود؟الف) npm install cypress
    ب) npm start cypress
    ج) npx cypress install
    د) npm init cypress
  2. برای اجرای سایپرس در حالت گرافیکی کدام دستور استفاده می‌شود؟الف) cypress open
    ب) npm run cypress
    ج) npx cypress open
    د) cypress run

سوالات مرتبط با مفاهیم پایه:

  1. دستور cy.visit() برای چه منظوری استفاده می‌شود؟الف) انتخاب یک عنصر
    ب) بازدید از یک URL مشخص ✅
    ج) انتظار برای یک رویداد
    د) ارسال داده به سرور
  2. سایپرس برای انتخاب عناصر DOM از چه ابزارهایی پشتیبانی می‌کند؟الف) CSS Selectors
    ب) XPath
    ج) ID و Class
    د) همه موارد ✅

سوالات مرتبط با Assertions:

  1. هدف از Assertions در سایپرس چیست؟الف) مدیریت خطاها
    ب) تأیید رفتار مورد انتظار ✅
    ج) کاهش کدهای تست
    د) همه موارد
  2. کدام Assertion برای بررسی وجود یک متن خاص در صفحه استفاده می‌شود؟الف) should('have.value')
    ب) should('contain')
    ج) should('exist')
    د) should('be.visible')

سوالات مرتبط با تعاملات:

  1. دستور cy.get() برای چه کاری استفاده می‌شود؟الف) ارسال درخواست API
    ب) انتخاب یک عنصر DOM ✅
    ج) شبیه‌سازی کلیک
    د) مدیریت داده‌ها
  2. برای شبیه‌سازی تایپ کردن یک مقدار در یک فیلد ورودی، کدام دستور استفاده می‌شود؟الف) cy.type()
    ب) cy.enter()
    ج) cy.fill()
    د) cy.type('value')

سوالات مرتبط با API و Mocking:

  1. سایپرس از کدام ابزار برای Mock کردن درخواست‌های API استفاده می‌کند؟الف) cy.mock()
    ب) cy.intercept()
    ج) cy.api()
    د) cy.request()
  2. دستور cy.request() برای چه منظوری استفاده می‌شود؟الف) ارسال درخواست‌های HTTP ✅
    ب) بررسی کوکی‌ها
    ج) Mock کردن API
    د) بررسی ذخیره‌سازی Local

سوالات مرتبط با CI/CD:

  1. کدام یک از موارد زیر بخشی از فرآیند ادغام سایپرس در CI/CD است؟الف) تنظیم مرورگرها
    ب) اجرای خودکار تست‌ها
    ج) تولید گزارش‌ها
    د) همه موارد ✅
  2. برای گرفتن اسکرین‌شات از یک تست، از چه دستوری استفاده می‌شود؟الف) cy.takeScreenshot()
    ب) cy.screenshot()
    ج) cy.saveScreenshot()
    د) cy.screen()

سوالات چالش‌برانگیز:

  1. سایپرس چگونه با Shadow DOM کار می‌کند؟الف) به طور پیش‌فرض از آن پشتیبانی نمی‌کند
    ب) با استفاده از پلاگین‌های خارجی
    ج) با تنظیم دستی includeShadowDom
    د) از طریق تنظیمات cy.getShadow()
  2. کدام یک از موارد زیر یک قابلیت پیشرفته سایپرس است؟الف) مدیریت داده‌های داینامیک
    ب) Mock کردن درخواست‌های پیچیده
    ج) تست‌های دسترسی‌پذیری
    د) همه موارد بالا ✅

سوالات مرتبط با امنیت و دسترسی‌پذیری:

  1. برای بررسی دسترسی‌پذیری در سایپرس، از چه ابزار یا پلاگینی استفاده می‌شود؟الف) Cypress Accessibility
    ب) Axe ✅
    ج) Screen Reader
    د) DevTools
  2. کوکی‌ها در سایپرس با چه دستوری مدیریت می‌شوند؟الف) cy.cookie()
    ب) cy.getCookie()
    ج) cy.cookies()
    د) cy.manageCookie()
  3. کدام یک از موارد زیر یک حمله امنیتی است که سایپرس قابلیت بررسی آن را دارد؟الف) SQL Injection
    ب) XSS
    ج) CSRF
    د) همه موارد ✅

این سوالات پیش‌آزمون می‌توانند به مرور کلی مفاهیم و مباحثی که در طول جلسات آموزش سایپرس مطرح خواهند شد، کمک کنند. آیا نیاز به ویرایش یا اضافه کردن موارد دیگری دارید؟

ci cdمدیریت
برنامه نویس.42ساله. از مدرک MCSD دات نت سال 2002 شروع کردم البته بعد از لیسانس و تمام عمرم رو در مدیریت با ابزار های شیرپوینت و MSPS و CRM و غیره گذراندم.https://zil.ink/sabert
شاید از این پست‌ها خوشتان بیاید