برنامه نویسی تست محور (TDD) - قسمت اول

Test Driven Development (TDD)
Test Driven Development (TDD)

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

تعریف برنامه نویسی تست محور

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

به بیان دیگر در برنامه نویسی تست محور ما ابتدا برای امکانات مورد نیاز خودمون تست مینویسیم و سپس کد مربوط به پاس کردن این تست ها توسعه داده میشه.

اهمیت تست ...

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

شش قانون در توسعه تست محور

میتونیم توسعه تست محور رو توی ۶ مرحله ساده زیر خلاصه کنیم:

  1. نوشتن تست برای امکانات مورد نظر
  2. اجرا کردن تست ها و مشاهده خطاهایی که دریافت میکنیم
  3. پیاده سازی ساختار فیچر مورد نظر
  4. اجرای مجدد تست ها و بررسی خطا های دریافتی
  5. پیاده سازی لاجیک
  6. بررسی پاس شدن تست های نوشته شده

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

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

https://virgool.io/@r.a.majd/test-driven-development-part-2-ygwj8tzd6rta
https://virgool.io/@r.a.majd/test-driven-development-part-3-f4f3o977ocai