انجام سریع‌تر کارها با استفاده از TDD یا Test-Driven Development

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 21 خرداد 1398
دسته بندی ها : برنامه نویسی

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

اما باید بگویم که شما برای پیاده‌سازی چنین تست‌هایی نیازمند انجام کارهای بسیار زیادی هستید. اما اگر بتوانیم در حین انجام کارها از آن‌ها بهره بگیریم اینگونه می‌شود به یک شکل دیگر به قضیه نگاه کرد. 

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

روش معمولی که برای تایید یک کد استفاده می‌شود (با در نظر گرفتن اینکه پروژه ما یک وب اپلیکیشن است) این است که پروژه را در مرورگر باز کرده و خروجی را درست مانند یک کاربر مشاهده بکنیم. این بدان معناست که شما با هر بار تغییر در کدها باید مرورگر را باز کنید، روی دکمه‌ای که می‌خواهید یک کار را انجام دهد کلیک نمایید و خروجی را مشاهده کنید.

مدت زمانی که ممکن است هر بار این پروسه طول بکشد بسته به محیط و میزان بزرگی اپلیکیشن‌تان است. اگر از یک فریمورک مانند انگولار استفاده کنید باید بگویم که شما برای هر بار نمایش پروژه باید مدت زمان تقریبی ۲۰ ثانیه را صبر کنید. 

بنابراین در هر بار بررسی کدها ۲۰ ثانیه زمان لازم است. 

البته بررسی کردن برخی موارد دیگر می‌تواند زمان بسیار بیشتری نیاز داشته باشد. برای مثال تصور کنید که یک صفحه پرداخت را ایجاد کرده‌اید که می‌خواهید از درستی کار ورودی‌ها مطمئن شوید، شما برای هر بار تست کردن صفحه نیاز دارید تا تک تک ورودی‌ها را پر کرده و بعد دکمه ارسال را بزنید. گاهی اوقات انجام این کارها از ۲۰ ثانیه به چندین دقیقه زمان نیاز خواهد داشت.

TDD به اختصار Test-Driven Development یا تست حین توسعه به شما کمک خواهد کرد

استفاده از TDD -ابتدا نوشتن تست‌ها و سپس کدهای واقعی- به شما این کمک را می‌کند تا قدرتی که مرورگر و… در انجام تست‌ها به شما می‌دهند را در مدت زمان کمتری در خود محیط برنامه‌نویسی در اختیار داشته باشید. 

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

البته انجام تست به صورت دستی در هر صورت پیشنهاد نمی‌شود مگر در آخرین موارد که پروژه را تحویل می‌دهید، چرا که در آن زمان باید به صورت کامل مطمئن شوید چیزی را تحویل می‌دهید که از شما خواسته شده است.

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

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

TDD ارزش تلاش‌های‌تان را دارد

به یاد داشته باشید که این وظیفه برنامه‌نویس است تا کدهایی با قابلیت تست‌پذیری را تحویل دهد. از طرفی دیگر باید بگویم که تست‌نویسی کاری نیست که شما صرفا در آموزشکده‌ها یاد بگیرید، تست نویسی به تجربه و زمان نیاز دارد. بنابراین بسیار مهم است که میزانی از زمان‌تان را برای یادگیری تست‌نویسی سرمایه‌گذاری کنید.

نکته مهم: TDD و Unit Testing دو مقوله کاملا جدای از هم هستند. TDD به روشی گفته می‌شود که شما قبل از انجام هر کاری یک نوع از تست را می‌نویسید. اما Unit Testing نوعی از تست است که روی کدها اعمال می‌شود. بنابراین این دو در یک دسته‌بندی قرار نخواهند گرفت.

منبع

مقالات پیشنهادی

  • حس اتوماتیک سازی کارهای front-end با gulp

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

    حسام موسوی
  • نحوه خودکارسازی کارها با استفاده از Node.js

    وقتی که پیش‌تر در سال 2016 برای یک شرکت بازی آنلاین کار می‌کردم، کار من تقریبا همین بود. این کار در زمان‌هایی که من باید templateهای پیکربندی را می‌سا...

    عرفان کاکایی