مقدمه ای بر تست نرم افزارهای ری اکتی

12 اردیبهشت 1398
درسنامه درس 22 از سری آموزش react (ری اکت)
React-testing-application

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

هنگامی که درباره تست front-end صحبت می کنیم، در حقیقت منظور ما، تست اینکه برنامه ری اکت ما چه چیزی را رندر می کند و همچنین نحوه پاسخ آن به تعامل کاربر می باشد.

در این درس درباره سه الگوی مختلف تست نرم افزار صحبت می کنیم: تست واحد، تست عملکرد و تست یکپارچگی.

تست واحد

در تست واحد (unit testing)، هر بخش  اختصاصی از کدهای برنامه را به صورت مجزا تست می کنیم تا مطمئن شویم آن قسمت از کد مطابق انتظار ما کار می کند.

برای مثال ما قبلاً چند reducer در برنامه مان ایجاد کرده بودیم. هر کدام از این Reducer ها یک کار واحد را انجام می دهند، حال با کمک تست واحد می خواهیم ببینیم که آیا این reducer ها تحت سناریو های مختلف به خوبی کار می کنند یا خیر. در ری اکت، تست واحد به مرورگر نیاز ندارد و می توان با سرعت بسیار بالاتری آنرا اجرا کرد و فرآیند تست هم بسیار ساده انجام می شود.

در اکثر مواقع باید به جواب این سوال تمرکز کنیم: با گرفتن یک سری ورودی (state و propها)، آیا خروجی با انتظارات ما از چیزی که باید در dom مجازی نمایش داده شود، مطابقت می کند؟ در این مورد، ما نمایش خروجی را تست می کنیم.

تست عملکرد

در تست عملکرد ما روی تست رفتار کامپوننت مان تمرکز می کنیم. برای مثال، اگر یک نوار پیمایش (navigation bar) با یک دکمه login / logout  داشته باشیم، توقع داریم که:

  • اگر کاربری به برنامه لاگین کرد، نوار پیمایش دکمه logout را نمایش دهد.
  • اگر کاربر لاگین نکرده بود، دکمه login به او نمایش داده شود.

تست عملکرد معمولاً به صورت مجزا اجرا می شود (برای مثال تست عملکرد کامپوننت، بدون تست بقیه برنامه)

تست یکپارچگی

در انتها آخرین تستی که بررسی می کنیم، تست یکپارچگی است. این نوع تست، کل سرویس های برنامه را تست کرده و سعی دارد همان تجربه ای که کاربر نهایی قرار است داشته باشد را به ما در هنگام توسعه برنامه بدهد. در مورد سرعت و کارایی، تست یکپارچگی سرعت بسیار پایینی دارد ، چرا که باید درخواست های ما را در یک مرورگر اجرا کند، به همین دلیل تست های واحد و عملکردی با سرعت بالاتری از تست های یکپارچگی اجرا می شوند (در ری اکت تست عملکردی در یک dom مجازی به جای مرورگر واقعی اجرا می شود، در نتیجه سرعت بالاتری دارد)

هنگام تست کامپوننت های ری اکت هم بایدد ببینیم که در dom مجازی چه چیزی قرار گرفته و همچنین چه چیزی در dom واقعی نمایش داده خواهد شد.

ابزارها

در اینجا از کتابخانه jasmin که یک زبان تست قابل خوانا را ارائه می دهد، استفاده می کنیم.

برای اجرای یک تست از یکی از کتابخانه های Mocha و Jest که بحث های زیادی راجع به آسانتر و کاراتر بودن هر کدام از این کتابخانه ها در جریان است، استفاده می کنیم.

اما ما در این مجموعه آموزشی از ابزار اجرا کننده تست Jest استفاده می کنیم، چون این کتابخانه به طور رسمی توسط ری اکت معرفی شده است.

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

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

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش react (ری اکت) توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.