تست نویسی در جاوااسکریپت

تست نویسی در جاوااسکریپت


در این مقاله قصد داریم در رابطه با تست نویسی در جاوااسکریپت مطالبی را ارایه دهیم که امیدواریم مفید به فایده واقع شود. این مقاله به همت مهندس محسن صالحی (از دانشجویان قدیم پرنیان) نگارش شده است.


چرا تست نویسی ؟


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

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

انواع تست نویسی


ما انواع تست نویسی داریم ولی من میخوام براتون از تست نویسی TDDبگم ، TDD مخفف جمله Test Driven Development که میتوان گفت مراحل انجام تست را بیان می کند .

به اصلاح به آن میگوییم red green testing یعنی ابتدا تمامی تست های ما رد می شوند و بعد از نوشتن کد  رند شدن کد ها سبز یا تایید می شوند.
.
تست نویسی TDD یکی از پر استفاده ترین و رایج ترین ساختار های تست نویسی به حساب می آید.

تست نویسی



-ابزار های تست نویسی

برای تست نویسی در زبان های مختلف ابزار های مختلفی وجود دارد در جاوااسکریپت یکی از محبوب ترین این ابزار ها jest می باشد که بسیار پر استفاده می باشد . در جاوا اسکریپت به دلیل اینکه نیازی به رندر کد ها نیست به ابزاری مانند enzyme و غیره نیاز نداریم ، برای همین کافیه ما فقط jest را نصب کرده و کد های خود را تست کنیم.

راهنمای ابتدایی برای تست نویسی در جاوا اسکریپت :

:Create json file

-ابزار های تست نویسی

:Install jest plugin

تست نویسی

توجه داشته باشید روی حالت دولوپمنت باید باشه برای اینکه داریم توسعه میدهیم !

:Create folder __test__

تست نویسی

دقیقا به همین شکل اسم گذاری میکنیم . یکی از قوانین تست نویسی که باب شده این مورد می باشد.

Edit package.json

Npm test

تست نویسی

برای استفاده از ابزار جست شما باید آن را تعریف کنید.

:Create test file

تست نویسی

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


:Create file js

تست نویسی

به نوع اینپورت و اکسپورت فایل ها توجه کنید . که از ساختار اکما ۶ استفاده کرده ام .

Finally run testing and view list test in node

تست نویسی

به همین سادگی شما برای استفاده از ابزار های جست میتوانید به سایت خودش مراجعه کنید که کامل ترین داکیومنت رو داره، و من برای اینکه بهتر دیده شه از ترمینال استفادل کردم .  

https://jestjs.io

این فقط یک مثال بسیار ساده و مبتدی است که سه تست نوشته شده که آرگمان های ورودی رو باهم مقایسه میکند ، که هر سه آنها پاس یا تایید شده اند .

باز هم تاکید میکنم این یک نمونه ساده است و راهنمای راه اندازی می باشد.



-تست نویسی در ری اکت React.js

ری اکت یکی از کتابخانه های جذاب و دوست داشتنی جاوااسکریپت می باشد که بسیار کار آمد و عالی می باشد، حالا برای اینکه بتوانیم کد هامون رو تست کنیم در ریکت میتوان از ابزار jest استفاده کنیم ، تمامی دستورات و توابع  jest  در جاوااسکریپت در ریکت هم کاربرد دارد و به همان شکل می باشد اما یک تفاوت اصلی وبنیادی وجود دارد و آن این است که به دلیل ایکه ری اکت دارای دام مجازی میباشد نیازمند این است که هربار تست کدی را می نویسیم یکبار کامپوننت ما رندر شود ، و این امر ما را نیازمند ابزار هایی میکند مانند enzyme, react test library .
برای رند کردن و تست نویسی در ریکت من به شما این دو ابزار را پیشنهاد میکنم اولی jest و دومی react test library  است که به صورت اولیه در ری اکت شما نصب هست .
که بسیار ساده و سریع و سازگار می باشد.

https://testing-library.com/docs/react-testing-library/intro



– انواع تست ها در برنامه

خلاصه بگم در تست نویسی اصول و ساختار هایی وجود دارد که هر کسی به دلخواه از آنها استفاده میکند اما چند سالی است که برنامه نویسان به یک ساختار کلی و منظم رسیده اند که عبارت است از :‌
یونیت تستینگ (Unit Testing) : از نام آن معلوم است که چه چیزی را تست میکند ، تست کردن واحد به واحد ، تست هایی کوتاه و سریع که باید اکثریت کد ما به این سبک نوشته شود ، این نوع تست از زیر مجموعه White-box Testing است.

فانکشنال تستینگ (Functional Testing): این نوع تست یک عملیات کلی را در برنامه ما تست میکند که برخلاف یونیت تست سرعت بالایی ندارد ولی دقیق تر و کامل تر است که به ما این اطمینان را به ما میدهد که کد ما کمترین باگ ممکن را دارد .

اینتگریشن تستینگ (Integration Testing):‌ برای تست کردن سرویس های خارجی ازین این نوع تست استفاده میشود برخلاف یونیت تست که واحد هایی را تست میکند که وابستگی خارجی را ندارند . و یکی دیگر از کاربرد های آن این است که کامپوننت های مختلف ما را تست میکند نه تمایه کامپوننت ها مانند فانکشنال تستینگ ، که هر دوی آنها زیر مجموعه  black box testing  می باشند .
جعبه سیاه تست یا همان black box testing خیلی اجزای زیادی دارند که در بالا مهم ترین آنها را آورده ام ،‌البته تست نویسی بسیار گسترده می باشد و نست به ساختار برنامه ای که داریم تست نویسی های متناسبی با آنها داریم، تست نویسی یک الزام نیست اما اگر قوانین آن رعایت شود کد و برنامه قانونمند تری خواهیم داشت .


-خلاصه و نتیجه گیری

این مقاله یک دیدگاه از تست نویسی میباشد نه یک آموزش ،‌بلکه یک راهنمایی دوستانه است که امیدوارم برای شما مفید بوده باشه ، من در تلاش هستم که آموزشی را برای تست نویسی تهیه کنم که این کار نیازمند همیاری شماراهنمای ابتدایی برای تست نویسی در جاوا اسکریپت :

https://testing-library.com/docs/react-testing-library/intro/

امیدواریم از این مقاله نهایت استفاده را برده باشید و آن را با دوستانتان به اشتراک بگذارید. تیم تولید محتوای مدرسه اینترنتی پرنیان این مقاله را تهیه کرده است.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *