نوشتن تست با Jest یک سرگرمی فوق العاده

چرا باید تست بنویسیم؟
به عنوان یک توسعه دهنده نرم افزار وظیفه ما اینکه برنامه هایی که مینویسیم کیفیت بالایی داشته باشند.حالا ما از کجا میتونیم مطئن بشیم که برنامه ما آزمون کیفیت رو با موفقیت پشت سر میگذاره؟در اینجا اهمیت تست نویسی مشخص می شود.ما میتونیم خیلی راحت با استفاده از نوشتن تست برای برنامه هایی که توسعه میدیم از عملکرد و کیفیت اون ها مطمئن بشیم و این یک وظیفه اساسی هر برنامه نویسی هست.
جمله John Ruskin به طور کامل این موضوع رو تایید میکنه “کیفیت هرگز تصادفی نیست؛ همیشه نتیجه تلاش هوشمندانه است. “
اغلب اوقات ما تمایلی به نوشتن تست برای کدهامون رو نداریم و دلایلی مثل deadlines یا اینکه مشتری به تست نویسی اهمیت نمیدهد رو بیان میکنیم.من معتقدم که تست نویسی باید قسمتی از کارهای روزانه ما باشد و این کار رو در فرآیند توسعه نرم افزار ادغام کنیم.
خب صحبت کردن در مورد اهمیت تست کافیه.اگر شما یک توسعه دهنده جاوا اسکریپت باشید،یکی از محبوب ترین و ساده ترین فریمورک های تست یعنی Jest میتونه یک پیشنهاد فوق العاده برای شما باشه.
Jest چیست؟
Jestیک فریمورک محبوب برای نوشتن تست در جاوا اسکریپت است که با تمامی فریمورک های محبوب جاوا اسکریپت مثل React, Angular, Vue, Node و … کار میکنه.
اگر شما از نوستن تست متنفر هستید، Jest عقیده شما رو تغییر میده.استفاده از Jest خیلی راحته و توسعه دهنده ها نوشتن تست با اون رو دوست دارند.
اما Jest چه ویژگی هایی داره که اینقدر محبوب است؟
نیاز نداشتن به پیکر بندی
Jestکار رو برای ما خیلی راحت کرده و نیاز به هیچ تنظیمات یا پیکربندی خاصی نداره.در بیشتر فریمورک های مدرن به صورت out of the box است و نیاز به تنظیمات خاصی نداره.پس باعث صرفه جویی در وقت شما میشه.من از Jest در برنامه هایی که با React و React Native توسعه میدم استفاده میکنم و هیچ تنظیمات خاصی برای اون انجام نمیدم.
Mocking ساده
Jest نوشتن mock functions رو خیلی ساده میکنه.منظور از mock functions توابعی هستند که به صورت شبیه سازی شده رفتار توابع واقعی رو تقلید میکنند.Jest از یک سری resolver های سفارشی برای import تست ها استفاده میکنه بنابراین mock کردن هر object در خارج از محدوده تست شما خیلی راحت می شود.
Snapshots
Jest از snapshots استفاده میکنه که باعث میشه شما بتونید به صورت سازمان یافته تست object های بزرگ رو ردیابی کنید.در علم کامپیوتر snapshot در واقع یک کپی از وضعیت سیستم در یک نقطه خاص است.ابن ویژگی زمانی مناسبه که شما یک object بزرگ رو در redux store ذخیره کرده باشید و قصد داشته باشید داده های اون رو validate کنید.
انجام تست ها به صورت موازی
این یکی از ویژگی های متمایز Jest است و برای توسعه سریع خلی مناسبه.تست ها به صورت موازی و جدا از هم اجرا می شوند.از آنجایی که هر کدوم فرآیندهای خاص خودشون رو دارند، عملکرد به حداکثر میرسه.
سرعت فوق العاده
با توجه به اینکه تست ها به صورت موازی انجام می شوند، Jest یک گزینه عالی برای شما است اگر سرعت برای شما مهم است.همچنین در ابتدا تست های شکست خورده قبلی رو انجام میده و انجام تست ها رو بر اساس زمان طول کشیدن اون دوباره سازماندهی میکنه.
مستندات عالی
API های Jest به صورت واضح مستند شده و قابل استفاده هستند.میتونید در API های Jest جستجو کنید تا در مورد چگونگی شروع کار با اون ایده بگیرید.
Code Coverage
Jest میتونه با استفاده از دستور coverage– به راحتی یک code coverage ایجاد کنه و نیاز به هیچ تنظیمات خاصی نداره.این میتونه برای ارزیابی test case های شما و پیش بینی اینکه به چند مورد آزمایش دیگه برای پوشش بهتر مفید باشه.
Snapshot Testing
Snapshot testingشما رو مطمئن میکنه که UI شما به روشی غیرمنتظره تغییر نمیکته.ایده اون خیلی ساده است.یک snapshot از UI component گرفته میشه و اون با snapshot گرفته شده در آزمون مقایسه میشه.تست شکست خورده اگر دو تا snapshot با هم تفاوت داشته باشه.این تست به ما نشون میده که یک تغییر غیرمنتظره رخ داده یا نیاز هست که reference snapshot به آخرین نسخه UI Component بروزرسانی بشه.
این نوع تست ها هنگام تست اپلیکیشن های موبایل خیلی رایج هستند.
انتقال Jest به یک پروژه
ما همیشه یک پروژه جدید را شروع نمیکنیم و خیلی از اوقات یک پروژه رو تحویل میگیریم و اون رو توسعه میدیم.
- اگر این پروژه با Jasmine یا Mocha است ، Jest با این فریمورک ها سازگار است و مهاجرت خیلی ساده است.
- برای فریمورک های دیگر ، می توانید از کدک ها استفاده کنید تا تست های خود را به صورت خودکار تغییر دهید.
چه کسانی از Jest استفاده می کنند؟
امروزه بیش از 500 شرکت برای آزمایش محصولات خود از Jest استفاده می کنند.این فریمورک توسط فیسبوک توسعه داده شده است و برای استفاده community و مشارکت به صورت open source قرار گرفت.
Facebook, Twitter, Airbnb, Instagram, Spotify و بسیاری از شرکت ها و استارتاپ های دیگه از این فریمورک برای test محصولات خودشون که با جاوا اسکریپت نوشته شده استفاده می کنند.
اگر قصد یادگیری react js به صورت تخصصی و حرفه ای را دارید، پیشنهاد می کنم آموزش جامع و پروژه محور react را مشاهده کنید.
مطالب زیر را حتما مطالعه کنید
چگونه از ماژول های نیتیو Android و IOS در React Native استفاده کنیم؟
آموزش کار با timing event ها
تفاوت توسعه برنامه های android و ios
معرفی DOM به زبان ساده
constructor function در جاوااسکریپت
factory function در جاوا اسکریپت
4 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
من میگم تست نویسی وقتی خوبه که پولش رو به آدم بدن . وگرنه وقت تلف کردن برای برنامه نویس به نفع کافرماست
سلام، مرسی بابت نطرت، معمولا توی تیم ها که کمی پروژه برزگ تر میشه و پروژه سنگین تر، تست نویسی جز برنامه های تیم برنامه نویسی هست و طبیعتا جز ساعات کاری. به هر حال تست نویسی به خود برنامه نویس هم کمک زیادی میکنه که بعدا تایم زیادی رو صرف رفع مشکلات و چالش ها نکنه و طبیعتا باید جز ساعت کاری باشه و هزینه هم واسش در نظر گرفته بشه
سلام. ممنون از مقاله خوبی که برامون آماده کردی به عنوان یک توسعه دهنده backend از این ساختار در nodejs برای تست استفاده می کنم و البته توصیه ام اینه دوستان حتما تست نویسی رو لازمه هر پروژه ای که انجام میدن بدونن
ممنون علی جان