آموزش Unit Testing بخش اول

آموزش Unit Testing بخش اول

unit testing

لزوم استفاده از Unit Testing :

فرض کنید پروژه ای  طراحی و پیاده سازی شده است ، اکنون به مرحله تست کردن میرسد . شرکت سازنده پروژه (اپلیکیشن تحت وب) به یک برنامه نویس خبره میگوید این برنامه تحت وب را تست کند . بعنوان مثال این برنامه نویس بعد از یک هفته می گوید این پروژه را تست کردم . در صورتی که ممکن است آنرا تست نکرده باشد و حتی در صورت تست کردن ، نداند و یا فراموش کند کدام بخشهای پروژه را تست کرده است .

حالا فرض کنید چند ماه بعد این پروژه توسعه داده می شود و یا تغییراتی در سیستم حال حاضر اعمال می شود . دوباره نوبت به تست آن میرسد . پس از رایزنی با برنامه نویس مذکور ، ایشان ۱۰ تا تست روی سیستم جدید انجام می دهد و دوباره نمی آید ۱۰۰ تا تست قبلی را نیز انجام دهد ( یا تست های قبلی را بخاطر ندارد و یا تنبلی می کند !)

رده بندی بخشها و افراد در سازمانها و شرکت های برنامه نویسی بزرگ دنیا (از لحاظ خبره بودن) بصورت زیر است :

  1. مدیر پروژه
  2. مدیر فنی
  3. تستر (فردی که سیستم را تست میکند)
  4. کارشناس درجه ۱
  5. کارشناس درجه ۲ و …..

 

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

 

مزیت Unit Testing :

اجازه می دهد که کد سی شارپی را بنویسید که کدهای سی شارپ (C#) پروژه شما را تست کند .

در صورت استفاده از Unit Testing ، این امکان وجود ندارد که فرد تستر به دروغ به آن شرکت بگوید که سیستم شما را تست کردم . زیرا مدارکی مبنی بر تست سیستم را از تستر می خواهد . و دیگر اینکه مشخص است کدام بخشهای پروژه را تست کرده ایم و یادمان نمیرود . و در نهایت اگر ۶ ماه دیگه ، پروژه دچار تغییراتی شود ، دیگر نیازی نیست تمام آن ۱۰۰ تست قبلی را نیز روی سیستم انجام دهیم . بلکه فقط کافیست مثلا ۱۰ تا تست مربوط به این تغییرات جدید را بنویسیم و اجرا کنیم . خود Unit Testing تمام ۱۱۰ تست را اجرا میکند .

آموزش هایی که در زمینه Unit Testing وجود دارد (چه بصورت فیلم چه کتاب)  اکثرا روی معماریهای مدرن مانند MVC  و یا MVVM پیاده سازی شده است . بنابراین این تصور اشتباه شکل میگیرد که قابلیت Unit Testing  فقط برای معماری های مدرن طراحی شده است . در صورتی که ما در این آموزش میخواهیم این قابلیت را روی بستر Windows Form پیاده سازی کنیم و آموزش دهیم .

نکته : البته شایان ذکر است که این قابلیت روی معماریهای مدرن که لایه بندی شده می باشد بهتر کار میکند . یعنی معماری هایی در آنها View با c# code و Business مجزا می باشند و مانند ASP.NET webform همه عناصر برنامه و وب سایت در دل هم نوشته نشده اند .

مبحث Unit Testing در دنیای برنامه نویسی تا حدی جدی و گسترده شده که در پروژه های حرفه ای و سنگین ، ابتدا تست برنامه نوشته می شود و سپس کد برنامه (TestFirst Pattern) . در صورتی که معمولا بدین گونه است که ابتدا برنامه نوشته شود و سپس تست آن انجام شود .

در مقاله بعد ، از فضای تئوری خارج می شویم و با هم یک پروژه جدید ایجاد خواهیم کرد و unit testing را عملا شروع می کنیم . با ما باشید …wink


تاریخ انتشار : ۱۰ اسفند ۱۳۹۴



دیدگاه ها :