توسعه آزمون محور و رفتار محور (tdd & bdd)

درود بر همگی,
قصد دارم اینجا در مورد BDD و TDD که به نظر خیلی از اساتید تنها و علمی ترین راه توسعه موفق است, نظر و تجربیات دوستان رو جویا بشم و با هم این بحث شیرین رو آغاز کنیم.

3 پسندیده

به نظر من TDD برای همه جا نیست. تو خیلی از موارد فقط باعث کند شدن روند توسعه می شه و کارایی چندانی نخواهد داشت. اما در خیلی از موارد هم کارایی داره. در کل هروقت نیاز داشتید نرم افزاری تولید کنید که حساسیت خاصی داشت مثل مثلا API اونجا TDD می تونه خیلی مثبت باشه. اما در موارد دیگه استفاده از BDD منطقی تر هستش

@lxameer عزیز ممنون, پست رو تحیح می کنم. در اصل می خواستم کار رو با RSpec شروع کنم که ابزار BDD است.

1 پسندیده

RSpec البته TDD رو هم خیلی ساده تر و مورد اعتماد تر کرده.

@lxsameer عزیز من یه تازه کارم ولی احساس می کنم TDD باعث میشه که عملکرد نرم افزار دقیق ترباشه و گوشه های تاریکش رو با دقت بیشتری کد بزنی. اما BDD به قول شما حساسیت رو میاره پایین تر.

@ahmad.pn عزیز میتونی بیشتر توضیح بدی(با یک مثال عملی)؟ خیلی برام جالب شد, آیا ممکنه شما فکر کنید که TDD می تونه حتی کار توسعه رو سریعتر کنه؟ خیلی دوست دارم نظرتو تا جایی که میتونی به زبان کامپیوتر بگی (ممم… منظورم اینه که از دید یک برنامه نویس بگی و استدلاد بیاری)؟
البته منم تقریبا تازه کارم

@toomaj فکر نمیکنم تو روند تسریع توسعه تاثیر مستقیم داشته باشه. اما تاثیر غیر مستقیم قطعا داره. فرض کن شما می خوای کدهای مربوط به قسمت authorization پیج ها رو بزنی. ممکنه این وسط یه سری view ها رو فراموش کرده باشی. اگه TDD عمل کنی قطعا متوجه میشی اشکال کار کجاست ولی اگه BDD عمل کرده باشی در صورت فراموش کردن یه قطعه کد(به هر دلیل) شاید متوجه نشی و یا بعدن متوجه شی. به همین علت TDD باعث میشه روند Tshooting شما سریع تر و در نتیجه خود توسعه سریع تر بشه.

1 پسندیده

BDD و TDD نه تنها در تست عملکرد نرم افزار کمک می کنند بلکه ابزاری برای نشان دادن کیفیت نرم افزار هستند. تست، طراحی نرم افزار(Object Oriented Design را نشان می ده. اگر متودی تست شدنی نیست به دلیل طراحی بده. BDD و TDD با نوشتن تست اول به ساختن نرم افزار بهتر کمک می کنند

1 پسندیده

@samdvr با نظر شما کاملا موافقم و حدس می زنم شما روش (Red/Green/Refactor) رو خیلی خوب به کار می برید.
Red نوشتن تست خیلی کوچیک با این هدف که fail بشه
Green نوشتن کدی که تست رو pass کنه
Refactor دوباره نویسی تست بهتر از قبلی و کد اصلی که بهینه شده

1 پسندیده

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

اما چیزی ک TDD و BDD رو متمایز میکنه اینه ک … TDD هربار تغییر میکنه … برای هر الگوریتم و متد و … یعنی شما از نو مینویسی و بصورت جزیی به قضیه نگاه میکنی

اما تو BDD … یک روش کلی GIVEN / WHEN /THEN وجود داره که شما کل پروداکت یا یک قسمت اعظمشو یکجا مورد تست قرار میدین … و یکی از نکات جذابش… اتوماسیون بالاش هست …
اینم پکیج پایتونیش :slight_smile:
radish

یک چیزی هم ک میخاستم بگم اینه ک . اگه به TDD مسلط باشید . دیگه بدون TDD کد نمیزنید … انقد ک جذاب هست و نه تنها سرعت رو نمیاره پایین . بلکه افزایشم میده(+افزایش دقت و رفع باگ)
در واقع با تلفیق ابزار ها و یکم خلاقیت … میتونید فقط TDD بزنید … و موقع pass شدن … کد رو اپند و الحاق کنید بعنوان پروداکشن … (یعنی کد اصلی شما میشه TDD . نه یه روند چند مرحله ای)

2 پسندیده

با سلام به دوستان من Tdd رو تازه دارم کمکم یاد می گیرم و استفاده میکنم ، به نظرم برای پروژه های بزرگ و با پیچیدگی های منطقی فراوان خیلی خوب وکاراست.

برای دوستانی که میخوان تازه شروع کنن دیدن این مجموعه خیلی مفیده
https://www.lynda.com/Developer-Programming-Foundations-tutorials/Foundations-Programming-Test-Driven-Development/124398-2.html

1 پسندیده