بخشی از مقاله
روشی برای کاهش هزینه تست نرم افزار با استفاده از روشهای دادهکاوی
چکیده:
خطای نرمافزار، یک عیب در سیستم نرمافزاری است که ممکن است عاقبت منجر به شکست سیستم شود. سیستمهای تشخیصدهندهی خطا، با استفاده از معیارهای نرمافزار و روشهای دادهکاوی به پیشگویی خطای نرمافزار میپردازند و به این صورت هزینههای کشف خطا در نرمافزارها را کاهش میدهند. دستهبندهای زیادی در این مورد استفاده میشوند. رایجترین دستهبندی که استفاده میشود Naïve Bayes است. لسمن تحقیقاتی در زمینه دستهبندهای مورد استفاده انجام دادهبود. ما در این تحقیق به بررسی کارایی 37 دستهبند مختلف در سیستم های کشف خطا میپردازیم. دستهبندها را از لحاظ معیارهای کارایی بررسی میکنیم و در نهایت دسته بند Bagging که کارایی و دقت بهتری نسبت به سایر دستهبندها از خود نشان داد انتخاب میکنیم. سپس با تست بر روی تعداد دیگری مخزن داده صحت انتخاب خود را بررسی میکنیم. به این صورت ما سیستم کشف خطایی با کارایی بالاتر را ارائه میدهیم که هزینه کشف خطاهای نرمافزاری را کاهش میدهد.
واژههای کلیدی: تشخیص خطاهای نرمافزار، دادهکاوی، معیارهای نرمافزار، یادگیری ماشین.
.1 مقدمه
در تعریف، خطا یک نقص ساختاری در یک سیستم نرمافزاری است که ممکن است در آخر منجر به خراب شدن سیستم شود. یک تعریف جامع و قابل اندازهگیری خطاها، معرفی و شمردن دقیق آنها را ممکن میکند؛ که به نوبهی خود، اجازه ساختن مدلهای مرتبط با تعداد و نوع خطاها را در یک سیستم نرمافزاری میدهد. پیشبینی خطای نرمافزار کاری برای دستهبندی ماژولهای نرمافزار به دو دسته در معرض خطا و غیر معرض خطا است. این دستهبندی با استفاده از معیارهای نرمافزار انجام میگیرد10]و.[2
استفاده از مشخصههای نرمافزار برای پیش بینی خطای نرمافزار به وسیله پورتر و سلبای در 1990 ابداع شده است14]و.[13 از آن زمان تمایل زیادی بر روی پیشبینی خطا بر مبنای مشخصههای نرمافزار ایجاد شده است8]،11،16و.[6 به طور قالب توجهی، تورهان[16] نشان داده است که میتوانیم دستهبندها را بر مبنای مشخصههای از یک نرمافزار مربوط به کارخانه تولید یخچال در ترکیه تولید کنیم و خطاهای موجود در ماژولهای نرمافزار ناسا مربوط به یک سفینه فضایی را پیش بینی کنیم. نشان داده شده است که پیشگوهای خطا که بر مبنای داده کاوی و ویژگیهای ماژول کار میکنند بیشتر از 70% دقت دارند. شال و همکاران[15] با مقایسه نرخ تشخیص 60% از راهنماهای نرمافزار (بر مبنای صفحهای از استانداردهای (IEEE2002 بیان کردند که یک بازبین خبره فقط 8 تا 20 خط در دقیقه را میتواند جستجو کند. بنابراین، مشخص است که چرا پیشگوهای خودکار بر مبنای معیارهای سطح طراحی و معیارهای سطح کد، یک زمینه فعال برای تحقیق هستند.
کاتال و دیری[3] یک تحقیق بر روی مطالعات انجام شده در زمینه کشف خطاهای نرمافزاری انجام دادند. آنها در تحقیق خود بر روی معیارها، روشها و مخزندادههای به کار رفته در مطالعات انجام شده در زمینه کشف خطاها متمرکز شدند. با توجه به مطالعات آنها، درصد استفاده از مخزندادههای عمومی در زمینه کشف خطاهای نرمافزای به شدت افزایش داشته است. همچنین بهکارگیری الگوریتم های یادگیری ماشین نیز از سال 2005 به تدریج افزایش یافته است. آنها همچنین آمارهای مربوط به مقالات منتشر شده در این زمینه را بررسی کردند. طبق بررسیهای آنها مقالات چاپ شده در زمینه کشف خطاهای نرمافزاری از سال 1990 شروع شده و رو به افزایش است. اکثر مقالات ارائه شده از سال 2000 به بعد چاپ شدهاند.. همچنین طبق آمارهای آنها، در 60 درصد تحقیقات انجام شده از معیارهای سطح متد استفاده کردهاند. علاوه بر آن استفاده از روشهای آماری و یادگیری ماشین بیشترین استفاده در این زمینه را دارد.
در دهه گذشته، سیستمهای دستهبندیِ زیادی معرفی شدهاند. معرفی این سیستمها، تلاشهایی در جهت مدل سازی تشخیص دهندههای خطا برای ماژول هایی که به نظر میرسد شامل خطا باشند، انجام داده است. گسترش اینگونه سیستمها با استفاده از یک سری از مخزندادههای ناسا انجام شده است.[4] در یک مطالعه مقایسهای مانند[11]، یک خط مبنا و یک مجموعه داده از مشخصههای طراحی و کد توصیف شده است. تمام خطاهای تشخیص داده شده سیستم در هر مجموعه داده، همراه با تعداد ماژولهایی که شامل آن خطا هستند، ثبت شده است. بر اساس مجموعهای از آزمایشها که بر روی مجموعه داده ناسا انجام شده است، لسمن[9] هیج تفاوت آماری مشهودی بین کارایی پیشبینهایی که با دستهبندهای متفاوت موجود کار میکنند، مشاهده نکرد. او برای مقایسه دستهبندها، مقایسههای خود را در بین دستهبندهایی که بر مبنای روشهای آماری هستند و با استفاده از مجموعه دادههای متفاوت، انجام داد.[5] منزیس و همکاران[12] به این نتیجه رسیدند که استفاده از تکنیکهای دادهکاوی نمیتواند منجر به ارائه تشخیص دهندههایی با دقت بیشتر شود و تشخیص دهندههایی بهتر ایجاد شود. بلکه بایستی هدف را تغییر داد، آنها پیشنهاد کردند که یادگیرنده ماشین مربوط به تشخیص دهندهها برای هر کاربرد خاص تقویت شود.
یکی از مسائل مطرح در زمینه کشف خطاها، معیارهایی است که با استفاده از آنها بتوان وجود خطا را تشخیص داد. محاسبهی بسیاری از این معیارها، هزینهی زیادی را تحمیل میکند. دو نوع معیار نرمافزاری در سیستمهای کشف خطا به کار برده میشود: معیارهای سطح طراحی و معیارهای سطح کد. محاسبه معیارهای سطح طراحیمعمولاً دشوار و وقتگیر است. با بررسی پژوهشهایی که در این زمینه انجام شده است، مشاهده کردیم که قوانینی برای ارائه یک مجموعه کم هزینهتر از معیارهای سطح طراحی و سطح کد در سیستمهای پیشبین خطا بیان نشده است. لذا در کار قبلی خود[1] با استفاده از الگوریتم AD-Miner [7] مجموعهای کمهزینهتر از معیارها را یافتیم که کارایی بهتری در مقایسه با استفاده از تمامی معیارهای نرمافزار برای کشف خطا از خود نشان داد. به این صورت نیازی به محاسبه تمامی معیارها نیست و تشخیص دهنده خطایی با هزینه بسیار کمتر و کارایی بالا ارائه دادیم. از آنجا که قصد ما کاهش هزینههای کشف خطا و ارائه مدلی با کارایی بالاتر برای سیستم های کشف خطا بود، در این مقاله به بررسی دستهبندهای مختلف میپردازیم تا با انتخاب دستهبندی با کارایی بالاتر، هزینه کشف خطا را باز هم کاهش دهیم. همانطور که گفتیم لسمن[9] قبلا تحقیقاتی در این زمینه انجام داده بود. او به بررسی 19 دستهبند مختلف بر روی سیستمهای کشف خطا پرداخت و طبق نظر او کارایی دستهبندهای مختلف تفاوت چندانی با یکدیگر ندارد. ما این تحقیق را گسترش میدهیم و با بررسی 37 دستهبند مختلف و مقایسه کارایی آنها بر روی 5 مخزن داده و محاسبه معیارهای کارایی ( درصد نمونههای درست تشخیص دادهشده (ACC) و سطح زیر نمودار (AUC) )، دستهبندی با کارایی بهتر را انتخاب میکنیم.
ادامه مقاله به شرح زیر است. در بخش 1 مخزندادههای مورد استفاده در زمینه سیستمهای کشف خطا را بررسی میکنیم. در بخش 2 به معرفی مخزندادههای ناسا و همچنین دستهبندی و دستهبند Bagging می پردازیم. در بخش 3 بررسی کارایی دستهبندهای مختلف بر روی سیستمهای کشف خطا میپردازیم دسته بندی با کارایی بالا را انتخاب میکنیم. در بخش 4 به بررسی ارزیابی دستهبند انتخاب شده و صحت این انتخاب میپردازیم. در نهایت در بخش 5 نتیجهگیری تحقیق و پیشنهادات خود را مطرح میکنیم.
.2 مخزن داده های ناسا
ناسا تعدادی مخزنداده مربوط به نرمافزارهایی که برای موراد خاص خود تولید کرده است را ارائه کرده است. استفاده از این مخزنهای داده برای استفاده عموم آزاد است. اغلب سیستمهای تشخیص دهنده خطا و مدیریت کیفیت نرمافزارها، با استفاده از این مخزنهای داده بررسی و ارزیابی میشوند. این دادهها با تایید پروژههایی که با همکاری MDP بر روی آنها کار شدهاند، به وسیله سایت در دسترس قرار گرفته است.
.2.1 معیارهای موجود در مخزندادههای ناسا
مخزنداده، شامل معیارهای نرمافزار و اطلاعات