بخشی از پاورپوینت

اسلاید 1 :

آزمون واحد در جاوا Unit Testing in Java

دوره کيفيت نرم افزار

اسلاید 2 :

سرفصل مطالب
نياز به تست
رويكردهاي آزمايش نرم افزار
معرفی آزمون واحد
آشنایی با JUnit
مزايای استفاده از آزمون واحد
ويژگيهاي تست خوب
تمرين عملی

اسلاید 3 :

اهميت و لزوم آزمايش محصول
توليدکننده، قبل از تحويل محصول بايد از کيفيت آن مطمئن شود
خودروساز، خودرو را قبل از تحويل به مشتری ارزيابی میکند
آشپز، قبل از مهمان غذا را میچشد
کنترل کيفيت و تضمين کيفيت در صنايع مختلف مورد توجه است
سهلانگاری در تست محصول، گاهی ويرانگر است

اسلاید 4 :

سهل انگاری در ارزيابی کيفيت محصول
سال 1998: برج «کاخ2» در سائوپائولو فرو میريزد
سه سال پس از ساخت
شش نفر کشته شدند
علت: کيفيت پايين بتن مورد استفاده

آتشسوزی خودروهای پژو 405
دهها نفر کشته شدند
علت: استفاده از قطعه بیکيفيت در سيستم سوخترسانی

اسلاید 5 :

سهل انگاری در ارزيابی کيفيت محصول (2)
موشک آريان5 در سال 1996 توسط آژانس فضایی اروپا آزمايش شد
اين موشک، 40 ثانيه پس از پرتاب منفجر شد
هزينه: 370 ميليون دلار
علت: وجود يک اشکال در نرمافزار
سال 1980: پنج بیمار بر اثر دریافت مقدار زیاد پرتوی X جان باختند
علت: اشکال در نرمافزار ماشین پرتودرمانی

اسلاید 6 :

نياز به آزمايش نرمافزار
نرمافزار، مثل هر محصول ديگري، بايد آزمايش شود
تا از كيفيت آن مطمئن شويم
نرم افزاري كه آزمايش نشده، هنوز كامل نيست
انواع آزمايشها، كيفيت نرمافزار را از ديدگاههاي مختلف ميآزمايند

اسلاید 7 :

آزمايش نرمافزار
ويژگیهای يک نرمافزار خوب چيست؟
عملکرد صحيح
ويژگیهای کيفی (غيرعملکردی)
کارايی، سرعت، سهولت استفاده، امنيت و غيره
تست نرمافزار : فرايندی برای آزمايش ويژگیهای موردنظر نرمافزار
انواع مختلفی از تست نرمافزار وجود دارد
انواع تست، ويژگیهای مختلف نرمافزار را ارزيابی میکنند

اسلاید 8 :

ابعاد آزمون نرمافزار
سطح آزمون (آزمون واحد، آزمون يکپارچگی، .، آزمون سيستم)
نوع آزمون (آزمون عملکرد، آزمون ويژگیهای کيفی)
روش آزمون (white box يا black box)
شکل آزمون (آزمون خودکار، آزمون دستی)
نقش آزمونگر (برنامهنويس، تيم تست، کاربر يا .)

اسلاید 9 :

آزمون واحد نرمافزار (Unit Testing)
انواع مختلفي از تست در طول عمر يك پروژه انجام میشوند
برخي از اين تستها به دخالت مستمر كاربر، طراح يا مشتری نياز دارد
برخي از تستها نيز در تيم کنترل كيفيت اجرا میشوند
اما آزمون واحد توسط برنامهنويس، و براي برنامهنويس انجام ميشود
جزو وظايف برنامهنويس است
البته آزمون واحد کافی نيست
انواع ديگر آزمون برای تضمين کيفيت نرمافزار لازم است.

اسلاید 10 :

معنای آزمون واحد
آزمون يک واحد (بخش) کوچک از برنامه
مثلاً يک متد يا يک کلاس
برای اطمينان از صحت عملکرد اين واحد
آيا اين متد درست عمل میکند؟
به ازای ورودیهای مختلف، خروجی/رفتار مناسب توليد میکند؟
هر بخش و جزء برنامه را جداگانه آزمايش میکنيم
قبل از آزمايش کل سيستم
مثال خودروسازی: آزمايش قطعات، قبل از آزمايش کل خودرو

اسلاید 11 :

روش سنتی آزمون واحد
فرض كنيد: يك متد نوشتيم كه يك آرايه را مرتب میكند (sort)
يك متدmain براي کلاس آن مينويسيم
چند حالت از وروديهاي مختلف را امتحان ميكنيم
خروجیها را چاپ میکنيم (system.out.println)
صحت خروجیها را به صورت دستی (چشمی) بررسی میکنيم
کدهای تست نوشته شده را حذف میکنيم و کدهای ديگری مینويسيم
نکته:
Business Code: متن اصلی برنامهها
Test Code: کدهایی که برای آزمايش برنامهها نوشته شوند

اسلاید 12 :

روش سنتی آزمون واحد
اشکال اين روش چيست؟

اسلاید 13 :

معايب روش سنتي
تستهاي نوشته شده دور ريخته میشود
نقض استفاده مجدد (software reuse) برای test code
در هر لحظه يك تست انجام میشود
برنامه نويس بايد به صورت دستي تستها را اجرا كند
اجراي تستها خودکار نيست
برنامه نويس بايد شخصاً از صحت آنها مطمئن شود
تشخيص موفقيت آميز بودن تستها خودکار نيست

اسلاید 14 :

ويژگیهای آزمون واحد
اجراي خودکار
تشخيص خودکار موفقيت تست
قابل تكرار و استفاده مجدد

اسلاید 15 :

چارچوبهای xUnit
چارچوبهايی برای آزمون واحد در زبانهای مختلف ايجاد شده است
اين ابزارها، اجرا و تشخيص نتيجه آزمون را خودکار میکنند
مجموعه اين ابزارها xUnit ناميده میشوند. مثال:
CppUnit
JUnit

اسلاید 16 :

خلاصه: آزمون واحد نرمافزار
آزمون white box (نه black box)
آزمون واحد (نه آزمون سيستم، و نه حتی آزمون چند بخش يکپارچه شده)
]معمولاً[ آزمون عملکردی (نه آزمون ويژگیهای کيفی)
آزمون خودکار (نه دستی)
توليد توسط خود برنامهنويس (نه توسط تيم تست يا کاربر)

اسلاید 17 :

آشنایی با JUnit

اسلاید 18 :

يک نمونه آزمون واحد در JUnit

اسلاید 19 :

اجرای آزمون واحد
نمونهآزمونها متد main ندارند و با کمک TestRunner اجرا میشوند
غالباً از طريق محيطهای برنامهنويسی (مثل Eclipse) يا Maven اجرا میشوند
هر متد تست با حاشيه @Test مشخص میشود
هر متد تست يک نمونهآزمون (test-case) خوانده میشود
يادآوری: موفقيتآميز بودن آزمون بايد به صورت خودکار بررسی شود
نه به صورت دستی: سندروم println
نتيجه آزمون در JUnit با کمک assertion بررسی میشود
مثال: assertEquals

اسلاید 20 :

نمونهآزمون
هر نمونهآزمون شامل اين بخشهاست:
يک ورودی برای متد موردآزمون تعیین میشود (test data)
خروجی و رفتار موردنظر برای اين ورودی مشخص میشود (expected result)
متد موردآزمون با اين ورودی فراخوانی میشود (invocation)
خروجی و رفتار متد با خروجی موردنظر تطبيق داده میشود (assertion)
اگر اجرای تست موفقيتآميز باشد: تست pass شده است
اگر اجرای تست موفقيتآميز نباشد: تست fail شده است

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید