کتاب تکنیکهای Test Isolation برای تستهای ایزوله و قابل تکرار با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
تکنیکهای Test Isolation: تست فرانتاند ایزوله و قابل تکرار | [نام وبسایت شما] تکنیکهای Test Isolation: تسلط بر تست فرانتاند ایزوله و قابل تکرار معرفی دوره آیا از تستهای فرانتاندی که غیرقابل اعتما...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره تکنیکهای Test Isolation برای تستهای ایزوله و قابل تکرار
موضوع کلی: برنامه نویسی
موضوع میانی: تست فرانتاند
📋 سرفصلهای دوره
- 1. مقدمهای بر اهمیت تست در فرانتاند
- 2. هرم تست: Unit, Integration, E2E
- 3. مشکلات رایج در تستها: Flaky Tests و کندی
- 4. وابستگیها: ریشه اصلی مشکلات در تست
- 5. Test Isolation چیست و چرا به آن نیاز داریم؟
- 6. مزایای تستهای ایزوله: سرعت، قطعیت و تکرارپذیری
- 7. معرفی پروژه نمونه دوره و اهداف آموزشی
- 8. آمادهسازی محیط توسعه (Node.js, Git, Editor)
- 9. نوشتن اولین تست (بدون ایزولهسازی)
- 10. شناسایی وابستگیهای خارجی در یک کامپوننت ساده
- 11. معرفی Test Doubles: جایگزینهایی برای وابستگیها
- 12. Dummies: سادهترین نوع Test Double
- 13. Stubs: جایگزینهایی با پاسخهای از پیش تعیینشده
- 14. Spies: مشاهده تعاملات بدون تغییر رفتار
- 15. Mocks: جایگزینهایی با انتظارات از پیش تعریفشده
- 16. Fakes: پیادهسازیهای سادهشده از وابستگیها
- 17. تفاوت کلیدی بین Mock و Stub
- 18. چه زمانی از Spy استفاده کنیم؟
- 19. انتخاب Test Double مناسب برای هر سناریو
- 20. مفهوم Seam: نقاطی برای تزریق وابستگی
- 21. الگوهای تزریق وابستگی (Dependency Injection)
- 22. تزریق از طریق Constructor/Props
- 23. تزریق از طریق Setter/Method
- 24. اصل وارونگی وابستگی (DIP) و نقش آن در تستپذیری
- 25. تایید رفتار (Behavior Verification) در مقابل تایید وضعیت (State Verification)
- 26. چالشهای ایزولهسازی در کدهای Legacy
- 27. معرفی و راهاندازی Jest
- 28. معرفی و راهاندازی Vitest (جایگزین مدرن)
- 29. ساختار یک فایل تست: `describe`, `it`, `test`
- 30. هوکهای چرخه حیات: `beforeEach`, `afterEach`, `beforeAll`, `afterAll`
- 31. مدیریت و پاکسازی وضعیت بین تستها
- 32. کتابخانههای Assertion: `expect` و Matchers
- 33. ایجاد Mock Functions با `jest.fn()` یا `vi.fn()`
- 34. بررسی فراخوانی Mock Functions: `toHaveBeenCalledWith`
- 35. تعریف مقادیر بازگشتی برای Mock Functions: `mockReturnValue`
- 36. پیادهسازی سفارشی Mock Functions: `mockImplementation`
- 37. جاسوسی (Spying) بر روی متدها با `jest.spyOn()` یا `vi.spyOn()`
- 38. بازگرداندن پیادهسازی اصلی با `mockRestore`
- 39. ایزولهسازی ماژولها با `jest.mock()` یا `vi.mock()`
- 40. پیادهسازی Manual Mocks در پوشه `__mocks__`
- 41. چرا Mock کردن `fetch` به تنهایی کافی نیست؟
- 42. معرفی Mock Service Worker (MSW)
- 43. فلسفه MSW: Intercept کردن درخواستها در سطح شبکه
- 44. راهاندازی MSW برای محیط تست (Node.js)
- 45. نوشتن اولین Request Handler در MSW
- 46. راهاندازی MSW برای محیط توسعه (Browser)
- 47. اشتراکگذاری Handlers بین محیط تست و توسعه
- 48. ایزولهسازی درخواستهای GET با MSW
- 49. ایزولهسازی درخواستهای POST, PUT, DELETE با MSW
- 50. شبیهسازی پاسخهای موفق (Status 2xx)
- 51. شبیهسازی خطاهای سمت کلاینت (Status 4xx)
- 52. شبیهسازی خطاهای سمت سرور (Status 5xx)
- 53. تست حالتهای Loading و انتظار برای پاسخ
- 54. کار با پارامترهای URL و Query Params در MSW
- 55. تست کامپوننتهای Data Fetching (مثال با React Query/SWR)
- 56. ایزولهسازی WebSocket با کتابخانههای mock
- 57. مشکل تست کدهای زمانمحور: `setTimeout`, `setInterval`
- 58. فعالسازی Fake Timers در Jest/Vitest
- 59. جلو بردن زمان با `advanceTimersByTime`
- 60. اجرای تمام تایمرهای در صف با `runAllTimers`
- 61. تست انیمیشنها و افکتهای CSS مبتنی بر زمان
- 62. تست فانکشنهای Debounce و Throttle
- 63. ایزولهسازی `Date` برای نتایج قابل پیشبینی
- 64. ایزولهسازی `localStorage` و `sessionStorage`
- 65. تست خواندن و نوشتن در Storage ایزوله
- 66. ایزولهسازی `window.location` و `window.history`
- 67. تست تغییر URL و ناوبری (Navigation)
- 68. ایزولهسازی `window.matchMedia` برای تستهای Responsive
- 69. ایزولهسازی `window.navigator` (مثلاً Geolocation API)
- 70. ایزولهسازی Clipboard API
- 71. استراتژیهای ایزولهسازی کتابخانههای شخص ثالث
- 72. Mock کردن یک کتابخانه آنالیتیکس (مانند Google Analytics)
- 73. Mock کردن کامپوننتهای UI از کتابخانههای خارجی (مانند Material-UI)
- 74. ایزولهسازی سیستم Routing (مثال با React Router)
- 75. تست کامپوننتها در انزوا از Context Providers
- 76. ایزولهسازی State Management (مثال با Redux/Zustand)
- 77. تست یک Slice/Reducer به صورت ایزوله
- 78. تست کامپوننتهای متصل به Store با Mock Store
- 79. الگوی Arrange-Act-Assert (AAA) برای ساختاردهی تستها
- 80. خوانایی تست: نامگذاری گویا و توضیحات
- 81. اصل "یک Assert برای هر تست" - افسانه یا واقعیت؟
- 82. اجتناب از تست جزئیات پیادهسازی (Implementation Details)
- 83. تست رفتار عمومی (Public API) کامپوننت
- 84. خطر Over-mocking: چه زمانی بیش از حد Mock کردهایم؟
- 85. نگهداری Mockها نزدیک به تستهای مربوطه
- 86. ایجاد Factory Functions برای تولید دادههای تست (Test Data)
- 87. استفاده از کتابخانههایی مانند Faker.js برای دادههای واقعگرایانه
- 88. تستهای پارامتریک (Parametrized Tests) با `test.each`
- 89. ایزولهسازی استایلها و CSS-in-JS
- 90. تست دربرابر قرارداد (Contract Testing) به عنوان یک تکنیک ایزولهسازی
- 91. معرفی و کاربرد Snapshot Testing
- 92. مدیریت و بهروزرسانی Snapshotها
- 93. خطرات و معایب استفاده بیش از حد از Snapshot Testing
- 94. Visual Regression Testing برای ایزولهسازی تغییرات بصری
- 95. ایزولهسازی تستها در محیط CI/CD
- 96. اجرای موازی تستهای ایزوله برای افزایش سرعت
- 97. تحلیل گزارش Code Coverage و نقاط کور آن
- 98. Mutation Testing: سنجش کیفیت واقعی تستها
- 99. متعادلسازی بین تستهای ایزوله (Unit) و Integration
- 100. جمعبندی نهایی: ساخت یک استراتژی تست ایزوله و پایدار
تگها:
Front-end testing
Integration Testing
Jest
mocking
Programming
React Testing Library
Repeatable Testing
Software Development
software quality
software testing
Stubbing
Test Isolation
Unit Testing
برنامهنویسی
تست ایزوله
تست فرانتاند
تست قابل تکرار
تست نرمافزار
تست واحد
تست یکپارچگی
توسعه نرمافزار
کیفیت نرمافزار
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.