Download presentation
Presentation is loading. Please wait.
Published byΚαλλίστη Ζερβός Modified over 6 years ago
1
طه ما انزلنا علیک القرآن لتشغی الا تذکره لمن یخشی
2
Test Driven Development (T. D. D.)
Zohreh Mafi
3
فهرست مزایای TDD مقدمه معایبTDD انواع روشهای آزمون
الگوسازی مقدمه معایبTDD انواع روشهای آزمون مروری بر کارهای پیشین معرفی TDD مقالات تحلیلی خودکارسازی آزمون بازآرایی ترکیب با روش های صوری XP گسترشهای تولید آزمونرانه ابزارهای TDD ارائه مثال
4
مقدمه یکی از مهمترین مراحل در فرآیند تولید نرمافزار، آزمون نرمافزار است. روشهای مختلفی برای آزمون ارائه شده است و درصد قابل توجهی از کل بودجه پروژههای نرمافزاری صرف آزمون میگردد. آزمون پس از تولید (سنتی) تولید و نوشتن آزمون به طور همزمان اول آزمون سپس کد برنامه (نوین) کنترل کیفیت محصول که در روشهای سنتی تولید نرمافزار به صورت آزمون پس از تولید انجام میپذیرد، علاوه بر هزینه بالا، ممکن است منجر به تولید محصولی شود که مورد پذیرش مشتری نباشد. از اینرو متدولوژیXP پیشنهاد داد که ابتدا کد آزمون نوشته شود و سپس کدهای برنامه برای قبول شدن آنها اضافه گردند. 1 2 3
5
انواع روش های آزمون
6
معرفیTDD (تولید آزمونرانه)
ایده اصلی این روش بر مبنای ایده XP یا تولید اول آزمون است. بر اساس تعریف اسکات امبلر، توسعهی آزمونرانه یک روش تولید نرمافزار است که در آن ایدهی ساختن آزمونها پیش از تولید کد اصلی با روش بازآرایی کد تلفیق میشود مهمترین اصل این روش تولید نرمافزار این است که "اول آزمون را بنویس بعد کدی بنویس که آنرا از سر بگذراند ".
7
معرفیTDD (تولید آزمونرانه)
تست سایت تست سایت معرفیTDD (تولید آزمونرانه) XP Refactoring TDD
8
بازآرایی ایده اصلی بازآرایی در پایان نامه دکترای اپدیک در سال 92 ارائه گردید و در سال 99 به همراه فولر تکمیل شد. هدف کلی بازآرایی بهبود طراحی نرمافزار و همچنین بهبود ساختار کد برنامه است. فولر روش برنامهنویسی بازآرایی را به عنوان یک روش منظم برای بازسازی کد معرفی میکند. ایده اصلی این روش این است که تغییرات کوچکی در کد داده شود تا هم طراحی بهبود یابد وهم درک برنامه سادهتر صورت گیرد. در نتیجه ایجاد تغییرات بعدی در آن نیز سادهتر میشود. همچنین به برنامهنویس کمک میکند تا با یک رویکرد تکرارشونده و افزایشی در برنامهنویسی به مرورکد خود را تکامل دهد.
9
معمولا در زمانهای ذیل عمل بازآرایی انجام میشود:
هنگام آمادهسازی سیستم برای اضافه کردن یک تابع جدید برای جلوگیری از نگرانی از تأثیر ویژگی جدید بر روی سایر ویژگیها. بعد از اضافه کردن یک تابع جدید برای درک بهتر کد برنامه و تمیز شدن کد. هنگام برطرف کردن یک خطا. در دورههای زمانی مشخص برای بازبینی کد در برخی سازمانها.
10
مزایای بازآرایی از بین رفتن کلاسها و متغیرهای بیهوده و بلااستفاده
از بین رفتن کلاسها و متغیرهای بیهوده و بلااستفاده رفع ابهام کدهای نامشخص سادهسازی عبارات منطقی پیچیده به طور کلی بازآرایی باعث بهبود در طراحی نرمافزار و همچنین تسهیل درک نرمافزار میشود. وقتی درک نرمافزار سادهتر شود، پیدا کردن خطاهای آن هم سادهتر خواهد شد. بنابراین این روش باعث تسریع در فرآیند توسعه نرمافزار خواهد بود.
11
متدولوژی XP از نظر بک، فرآیند XP به شش فاز اصلی تقسیم میشود:
فاز اول، شناسایی، مشتری شرح برنامههای سیستم را مینویسد. فاز دوم، فاز طرح ریزی شرحهای نوشته شده اولویتبندی میشوند و برنامه زمانی برای ارائهی نسخه اول برنامه تولید میشود. فاز سوم، iterations to release، معماری سیستم ایجاد میگردد که شامل آزمونهای پیوسته و تجمیع کد است. فاز چهارم، فاز تولید است. قبل از نهایی کردن سیستم لازم است که تولیدکنندگان نرمافزار، آزمونهای اضافه در این فاز داشته باشند. فاز پنجم، فاز نگهداری، هر پیشنهادی در مورد سیستم برای پیادهسازی نسخههای بعدی مستند میشود. فاز ششم، فاز پایانی، زمانی است که هیچ یک از شرحهای کاربری بدون پاسخ باقی نمانده باشد و کاربر تغییر جدیدی در سیستم ایجاد نکرده باشد.
12
آزمون واحد یكی از مهمترین اجزاء روش XP است
آزمون واحد، آزمونی است که یک نیاز مشخص برای یک متد مشخص را آزمایش میکند و اگر درست پیادهسازی شود در قانون "یک نیاز/ یک متد" میگنجد هدفگیری شده ایزوله شده قابل تکرار و پیش بینی مستقل از ترتیب اجرا
13
تاریخچه TDD مفاهیم مدل آزمونرانه برای بار اول توسط بک در سال و بعد از آن 2003 بررسی شده است. کتاب معروفی از این روش در سال 2008 توسط اسکات امبلر ارائه شد.
14
چرخه سه مرحلهای تولید آزمونرانه
15
نمودار عملکرد روش تولید آزمونرانه
16
ابزارهای متدولوژی تولید آزمونرانه
نام ابزار زبانهای مورد استفاده رایگان Mock آزمون واحد آزمون تجمعی آدرس سایت اینترنتی cpputest C/C++ csUnit زبانها ی Net. CUnit DUnit Delphi DBFit Oracle, SQL Server, MySQL, PostgreSQLHS QLDB, Derby, DB2
17
نام ابزار زبانهای مورد استفاده رایگان آزمون واحد آزمون تجمعی
زبانهای مورد استفاده رایگان Mock آزمون واحد آزمون تجمعی آدرس سایت اینترنتی DBUnit Data Base DocTest Python Googlete st C/C++ HTMLUnit HTML HTTPUnit Moq NDbUnit NUnit .Net OUnit PHPUnit PHP PyUnit
18
ارائه مثال از کارکرد تولید آزمون رانه
در این قسمت هدف نوشتن برنامه به روش تولید آزمونرانه است. این مثال با استفاده از ابزار NUnit نوشته شده است. صورت مساله نوشتن برنامهای است که نتیجه یک عدد صحیح به توان عدد صحیح نامنفی دیگری را محاسبه کند. کد آزمون این برنامه بدین صورت است:
19
[TestFixture] public class PowerClassTest { [Test] public void PowerMethodTest() { var powerClass = new PowerClass(); var result = powerClass.Power(0, 1); Assert.AreEqual(result, 0); } 1 2 3 4 5 6 7 8 9 10 11
20
1 2 3 4 5 6 public class PowerClass { public int power (int a , int b) }
21
1 2 3 4 5 6 7 public class PowerClass { public int power (int a , int b) return 0; }
22
1 2 3 4 5 6 7 8 9 10 11 [TestFixture] public class PowerClassTest { [Test] public void PowerMethodTest() { var powerClass = new PowerClass(); var result = PowerClass.power(1, 0); Assert.AreEqual(result, 1); } }
23
1 2 3 4 5 6 7 public class PowerClass { public int power (int a , int b) return a; }
24
1 2 3 4 5 6 7 8 9 10 11 [TestFixture] public class PowerClassTest { [Test] public void PowerMethodTest() { var powerClass = new PowerClass(); var result = PowerClass.power(2, 2); Assert.AreEqual(result, 4); } }
25
1 2 3 4 5 6 7 8 public class PowerClass { public int power (int a , int b) If(b==2) return (a*a); else return a; }
26
1 2 3 4 5 6 7 8 9 10 11 [TestFixture] public class PowerClassTest { [Test] public void PowerMethodTest() { var powerClass = new PowerClass(); var result = PowerClass.power(2, 10); Assert.AreEqual(result, 1024); } }
27
1 2 3 4 5 6 7 8 9 10 public class PowerClass { public int power (int a , int b) int p = 1; for (int i = 1; i <= b; i++) p *= a; return p; }
28
1 2 3 4 5 6 7 8 9 10 11 public void PowerMethodTest() { var powerClass = new PowerClass(); var result = PowerClass.power(0, 0); string Output; var w = new System.IO.StringWriter(); Console.SetOut(w); Output = w.GetStringBuilder().ToString().Trim(); Assert.AreEqual("DOMAIN Error", Output); Assert.AreEqual(result, 1); }
29
1 2 3 4 5 6 7 8 9 10 11 12 13 public class PowerClass { public int power (int a , int b) int p = 1; for (int i = 1; i <= b; i++) p *= a; if (((a==0)&&(b==0)||(b<0)) cout<<”Domain Error”; } return p;
30
الگوهای تولید آزمونرانه
قانون تبدیل توضیح ترت یب ({} → nil) از هیچ کد، کدی بنویسد که برای nil پاسخ دهد. 1 (nil → constant) از nil به مقدار ثابت تبدیل کند. 2 (constant → constant+) یک مقدار ثابت را به مقدار ثابت پیچیدهتری تبدیل کند. 3 (constant → scalar) یک مقدار ثابت را به یک اسکالر (متغیر یا آرگومان) تبدیل کند. 4 (statement → statements) دستورات غیرشرطی دیگر اضافه شود. 5
31
الگوهای تولید آزمونرانه
قانون تبدیل توضیح ترت یب (unconditional → if) مسیرهای اجرایی جدا شوند. 6 (scalar → array) تک مقدار به آرایه تبدیل شود. 7 (array → container) آرایه به container تبدیل شود. 8 (statement → tail-recursion) دستور به تابع بازگشتی tail تبدیل شود. 9 (if → while) دستور if به حالت کلیتر while تبدیل شود. 10
32
الگوهای تولید آزمونرانه
قانون تبدیل توضیح ترت یب (statement → non-tail- recursion) دستور به تابع بازگشتی non- tail تبدیل شود. 11 (expression → function) یک عبارت با یک تابع یا الگوریتم جایگزین شود. 12 (variable → assignment) مقدار یک متغیر تغییر داده شود. 13 (case) adding a case (or else) to an existing switch or if به یک دستور switch حالت دیگری اضافه شود یا به دستور if قسمت else اضافه گردد. 14
33
مزایای استفاده از متدولوژی تولید آزمونرانه
به طور کلی متدولوژی تولید آزمونرانه، دو فرضیه اصلی دارد: فرضیه اول اینکه فرآیند تولید با این روش طولانیتر است و فرضیه دوم اینکه کیفیت کد محصول تولیدی بالاتر است. تحقیقات و مدلهای اقتصادی ارائه شده نیز، نشان میدهد که بکارگیری آن به صرفه است و بازگشت سرمایه و زمان اولیه را در پی دارد
34
مزایای استفاده از متدولوژی تولید آزمونرانه
کد کم حجمتر: طراحی بهتر: تطبیق کامل کد با نیازمندی مشتری: طراحی کتابخانههای سادهتر و متمرکزتر:. تقویت ارتباط بین برنامه ساز و کاربر: بیرون نگهداشتن کدهای بدون استفاده از برنامه:
35
مزایای استفاده از متدولوژی تولید آزمونرانه
امکان آزمون رگرسیون: پیشگیری از بروز خطاهای تکراری: معماری باکیفیت با امکان توسعهپذیری و تغییرپذیری تولید خطای کمترکه خود باعث افزایش اعتماد کاربران نسبت به برنامه میشود. کاهش نقص کاهش زمان کل موردنیاز برای تولید و آزمون نرمافزار
36
مزایای استفاده از متدولوژی تولید آزمونرانه
کاهش زمان تولید نرمافزار به علت خطای کمتر. نظم در کد کد زیباتر انعطاف پذیری بیشتر هماهنگی مستندات نرمافزار با کد
37
مشکلات استفاده از متدولوژی تولید آزمونرانه
با وجود مزایایی که برای تولید آزمونرانه مطرح شده است، این روش هم عاری از عیب نیست. مشکل اولیه این روش عادتهای برنامهنویسی است. تغییر نگرش و تغییر مدل تولید برنامه اولین اشکال این روش است و مدتی طول میکشد تا بتوان با این روش سازگار شد. اما پس از سازگاری با این روش این مشکل قابل چشمپوشی است. از اینرو در ادامه سایر مشکلات مطرح میگردد
38
مشکلات استفاده از متدولوژی تولید آزمونرانه
آزمونها بیشتر برای توسعه دهندگان قابل درک هستند تا افراد مشتری کامل نبودن نیازمندیهای توصیف شده در قالب موارد آزمون و ایجاد شکاف میان نیازمندیها و محصول تولید شده (که منجر به شکست آزمون پذیرش نرمافزار خواهد شد.) ریزدانگی گامهای فرآیند، عدم وجود یک دید کل نگر در طی فرآیند تولید نرمافزار. مزایای خودکارسازی آزمون را نمیتوان در اولین انتشار از پروژه بدست آورد
39
مشکلات استفاده از متدولوژی تولید آزمونرانه
زمانگیر بودن فرآیند تولید دستی موارد آزمون. از این رو بکارگیری این روش بدون استفاده از روشهای خودکارسازی آزمون کارایی لازم را نخواهد داشت. عدم وجود الگوی مشخص برای تولید و انتخاب موارد آزمون. مشکلات دیگر این روش مربوط به چگونگی بکارگیری مفاهیم روش شیءگرا است.
40
مروری بر کارهای پیشین مقالات مرتبط با موضوع تولید نرمافزار آزمونرانه، به طور کلی به پنج دسته اصلی تقسیم می شوند: مقالات تحلیلی خودکارسازی آزمون ترکیب با روش های صوری گسترشهای تولید آزمونرانه الگوسازی
41
مقالات تحلیلی این دسته از مقالات به ارزیابی کلیات روش تولید نرمافزار آزمونرانه پرداخته است. ضمن بکارگیری این روش در یک پروژهی صنعتی یا دانشگاهی، به تحلیل، ارزیابی و بررسی مزایا و معایب آن نسبت به روش سنتی اول آزمون پرداختهاند. همچنین با تهیه آمارهای دقیق به مقایسه پارامترهای ارزیابی روش آزمونرانه با سایر روشهای تولید نرمافزار پرداخته شده است و پارامترهای موثر در آن مورد بررسی قرار گرفته است.
42
خودکارسازی بخش دوم مقالات، آنهایی هستند که به طورکلی به دنبال خودکارسازی بخشی از فرآیند تولید آزمونرانه بودهاند. منظور از خودکارسازی در برخی از مقالات، تولید خودکار موارد آزمون و در برخی دیگر اجرای خودکار آزمونهای دستی تولید شده در طول فرآیند تولید نرمافزار است.
43
ترکیب روش تولید آزمونرانه با روشهای صوری
بخش سوم از مقالات، روش تولید آزمونرانه را با روشهای صوری ترکیب کردهاند. برخی از این مقالات، با استفاده از توصیفهای صوری، عمل خودکارسازی انجام میدهند. بدین صورت که توصیف را به آزمون تبدیل مینمایند و با اثباتهای ریاضی سعی در بیان نقاط ضعف و قوت این روشها دارند و گاهی این کار هم به همراه ارائه ابزار برای خودکارسازی فرآیند آزمون انجام شده است.
44
گسترشهای روش تولید آزمونرانه
بخش چهارم از مقالات، گسترشهای روش تولید آزمونرانه هستند. در این دسته از مقالات، معماری یا مدل جدیدی بر پایه روش آزمونرانه ارائه شده است. بدین صورت که باترکیب روش آزمونرانه با سایر روشهای تولید برنامه، سعی در برطرف نمودن معایب این روش و استفاده حداکثری از مزایای آن داشتهاند
45
الگوسازی برای روش تولید آزمونرانه
بخش پنجم، مقالاتی است که در زمینه الگوسازی برای روش تولید آزمونرانه مطرح شده است. ازآنجا که این روش، خود بر پایهی دو متدولوژی XP و بازآیی مطرح شده است، الگوهای پیشنهادی برای این دو متدولوژی در این روش هم کاربردی است. منظور از الگو، آن دسته از الگوهاست که به طور خاص برای روش آزمونرانه پیشنهاد شدهاند.
46
پایان بخش اول
47
مروری بر مقالات تحلیلی
48
در تحقیق انجام شده توسط ماتیاس مولر و اندریس هوفر در سال2007، تاثیر میزان خبرگی گروه برنامهنویسی در روش آزمونرانه بررسی شده است در طرح دیگری که درشرکت مایکروسافت پیادهسازی شد، مشخص شد که زمان لازم در روش تولید آزمونرانه بیشتر از روش سنتی است. اما کیفیت محصول بیش از دو برابر نسبت به روش سنتی افزایش یافته است. مادیسکی در سال 2009 خلاصهای از مطالعات تجربی انجام شده در دو حوزه صنعت و دانشگاه در زمینه روش تولید آزمونرانه فراهم نموده است. نتیچه: این روش نرخ نقص و نرخ خطا و هزینهی تولید، عیبیابی و نگهداری را کاهش میدهد. سرعت تولید در کارهای جدیدتر بالاتر رفته است و اینکه نسبت زمان مصرفی برای کارهای کنشگر مانند نوشتن کد برنامه بیشتر از کارهای کنشپذیر مانند خواندن کد و پیدا کردن خطا است.
49
وجود معیارهای قابل اندازهگیری که بتواند این روش را بدون دخالت سایر پارامترها از جمله میزان خبرگی تولیدکنندگان بسنجد، بسیار ضروری به نظر میرسد. مادیسکی یک مدل مفهومی برای تعریف این متغیرها تعریف میکند تا بتواند روش اول آزمون را با روش آزمون آخر مورد مقایسه قرار دهد. او برای این کار از روش تولید موتانت و پوشش شاخه استفاده میکند ماکینن و مونخ، در سال 2012، نوزده مقاله از سال 2003 تا 2012 در محیطهای صنعتی و دانشگاهی را مورد بررسی قرار دادند.
50
بررسی فاکتورهای کیفیت نرمافزار
قابلیت نگهداری بهرهوری کیفیت ظاهری میزان تلاش اندازهی کد پیوستگی کوپلینگ پیچیدگی کد پوشش کد نقص حوزه (صنعت / دانشگاه) سال نام نویسنده(گان) مقاله X X+ صنعت 2006 Bhat, Naggapan X- Canfora 2011 Dogsa, Batic 2003 George, Williams 2004 Geras Maximilien, Williams 2008 Naggapan Williams هر دو Janzen,Saiedian 2010 Madeyski, Szala 2007 Muller, Hofer دانشگاه 2009 Desai Gupta, Jalote Huang, Holcombe Janzen, Saiedian Madeyski Pancur, Ciglaric Vu 2012 Wilkerson
51
خودکارسازی فرآیند تولید آزمونرانه
52
ایده ترکیب روشهای صوری با تولید آزمونرانه
53
گسترشهای تولید آزمونرانه
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.