Unit Testing
مقدمه
پروژههای بزرگ از قسمتهای مختلفی تشکیل شدهاند که گاهی اوقات به یکدیگر وابستهاند و بر حسب نیاز ممکن است بخواهید یکی از این بخشها را تغییر دهید؛ چگونه میتوانید از صحت کارکرد قسمتهای وابسته اطمینان حاصل کنید؟ برای پاسخ به این سوال، در این فاز به بررسی راههای مختلف تستکردن سامانه میپردازیم.
- چه راههایی برای تستکردن سامانه وجود دارد؟
- مزایا و معایب این روشها نسبت به یکدیگر چیست؟
- در React چگونه میتوان تست نوشت؟
- چگونه میتوان فهمید چند درصد از کدهای موجود تست شدهاند؟
یادگیری
راههای مختلف تستکردن سامانه
Manual Testing
یکی از راههایی که احتمالاً تا کنون از آن استفاده میکردید، تستکردن دستی سامانه است. هرچند که این روش بسیار ساده و قابلفهم است اما معایبی دارد:
- بسیار وقتگیر است.
- پس از مدتی به کاری تکراری و خستهکننده تبدیل میشود.
- ممکن است انسان اشتباه کند و متوجه عملکرد اشتباه سامانه نشود.
- ممکن است انسان فراموش کند و بخشی از سامانه را تست نکند.
برای حل مشکلات بالا، از روشهای تست خودکار استفاده میکنیم که در ادامه به توضیح آنها میپردازیم.
End-to-End Testing
در روش e2e برنامهای مینویسیم که تمام عملیاتی که توسط کاربر انجام میشود را به ترتیب انجام دهد. این برنامه خود را جای کاربر جا میزند و کوچکترین اعمال انسان را نیز طبق یک الگوریتم، خط به خط اجرا میکند. این روش نزدیکترین روش به تست دستی است اما متاسفانه احتیاج به منابع زیادی از جمله زمان دارد.
Integration Testing
ممکن است برنامۀ شما با چند برنامۀ دیگر در ارتباط باشد. بهعنوان مثال ممکن است شما قسمت فرانتاند یک پروژه را توسعه دهید و برنامهنویس دیگری قسمت بکاند آن را نوشته باشد. برای اطمینان از یکپارچگی قسمتهای مختلف و تعامل مناسب آنها با یکدیگر از Integration Testing استفاده میکنیم.
Unit Testing
همانطور که از اسم آن مشخص است، در Unit Testing به تستکردن کوچکترین اجزاء یک برنامه یعنی توابع، کلاسها و متغیرها میپردازیم. در این روش معمولاً به ظاهر سایت یا تجربۀ کاربر توجه نمیکنیم و صرفاً کارکرد صحیح Unitها را مورد بررسی قرار میدهیم. در ادامه به نحوۀ نوشتن Unit Test در React میپردازیم.
Unit Testing in React
خوشبختانه React بهصورت پیشفرض از Unit Testing پشتیبانی میکند. در React میتوانید با استفاده از ابزارهای Jest به نوشتن تست بپردازید. این تستها برای اطمینان از عملکرد صحیح تمام قسمتهای سامانه، اعم از کامپوننتها، سرویسها، توابع و ... میتوانند مورد استفاده قرار بگیرند.
برای راهاندازی این امکان، نیاز به انجام کار خاصی نیست؛ صرفاً کافی است با اجرای دستور زیر در Terminal، تستهای موجود را اجرا کنید:
npm test
با اجرای دستور بالا یک مرورگر باز خواهد شد که لیستی از تستها را به شما نشان میدهد؛ همچنین مشخص میکند کدامیک از آنها موفق و کدامیک ناموفق بودهاند.
از آنجایی که سایت React بهطور کامل در مورد تستنویسی توضیح داده است، شما را به مطالعۀ مستندات مربوطه دعوت میکنیم و از آوردن مطالب تکراری در این مستند میپرهیزیم.
برای آشنایی بیشتر با این مفهوم میتوانید از لینکهای زیر استفاده کنید:
پروژه
برای تمام کامپوننتها و سرویسهای پروژۀ خود Unit Test بنویسید و مطمئن شوید حداقل 80درصد کدها تست شده باشند.
از هر دو عضوِ یکی از تیمها درخواست کنید تا کد شما را جداگانه Review کنند؛ بعد از اینکه Approve کردند، به منتور عادی مراجعه کنید و پس از Approve او، به منتور سنیور بگویید تا کد شما را ببیند.
همچنین لازم است شما هم حداقل کد یک تیم دیگر را Review کنید. سعی کنید تمام مواردی که در این فاز یاد گرفتید را هنگام Review مورد بررسی قرار دهید.