خوش آمديد!
15:52 سه شنبه 2 خرداد ماه ، 1391
تبلیغات راست
پکیج آموزش جامع دوره مهندسی شبکه مایکروسافت MCSE
خبر خوان

خبر خوان

دسته بندی مقالات
وب
  مقالات HTML
  مقالات PHP
  مقالات ASP.NET
  مقالات CSS
  مقالات XML
  مقالات JavaScript
  مقالات CMS
  مقالات Dreamweaver
  مقالات ColdFusion
  مقالات IIS
  مقالات Apache
  مقالات AJAX
  مقالات Flex
  مقالات AIR
  مقالات Expression Web
  مقالات SEO
  مقالات عمومی وب
برنامه نویسی
  مقالات C / C++
  مقالات C#
  مقالات VB.NET
  مقالات VB6
  مقالات دلفی
  مقالات VbScript
  مقالات اکشن اسکریپت
  مقالات Python
  مقالات سیلور لایت
  مقالات عمومی برنامه نویسی
سخت افزار
  مقالات CPU
  مقالات RAM
  مقالات دیسک سخت
  مقالات MainBoard
  مقالات کیبورد
  مقالات کارت گرافیک
  مقالات چاپگر
  مقالات عمومی سخت افزار
سیستم عامل
  مقالات ویندوز سون
  مقالات ویندوز ویستا
  مقالات ویندوز XP
  مقالات لینوکس
  مقالات سیستم عامل مک
  مقالات عمومی سیستم عامل
گرافیک دو بعدی
  مقالات فتوشاپ
  مقالات Illustrator
  مقالات Corel
  مقالات Painter
  مقالات QuarkXpress
  مقالات InDesign
  مقالات Fireworks
  مقالات Lightroom
  مقالات Bridge
  مقالات آکروبات
  مقالات فلش
  مقالات Expression Medial
  مقالات Expression Blend
  مقالات عمومی گرافیک دو بعدی
گرافیک سه بعدی و انیمیشن سازی
  مقالات تردی مکس
  مقالات مایا
  مقالات اتوکد
  مقالات عمومی گرافیک سه بعدی
میکس و مونتاژ
  مقالات After Effects
  مقالات پرمیر
  مقالات ادیوس
  مقالات SoundBooth
  مقالات Apple Reason
  مقالات Corel Video Studio
  مقالات Audition
  مقالات Pro Tools
  مقالات FLStudio
  مقالات SoundFordge
  مقالات عمومی ویرایش صوت و فیلم
پایگاه داده
  مقالات SQL Server
  مقالات اکسس
  مقالات MySQL
  مقالات اراکل
  مقالات عمومی پایگاه داده
شبکه
  مقالات اکسچنج سرور
  مقالات SharePoint Server
  مقالات ویندوز سرور 2003
  مقالات ویندوز سرور 2008
  مقالات ISA Server
  مقالات VMware
  مقالات MS Virtualization
  مقالات MCSE
  مقالات MCITP
  مقالات CCNA
  مقالات CCNP
  مقالات CCIE
  مقالات مایکروسافت System Center
  مقالات Wireless
  مقالات Wi-Fi
  مقالات WiMax
  مقالات Citrix
  مقالات DSL
  مقالات BizTalk
  مقالات Commerce Server
  مقالات Forefront
  مقالات Groove
  مقالات Communication Server
  مقالات Project Server
  مقالات Storage Server
  مقالات امنیت شبکه
  مقالات VoIP
  مقالات عمومی شبکه
آفیس و برنامه های تجاری
  مقالات Word
  مقالات Excel
  مقالات Access
  مقالات PowerPoint
  مقالات Visio
  مقالات OneNote
  مقالات Publisher
  مقالات Outlook
  مقالات Amalga
  مقالات Dynamics AX
  مقالات Dynamics CRM
  مقالات Dynamics GP
  مقالات Dynamics NAV
  مقالات Dynamics POS
  مقالات Dynamics RMS
  مقالات Dynamics SL
  مقالات عمومی آفیس و برنامه های تجاری

بررسي ميزان پوشش آزمون های واحد به كمك برنامه PartCover

بررسي ميزان پوشش آزمون‌هاي واحد به كمك برنامه PartCover

هميشه در حين توسعه‌ي يك برنامه اين سؤالات وجود دارند:
- چند درصد از برنامه تست شده است؟
- براي چه تعدادي از متدهاي موجود آزمون واحد نوشته‌ايم؟
- آيا همين آزمون‌هاي واحد نوشته شده و موجود، كامل هستند و تمام عملكرد‌هاي متدهاي مرتبط را پوشش مي‌دهند؟

اين سؤالات به صورت خلاصه مفهوم
Code coverage را در بحث Unit testing ارائه مي‌دهند: براي چه قسمت‌هايي از برنامه آزمون واحد ننوشته‌ايم و ميزان پوشش برنامه توسط آزمون‌هاي واحد موجود تا چه حدي است؟
بررسي اين سؤالات در يك پروژه‌ي كم حجم، ساده بوده و به صورت بازبيني بصري ممكن است. اما در يك پروژه‌ي بزرگ نياز به ابزار دارد. به همين منظور تعدادي برنامه جهت بررسي code coverage مختص پروژه‌هاي دات نتي تابحال توليد شده‌اند كه در ادامه ليست آن‌ها را مشاهده مي‌كنيد:

و ...

 



تمام اين‌ها تجاري هستند. اما در اين بين برنامه‌ي PartCover سورس باز و رايگان بوده و همچنين مختص به NUnit نيز تهيه شده است. اين برنامه را از اينجا مي‌توانيد دريافت و نصب كنيد. در ادامه نحوه‌ي تنظيم آن‌را بررسي خواهيم كرد:

الف) ايجاد يك پروژه آزمون واحد جديد
جهت توضيح بهتر سه سؤال مطرح شده در ابتداي اين مطلب، بهتر است يك مثال ساده را در اين زمينه مرور نمائيم: (پيشنياز: (
+))
يك Solution جديد در VS.NET آغاز شده و سپس دو پروژه جديد از نوع‌هاي كنسول و Class library به آن اضافه شده‌اند:

بررسي ميزان پوشش آزمون‌هاي واحد به كمك برنامه PartCover



پروژه كنسول، برنامه اصلي است و در پروژه Class library ، آزمون‌هاي واحد برنامه را خواهيم نوشت.
كلاس اصلي برنامه كنسول به شرح زير است:

 
  1. namespace TestPartCover  
  2. {  
  3. public class Foo  
  4. {  
  5.     public int DoFoo(int x, int y)  
  6.     {  
  7.         int z = 0;  
  8.         if ((x > 0) && (y > 0))  
  9.         {  
  10.             z = x;  
  11.         }  
  12.         return z;  
  13.     }  
  14.   
  15.     public int DoSum(int x)  
  16.     {  
  17.         return ++x;  
  18.     }  
  19. }  
  20. }  
 

و كلاس آزمون واحد آن در پروژه class library مثلا به صورت زير خواهد بود:

 
  1. using NUnit.Framework;  
  2.   
  3. namespace TestPartCover.Tests  
  4. {  
  5. [TestFixture]  
  6. public class Tests  
  7. {  
  8.     [Test]  
  9.     public void TestDoFoo()  
  10.     {  
  11.         var result = new Foo().DoFoo(-1, 2);  
  12.         Assert.That(result == 0);  
  13.     }  
  14. }  
  15. }  

كه نتيجه‌ي بررسي آن توسط NUnit test runner به شكل زير خواهد بود:

بررسي ميزان پوشش آزمون‌هاي واحد به كمك برنامه PartCover



به نظر همه چيز خوب است! اما آيا واقعا اين آزمون كافي است؟!

ب) در ادامه به كمك برنامه‌ي PartCover مي‌خواهيم بررسي كنيم ميزان پوشش آزمون‌هاي واحد نوشته شده تا چه حدي است؟

پس از نصب برنامه، فايل PartCover.Browser.exe را اجرا كرده و سپس از منوي فايل، گزينه‌ي Run Target را انتخاب كنيد تا صفحه‌ي زير ظاهر شود:

بررسي ميزان پوشش آزمون‌هاي واحد به كمك برنامه PartCover



توضيحات:
در قسمت executable file آدرس فايل nunit-console.exe را وارد كنيد. اين برنامه چون در حال حاضر براي دات نت 2 كامپايل شده امكان بارگذاري dll هاي دات نت 4 را ندارد. به همين منظور فايل nunit-console.exe.config را باز كرده و تنظيمات زير را به آن اعمال كنيد (مهم!):

 
  1. <configuration>  
  2. <startup>  
  3. <supportedRuntime version="v4.0.30319" />  
  4. </startup>  

و همچنين
 
  1. <runtime>  
  2. <loadFromRemoteSources enabled="true" />  
 


در ادامه مقابل working directory‌ ، آدرس پوشه bin پروژه unit test را تنظيم كنيد.
در اين حالت working arguments به صورت زير خواهند بود (در غيراينصورت بايد مسير كامل را وارد نمائيد):

 
  1. TestPartCover.Tests.dll /framework=4.0.30319 /noshadow  

 

نام dll‌ وارد شده همان فايل class library توليدي است. آرگومان بعدي مشخص مي‌كند كه قصد داريم يك پروژه‌ي دات نت 4 را توسط NUnit بررسي كنيم (اگر ذكر نشود پيش فرض آن دات نت 2 خواهد بود و نمي‌تواند اسمبلي‌هاي دات نت 4 را بارگذاري كند). منظور از noshadow اين است كه NUnit‌ مجاز به توليد shadow copies از اسمبلي‌هاي مورد آزمايش نيست. به اين صورت برنامه‌ي PartCover مي‌تواند بر اساس StackTrace نهايي، سورس متناظر با قسمت‌هاي مختلف را نمايش دهد.
اكنون نوبت به تنظيم Rules آن است كه يك سري RegEx هستند؛ به عبارتي چه اسمبلي‌هايي آزمايش شوند و كدام‌ها خير:
 

  1. +[TestPartCover]*  
  2. -[nunit*]*  
  3. -[log4net*]*  

همانطور كه ملاحظه مي‌كنيد در اينجا از اسمبلي‌هاي NUnit و log4net صرفنظر شده است و تنها اسمبلي TestPartCover (همان برنامه كنسول، نه اسمبلي برنامه آزمون واحد) بررسي خواهد گرديد.
اكنون بر روي دكمه Save در اين صفحه كليك كرده و فايل نهايي را ذخيره كنيد (بعدا توسط دكمه Load در همين صفحه قابل بارگذاري خواهد بود). حاصل بايد به صورت زير باشد:

 
  1. <PartCoverSettings>  
  2. <Target>D:ProgLibsNUnitbinnet-2.0nunit-console.exe</Target>  
  3. <TargetWorkDir>D:Prog1390TestPartCoverTestPartCover.TestsbinDebug</TargetWorkDir>  
  4. <TargetArgs>TestPartCover.Tests.dll /framework=4.0.30319 /noshadow</TargetArgs>  
  5. <Rule>+[TestPartCover]*</Rule>  
  6. <Rule>-[nunit*]*</Rule>  
  7. <Rule>-[log4net*]*</Rule>  
  8. </PartCoverSettings>  

براي شروع به بررسي، بر روي دكمه Start كليك نمائيد. پس از مدتي، نتيجه به صورت زير خواهد بود:

بررسي ميزان پوشش آزمون‌هاي واحد به كمك برنامه PartCover



بله! آزمون واحد تهيه شده تنها 39 درصد اسمبلي TestPartCover را پوشش داده است. مواردي كه با صفر درصد مشخص شده‌اند، يعني فاقد آزمون واحد هستند و نكته مهم‌تر پوشش 91 درصدي متد DoFoo است. براي اينكه علت را مشاهده كنيد از منوي View ، گزينه‌ي Coverage detail را انتخاب كنيد تا تصوير زير نمايان شود:

بررسي ميزان پوشش آزمون‌هاي واحد به كمك برنامه PartCover

 

 

 

 

 

 

 

 

 

 

 

قسمت‌ نارنجي در اينجا به معناي عدم پوشش آن در متد TestDoFoo تهيه شده است. تنها قسمت‌هاي سبز را توانسته‌ايم پوشش دهيم و براي بررسي تمام شرط‌هاي اين متد نياز به آزمون‌هاي واحد بيشتري مي‌باشد.

روش نهايي كار نيز به همين صورت است. ابتدا آزمون واحد تهيه مي‌شود. سپس ميزان پوشش آن بررسي شده و در ادامه سعي خواهيم كرد تا اين درصد را افزايش دهيم.



ارسال شده در مورخه : سه شنبه، 30 فروردين ماه ، 1390   چاپ مطلب

آموزش مایا ، آموزش Maya


مرتبط با موضوع :

 ذخیره سازی اطلاعات در VB.NET  [سه شنبه، 31 فروردين ماه ، 1389]
 آشنایی با طراحی Microsoft .NET Framework  [چهارشنبه، 28 بهمن ماه ، 1388]
 معرفي افزونه هاي مفيد در ويژوال استوديو  [سه شنبه، 13 بهمن ماه ، 1388]
 آموزش VB.NET - بخش سوم  [يكشنبه، 17 آبان ماه ، 1388]
 آموزش VB.NET - بخش دوم  [يكشنبه، 17 آبان ماه ، 1388]


تبلیغات چپ
پکیج Windows Server 2008 MCITP Enterprise Administ
آخرین مقالات
· ۱۴ تغییراتی احتمالی که در iPhone 5 خواهید دید!
· روشهایی برای افزایش عمر باتری موبایل
· p1000 پرفروش ترین تبلت سامسونگ
· خالی کردن فضای هارد دیسک
· ۷ دلیل برای خرید مطمئن سامسونگ Galaxy Note
· معرفی لایف بوک ها ویژگی های مربوط به آنها
· معرفی ۱۰ فناوری برتر ماه گذشته در عرصه آی تی
· معرفی دلایلی برای خرید گوشی با قابلیت ویندوز فون
· SCX-4729FD چاپگر چندکاره سامسونگ
· تعریف سیستم عامل اندروید و مهمترین ویژگی های آن
· لپ تاپ های Samsung Series 7 Game 3D
· پرطرفدارترین موبایل های هوشمند تا بهار ۲۰۱۲
· Sony Unveila Xperia Sola و صفحه نمایش شناور
· کنترل دستگاه اندرویدی توسط دسکتاپ
· 10 تبلت برتر بهار سال 2012
· Optimus 3D Max دومین گوشی سه بعدی ال جی به عنوان محصولی بی همتا
· G6-1160EE لپ تاپ باقابلیت و پرمخاطب HP
· راه های افزایش امنیت در اینترنت
· آموزش مراحل پاک کردن آرشیو یاهو مسنجر
· مانیتورهایی مخصوص بازی های ویدئویی و گیمرها
· نکات مهم در مورد سرچ گوگل
· معرفی بهترین تبلت های بازار از نظر کیفیت نمایشگر
· معرفی رایانه ها و تبلت های سازگار با ویندوز ۸
· ویژگی های Galaxy note 10.1 شرکت سامسونگ
· مهمترین دلایل خرابی سریع لپ تاپ ها

[ موارد بیشتر در بخش اخبار و تازه ها ]
پربیننده ترین مقالات
· استاندارد های ISO/IEC 17799 و BS7799-2
· توصیه های مهم امنیتی در مورد لینوکس و یونیکس
· گرما در cpuها
· معماری client/Server در اینترنت
· آشنایی با سیستم فایل GNU/Linux
· یک MAC BOOK PRO جدید در بازار ایران
· معرفی دو مدل لپ تاپ با قابلیت سونی سری F
· F137HG/B، لپ تاپ سایز بزرگ سونی در بازار داخلی
· اندر احوالات کرک و کپی رایت
· EE31FX/BJ، لپ تاپ ارزان قیمت سونی در بازار داخلی
· معرفی z216 FX/L از لپ تاپ های سونی
· مدل MD313LL/A ، Macbook ارزان قیمت در بازار داخل
· تاریخچه کامپیوتر
· مشاهده آنلاین سوابق بیمه شدگان
· چگونگی اختصاص دادن یک آدرس IP استاتیک به یک رایانه در شبکه در ویندوز Xp ، Vista یا Seven
· آشنایی با روتر و سوئیچ(router and switch)
· الگوریتم های مرتب سازی آرایه ها
· تاریخچه ی پیدایش زبان های برنامه نویسی شی گرا
· GPS چیست؟
· به روز رسانی ویندوز 7 با نرم افزار Windows Update
· پایگاه داده های سیار Mobile database
· بازیابی رمز عبور در ویندوز 7
· معماری سرویس گرا Service Oriented Architecture چیست؟
· انتقال اطلاعات با Replication در SQL Server
· آموزش نرم افزار Virtual Box

[ موارد بیشتر در بخش اخبار و تازه ها ]
مقالات تصادفی
· راز موفقیت شرکت سونی
· نگاهی به بازی Forza Motorsport 3
· در دات نت : ایجاد یک فایل XML
· Explorer 8 محبوبترین شد
· ابداع چاپگری که پوست چاپ می کند!
· چه گوشیهایی آپدیت اندروید ۴٫۰ را دریافت خواهند کرد ؟
· یخچال ژله ای
· IFA 2011: ال جی از مانیتورهای فوق العاده باریک و زیبای خود پرده بردای می کند
· معرفی نوت بوکی برای مردان تجارت
· 12 ابزار مختلف برای تحت نظر گرفتن رسانه های اجتماعی
· انتقال اطلاعات با Replication در SQL Server
· الگوهای تجارت الکترونیک
· استفاده از متا تگ های توضیحی meta description
· مدل D9 uk عنوان محبوبترین دوربین نیکون نزد عکاسان حرفه ای
· شوخي هاي مزاحم در email
· CES 2012: با دوربین فیلم برداری ضد آب پاناسونیک HX-WA2، ویدئوهای فوق العاده خلق کنید
· آموزش ساخت جعبه مقوایی حاوی آیکون در فتوشاپ
· Ipad ، فراتر از يك كتابخوان
· ماوسی که روی هوا کار می‌کند!
· 5 لپ تاپ برتر از نگاه Cnet
· فرق لینوکس با ویندوز
· معرفی نسخه Ice Cream Sandwich سیستم عامل اندروید
· نرم افزار تبدیل آی فون به جعبه سیاه خودرو!
· چگونگی کسب درآمد هکرها
· کنسرتی با موبایل

[ موارد بیشتر در بخش اخبار و تازه ها ]
امتیاز دهی به مطلب
امتیاز متوسط : 0
تعداد آراء: 0

لطفا رای مورد نظرتان را در مورد این مطلب ارائه نمائید :

عالی
خیلی خوب
خوب
متوسط
بد

آموزش Exchange