Code Module | کد ماژول
1.91K subscribers
357 photos
42 videos
6 files
355 links
Hello World 🌎

<> Earth is programmable if you code it </>

Group 👇🏻
@CodeModuleGap

Contact Us 👇🏻
@MrShahiin
@neoMahan
Download Telegram
تست نویسی چیه و به چه دردی میخوره؟ 🌀

تست نویسی، یکی از بخش های جدانشدنی در فرایند ساخت پروژه و نرم افزار هست.
با تست نویسی، میتونیم تا حدودی اشکالات پروژه رو قبل از انتشار در مارکت ها یا تحویل دادن به کارفرما شناسایی کنیم و این کار اگه به شکل اصولی انجام بشه، هم از نظر هزینه ای و هم از نظر کارایی به نفع دولوپر هست.


فرآیند تست نویسی چطوری انجام میشه ؟

هر پروژه از چندین واحد تشکیل شده و هر واحد یه کار خاص انجام میده. حالا باید دید که هر کدوم از این واحد ها کاری که باید انجام بدن و با موفقیت به سرانجام میرسونن یا نه؟؟ برای این کار از مفهوم Unit Testing استفاده میشه، توی این مفهوم هر بخش از پروژه ما یه واحد یا Unit به حساب میاد و کد هایی نوشته میشه که اون Unit و تست کنند.
اگه توی اون تست موفق بودیم، به اصطلاح تستمون Pass میشه و ما تونستیم واحد مورد نظرمونو از نظر کارایی تست کنیم.


چرا باید تست نویسی انجام بدیم ؟

با استفاده از مفهوم تست نویسی، میتونیم اشکالات برناممون و خیلی سریع پیدا کنیم و دیگه وقت زیادی صرف دیباگ و پیدا کردن مشکل نکنیم. مخصوصا اینکه در پروژه های بزرگ، موارد بسیار زیادی برای تست هست که اگه بخواییم همه این موارد و تکی تکی و به شکل دستی تست کنیم، کارمون بعد از کار تو معدن سخت ترین کار دنیا میشه☹️


چالش های تست نویسی چیه ؟

تست نویسی نمیتونه همه اشکالات و باگ های موجود در پروژه و تشخیص بده.
همه بخش های پروژه رو نمیشه تست کرد چون که بعضی از قسمت ها قابلیت پیاده سازی به شکل تست ندارن و برای تست اون قسمت ها باید به شکل دستی وارد عمل شد.


تست‌نویسی یک فرآیند لازم مخصوصا برای توسعه پروژه های بزرگ و پیچیده هست. به کمک تست‌نویسی میشه اطمینان پیدا کرد که در صورت تغییر یک قسمت از پروژه، این تغییر بر روی کدام قسمت‌ها تاثیر میذاره و باعث ایجاد باگ میشه. کارفرماها هم باید به این نکته توجه کنن که پروژه بدون باگ و با زمان توسعه بیشتر بهتر از پروژه با باگ و زمان توسعه کمتر هست.


#testing
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
در پست های قبل راجب اهمیت تست نویسی صحبت کردیم و امروز میخوایم یکی از محبوب‌ترین فریمورک‌ها برای این کار، یعنی Jest و بررسی کنیم😎

فریمورک Jest چیه؟

در واقع Jest یک فریمورک تست نویسی جاوااسکریپتی هست که امروزه به طور گسترده‌ای مورد استفاده قرار میگیره. این فریمورک با همه فریمورک‌های مدرن جاوا اسکریپت مثل React، Angular، Vue،  Node و نظایر این‌ها سازگاری داره.

این فریمورک در اصل توسط فیسبوک توسعه داده شده و برای جامعه برنامه نویسان جهت استفاده و توسعه متن باز شده است.


چرا Jest و انتخاب کنیم؟

وضعیت پرسش‌نامه سال ۲۰۱۸ جاوااسکریپت نشون میده که Jest محبوب‌ترین و پر استفاده‌ترین فریمورک تستینگ برای جاوااسکریپت بوده و حدود ۳۹٫۶% از توسعه دهنده ها از اون استفاده میکردن.

و همچنین Facebook، Twitter، Airbnb، Instagram، Spotify و بسیاری از استارتاپ‌های بزرگ، همگی از این فریمورک برای تست محصولاتشون که با جاوااسکریپت نوشته شده، استفاده میکنن.


مزایای فریمورک Jest

◀️بدون پیکربندی

◀️استفاده ساده

◀️سرعت بالا

◀️اجرای موازی تست ها

◀️مستندات بسیار خوب


اگه شما از تست نوشتن خوشتون نمیاد، Jest قطعا نظر شما رو عوض میکنه چون استفاده از این فریمورک فوق‌العاده آسون و راحته.

برای یادگیری این فریمورک میتونید به داکیومنتش مراجعه کنید.


Document 🌕

#testing #jest #framework
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻آشنایی با مفهوم TDD در برنامه نویسی

در حوزه توسعه نرم‌افزار، تلاش برای ارائه نرم‌افزار با کیفیت به شیوه‌ای کارآمد، منجر به ظهور تکنیک‌های برنامه‌نویسی مختلف شده. در این میون مفهوم TDD یا Test-Driven Development به یک سنگ بنا تبدیل شده💀

تو این پست به بررسی مفهوم TDD در برنامه نویسی میپردازیم. به زبان ساده، TDD تکنیکی محسوب میشه که در اون تست‌ها قبل از کد واقعی نوشته میشن. این کار با فرض اصلاح کد از طریق چرخه‌ای از نوشتن یک آزمون، تولید حداقل کد برای قبولی در آزمون و اصلاح مجدد کد برای بهبود کار می‌کنه. این حلقه که اغلب محور TDD یا TDD axis نامیده میشه، رویکردیو ارائه میده که تو اون تست‌ها فرآیند توسعه مارو هدایت میکنن.

🔵 چرخه های TDD در توسعه نرم افزار

در واقع Red-Green-Refactor اصطلاحیه که برای توصیف گردش کار اولیه یا چرخه‌ای که برای تمرین TDD اساسیه، استفاده میشه.

🧑‍🎓 این چرخه از سه مرحله اصلی تشکیل شده است:

🔴مرحله Red: در این مرحله با نوشتن یک تست مردود شروع می‌کنیم. این تست برای توصیف عملکرد یا بهبود جدیدیه که می‌خوایم اجرا کنیم.

🟢مرحله Green: در مرحله بعد، هدف شما نوشتن حداقل کد لازم برای قبولی در آزمون است و باعث سبز شدن آزمون می‌شود. این کد لازم نیست کامل یا کارآمد باشد، فقط باید کار را انجام دهد.

🟣مرحله Refactor: پس از گذراندن آزمون، می‌توان کد را پاک‌سازی کرد، ساختار، خوانایی یا کارایی آن را بهبود بخشید و رفتار آن را حفظ کرد.این مرحله بر بهبود کد در حالی که به درستی کار خواهد کرد تأکید دارد.

🧐چرا باید از TDD استفاده کنیم؟

استفاده از TDD در برنامه نویسی مزایای بی‌شماری داره. ابتدا با نوشتن تست‌ها، توسعه‌دهنده ها باید به وضوح اونچه رو که می‌خون کد انجام بده مشخص کنن که این ویژگی میتونه افزایش کارایی کد بسیار کمک کنه. TDD همچنین میتونه به یافتن و رفع اشکالات تو مراحل اولیه توسعه کمک کنه، که میتونه هزینه‌های پروژه و افزایش زمان‌بندی رو کاهش بده. علاوه بر این، تأکید بر تست منظم میتونه منجر به یک پایگاه کد با کیفیت بالاتر و پایدارتر با اشکالات کمتر بشه.


#TDD #testing #software
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
چرا ‏Vitest رو به Jest ترجیح بدیم؟ 🥶

‏Jest و Vitest یکی از چندین فریمورک‌هایی هستن که برای نوشتن تست‌ (unit test یا integration test) داخل پروژه‌هامون استفاده میکنیم.

‏Vitest به عنوان جایگزینی جدیدتر، سریع تر و ساده تر معرفی شد. این فریمورک به دلیل (Hot Module Replacement) HMR و پشتیبانی از ESM (ECMAScript Modules) سرعتی به مراتب بالاتر از jest داره. پشتیبانی داخلی از Ts بدون نیاز به ابزارهای اضافی باعث شده محیط نوشتن کد‌ها دارای ساختاری یکسان باشه و مثل خیلی از فریمورک‌های دیگه اجرای تست‌ها در مرورگر و Node.js به راحتی امکان پذیره. مهاجرت از Jest به Vitest کار چندان سختی نیست اگر از قبل با jest کار کرده باشید.

قید Jest رو کلا بزنیم؟

قطعا نه و هنوز تو بعضی شرایط انتخاب منطقی‌تریه. برای مثال در پروژه های Next.js یکسری محدودیت‌ها برای Vitest وجود داره و استفاده از Jest منطقی‌تره.

آیا پروژه باید با vite باشه تا بتونیم از Vitest استفاده کنیم؟

‏Vitest به‌عنوان یک فریمورک تست مستقل کار می‌کنه و میتونیم اون رو در هر پروژه جاوا/تایپ اسکریپت استفاده، و فقط کانفیگ‌های مربوطه رو اضافه کنیم.

#testing
@CodeModule