Unit Testing برای توسعه دهندگان

جمعه 9 مهر 1395

امروزه Unit Testing ،در قسمت توسعه برنامه های نرم افزاری ، در حال رشد می باشد ، بنابراین میخواهیم بفهمیم که چرا یک توسعه دهنده باید Unit Test را انجام دهد و همچنین می خواهیم بدانیم که چگونه Unit Test برای توسعه دهندگان ، برای ارائه دادن کدهای با کیفیت و خالی از اشکال ، مفید خواهد بود.

Unit Testing برای توسعه دهندگان

Unit Testing  چیست ؟

 Unit Testing یک روش تست نرم افزار می باشد که توسط Source code های واحد و منحصر به فرد خودش، مجموعه ای از یک یا چند ماژول برنامه کامپیوتری همراه با داده های مرتبط کنترل ، روش های استفاده ، و روش های عملیاتی ، تست می شوند برای اینکه مشخص شود که آن ها برای استفاده مناسب هستند یا خیر.

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

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

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

چرا Unit Testing  را انجام می دهیم؟

داده های پروژه بیانگر این هستند که علی رغم پیشرفت ظاهری ، بسیاری از پروژه های نرم افزاری شکست می خورند و یا دیرتر از زمان موعد به اتمام می رسند و یا بیش از بودجه ی در نظر گرفته شده ، با توجه به عدم کیفیت و یا ادغام مسائل ،هزینه می شود.تیم های توسعه دهنده ی نرم افزاری ، باید برای ارائه نرم افزارهای مورد نیاز سازمان ها ،سریعا پاسخگو باشند.که نتیجه آن فقدان Unit Testing در فازهای اولیه ی پروژه می باشد.

حال می خواهیم مزایای مختلف Unit Test را  در فاز توسعه ی نرم افزار ، بررسی کنیم.

تحویل سریع کد:

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

کیفیت بالاتر کد:

معمولا تیم ها ،کد خود را با اشکالات زیادتری از آنچه که انتظار دارند منتشر می کنند که این کار منجر به یک چرخه ی طولانی و گران تر QA می شود  و در نهایت یک محصول با اشکالات زیادی به دست کاربر نهایی  می رسد. که در این کار در وهله ی اول   ،به جای ساخت نرم افزار بدون باگ ،تمرکز بیش ازحد برای تست کردن و حذف مشکلات ،بوده است.

انعطاف پذیری بیشتر:

برای بهبود بخشیدن به سیستم هایی که ارث بری کرده اند، بسیار آسیب پذیرتر و غیرانعطاف پذیرتر می باشند.

زمانی  شما یک فردی باهوش در تجارت  محسوب می شوید، که  از تغییر دادن کدی که تجارت شما به آن بستگی دارد ، نترسید.

چه کاری می توانید  برای نوشتن کدهای بهتر  و بهتر شدن کدهای نوشته شده (تا زمان تحویل پروژه کاهش یابد) انجام دهید؟

تنها پاسخی که می توان داد "Unit Testing " ، برای بالا بردن کیفیت کار ، و تحویل پروژه بدون باگ ، در وقت و هزینه برآورد شده ، مناسب است.

چگونه Unit Testing را انجام دهیم؟

Unit Test کدی می باشد که بر روی یک بخش خاص از کد شما که در بخش خاصی از Context می باشد ،اعمال می شود.معمولا ، هر Unit Test ، یک ورودی خاص به متد ارسال می کند و اطمینان حاصل می کند متد همان مقدار مورد انتظار را برگرداند و یا عملیات مورد انتظار را انجام دهد.

Unit Test ها اثبات می کنند که  کدی که شما  بر روی آن تست کرده اید در واقع همان کاری را انجام می دهد که مورد انتظار شما می باشد.

شما باید تلاش کنید که پوشش دهی Unit Test را  در برنامه تان افزایش دهید .هر خط کد حالت های بسیار زیادی برای تست و بررسی دارد.

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

حالت های مختلف از Testing:

سه حالت مختلف وجود دارد که که ممکن است شما در تست گرفتن ، آن ها را در نظر بگیرید.که به شرح زیر می‎باشد.

ورودی های مثبت

ورودی های منفی

0  ورودی

تست کردن با ورودی های مثبت و ورودی های منفی همانگونه که مورد انتظار می باشد رفتار می کند.تست کردن با 0 ورودی ، یک خطای عجیب یا یک exception مانند System.MathException  را به عنوان خروجی به شما نشان می دهد.

Unit Testing تنها شامل آن دسته از ویژگی هایی است که برای کارایی  واحد تحت تست مهم است. این کار توسعه دهندگان را تشویق می کند برای تغییر دادن Source Code  ، بدون نگرانی  این که  این تغییرات ممکن است عملکرد واحدهای دیگر و یا کل برنامه  را تحت تاثیر قرار دهد .

هنگامی که تمام واحدها در یک برنامه به صورت کارآمدترین و بدون خطای ممکن ، کار میکنند،اجزای(Component)  بزرگتر در برنامه می توانند با استفاده از تست های ادغام شده ، ارزیابی شوند.

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

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

آموزش سی شارپ

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 3 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید