• شرط عدم خروج: انتخاب مسیر جهشی که سبب خروج از برنامه نشود.

 

      • شرط­های تودرتو: در یک ماژول، ممکن است شرط­های تودرتویی وجود داشته باشد که برای ارضاء شرط جهش، نیاز به ارضاء تمام آن­ها است.

    پایان نامه

 

    • شرط­های جهش یافتهعملگرهای جهشی­که سبب تغییر دستوری در کد شرط می­ شود.

 

دامنه­ ورودی باید ترکیبی از این شرط­ها را ارضاء کند. از این سه شرط برای اندازه ­گیری فاصله­ی همینگ جهش­ها استفاده می­ شود. پس از اندازه ­گیری فاصله همینگ برای قرار گیری هر جهش در دسته مناسب متغیری به نام 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” سپس نشان می­دهد جهش­های سطح بالاتر اگر با استراتژی مناسبی ترکیب شوند می­توانند ۸۰ تا ۹۰ درصد جهش برابر کمتری تولید کنند. از طرف دیگر موارد تست مورد نیاز نیز به نسبت جهش قوی به مقدار قابل توجه­ای کاهش میابد.

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...