پژوهش های کارشناسی ارشد درباره ارائه یک روش تولید خودکار داده های ورودی برای تست ... |
-
- شرط عدم خروج: انتخاب مسیر جهشی که سبب خروج از برنامه نشود.
-
-
- شرطهای تودرتو: در یک ماژول، ممکن است شرطهای تودرتویی وجود داشته باشد که برای ارضاء شرط جهش، نیاز به ارضاء تمام آنها است.
-
-
- شرطهای جهش یافته: عملگرهای جهشیکه سبب تغییر دستوری در کد شرط می شود.
دامنه ورودی باید ترکیبی از این شرطها را ارضاء کند. از این سه شرط برای اندازه گیری فاصلهی همینگ جهشها استفاده می شود. پس از اندازه گیری فاصله همینگ برای قرار گیری هر جهش در دسته مناسب متغیری به نام K که مقدار آن برابر نیمی از تعداد کل جهشها، و یک حد آستانه که مقدار آن برابر با نیمی از بیشتر فاصلهی بین دو جهش است تعریف میشوند. در ابتدا K جهش به صورت تصادفی انتخاب می شود و آنها را در دستههای اولیه قرار میدهد سپس باقی جهشها با توجه به آنکه فاصلهی آنها کمتر از حد آستانه است دستهبندی می شود. در مرحله بعد از هر دسته یک جهش به صورت تصادفی انتخاب شده و خود یک دستهبندی جدید را تشکیل میدهد که با بهره گرفتن از این روش، علاوه بر کاهش تعداد جهشها موارد تستی که نتواند دسته جهشی را از بین ببرد از مجموعه تست حذف می شود.
جهش انتخابی: یکی از روشهای کاهش تعداد جهشها، کاهش تعداد عملگرهای استفاده شده برای تولید جهش است. مانند روشهای قبل، این روش نیز در کنار کاهش تعداد جهشها حفظ اثر بخشی تست مهم است. برای افزایش سرعت اجرای برنامههایی که کامپایل آنها زمان بر است، ابزاری به نام CIT[19] معرفی شده است که این ابزار امکان تست یکپارچه و تولید جهش را به کامپایلر میدهد و از طرف دیگر آنرا برای انجام، به صورت همزمان کارآمد می کند. همچین برای اولینبار روش جهش محدود شده که منجر به حذف دو عملگر SVR و ASR مطرح می شود [۱۷] ، این ایده، به نام جهش انتخابی دوگانه، مطرح شده است. A. J. Offutt [18] در تلاش اول، برای تخمین پیچیدگی جهش ازطریق فرمولهای همبستگی خطی ساده و همبستگی چندگانهی خطی به بررسی ارتباط میان تعداد جهشهای تولید شده، خطوط برنامه، تعداد متغییرهای برنامه، تعداد منابع متغییرها و تعداد انشعابات می پردازد سپس ایدهی جهش انتخابی دوگانه را بسط داده و برای جهشهای چهارگانه و ششگانه نیز مطرح می کند. میانگین صرفه جویی در تعداد جهشهای تولید شده در پیاده سازی این روش روی ده برنامه به ترتیب ۲۳٫۹۸% برای جهش انتخابی دوگانه و ۴۱٫۳۶% برای جهشهای چهارگانه است. R. H. Untch [19] عملگرها را به صورت کلاسهای دسته بندی (مانند ES-Selective mutation که از۲۲ عملگر، عملگرهای AAR, ACR, ASR, CAR, CNR, CRP, CSR, SAR, SCR, SRC, وSVR در آن وجود ندارند) دستهبندی می کند و پس از ترکیب دستههای مختلف به این نتیجه میرسد، که پنج عملگر ABS، AOR، LCR، ROR و UOI.توانایی تولید ۹۵% از جهشها را دارند. در نتیجه عملگرهای کلیدی نامیده میشوند.
جهشهای سطح بالاتر
میتوان با ترکیب جهشهای سطوح مختلف جهشهای سطح بالاتری به وجود آورد به گونه ای که با کاهش مقدار ناچیزی از کیفیت تست مقدار قابل توجهی در تعداد ورودیهای تست و جهشهای برابر وارد شده به کد برنامه، صرفه جویی کرد. برای ایجاد این گونه جهشها سه استراتژی وجود دارد که اولین بار در [۲۰] مطرح شد. این سه استراتژی عبارت است از:
-
- ادغام تصادفی”RandomMix”: جهشهای به وجود آمده در این روشحاصل از ترکیب تصادفی دو عملگر است.
-
- عملگرهای مختلف “DifferentOperators” : جهشهای ایجاد شده در این روش حاصل از ترکیب دو عملگر متفاوت است.
-
- روش آخر به اول “LastToFirst”: جهشها براساس ترکیب عملگر جهش اول با عملگر جهش آخر در لیست عملگرهای جهشهای انتخابی اعمال میشوند.
سپس تاثیر حاصل از ترکیب جهشهای برابر و نابرابر نشان میدهد که در جدول(۲-۶) آورده شده است
جدول(۲‑۶): تاثیر حاصل ترکیب جهش های برابر و نابرابر با یکدیگر
جهش برابر | جهش برابر | جهش برابر |
جهش برابر | جهش غیر برابر | جهش غیر برابر |
جهش غیر برابر | جهش برابر | جهش غیر برابر |
جهش غیر برابر | جهش غیر برابر | جهش غیر برابر(به احتمال زیاد) |
Mike Papadakis [21] سه استراتژی موجود برای ترکیب جهشهای سطح اول که مطرح شد را بررسی می کند و به تاثیر آن پنج استراتژی دیگر معرفی می کند که عبارتند از:”First2Last”، “SameNode”، “SU_F2Last”، “SU_DiffOp”و “DiffOp” سپس نشان میدهد جهشهای سطح بالاتر اگر با استراتژی مناسبی ترکیب شوند میتوانند ۸۰ تا ۹۰ درصد جهش برابر کمتری تولید کنند. از طرف دیگر موارد تست مورد نیاز نیز به نسبت جهش قوی به مقدار قابل توجهای کاهش میابد.
فرم در حال بارگذاری ...
[یکشنبه 1400-08-02] [ 04:45:00 ق.ظ ]
|