X
تبلیغات
پیکوفایل
رایتل


یکشنبه 24 شهریور 1387

TDD(Test-Driven Development) تکنیکی برای develop کردن نرم افزارها می باشد. در این روش ابتدا مورد تست(test case) ها نوشته می شوند و سپس با توجه به این تستها کد عملیاتی پیاده سازی می شود و در نهایت برای رسیدن به نتیجه مطلوب عمل refactoring روی نرم افزار صورت می گیرد.

این تست ها نسبت به تغییرات بسیار حساسند. در واقع TDD متدی برای طراحی نرم افزار است نه تست آن. TDD ترکیبی از روش TFD (Test-First Development) و refactoring است. دو دیدگاه مختلف در مورد هدف استفاده از TDD وجود دارد: دیدگاه اول معتقد است که TDD روشی برای تمرکز بیشتر و بنیادی بر روی فاز طراحی می باشد. در واقع هدف اصلی آن استخراج هر بیشتر نیازمندی هاست و این کار را با کمک use case ها و user story ها انجام می دهد. دیدگاه دوم، TDD را یک روش برنامه نویسی می داند. در واقع TDD باعث می شود کد مرتبی نوشته شود که به خوبی کار می کند. البته هر دوی این دیدگاهها به نحوی صحیح هستند ولی دیدگاه اول طرفداران بیشتری دارد.

برای اجرای TDD نیاز به automated test unit می باشد. در واقع توسط آن تستها قبل از کد پیاده سازی می شود و هر تست true یا false بر می گرداند. این تست ها با تغییر کد و refactor شدن آن واکنش مناسبی نشان می دهند. xUnit یک چارچوب تستی مناسب برای ساخت و اجرای automated test unit ها به حساب می آیند. مثلا در تست زبان .NET از NUnit و در تست زبان JAVA از JUnit استفاده می شود.

چرخه ی TDD به صورت زیر می باشد:

1- اضافه کردن تست: در TDD هر بخش با نوشتن تست آغاز می شود. این تست باید رد شود زیرا هنوز پیاده سازی برایش نوشته نشده. برای نوشتن تست باید آگاهی کافی نسبت به نیازمندی ها داشته باشیم.

2- همه ی تست ها را اجرا کرده و چک کنیم که آیا تست جدید رد می شود؟ این بخش چک می کند که تستها به درستی عمل میکنند یا خیر و اینکه جدید بدون وجود کد اشتباها پذیرفته نشود.

3- نوشتن کد: حال یکسری کد می نویسیم به طوری که تست آن را بپذیرد. البته کد در این بخش چندان مرتب و تمیز نیست ولی در مراحل بعد باید آن را درست کرد.

4- اجرای تستها و پذیرفته شدن تمامی آنان: اگر همه ی مورد تستها پذیرفته شوند آنگاه می توان اطمینان یافت که کد همه ی نیازمندی ها را در بر دارد.

5- Refactoring کد: در این قسمت کد را مرتب می کنیم.مهمترین کار در اینجا حذف موارد تکراری است.

با شروع تست جدید چرخه دوباره انجام می شود. اندازه ی هر مرحله با توجه به خواسته ی developer متغییر می باشد.