معرفی رویکرد مقاله " Using Likely Invariants for Test Data Generation "

چکیده:با توجه به رشد سریع اندازه و پیچیدگی نرم افزارها و به دلیل ماهیت غیرخطی آن ها، از میان روش های مختلفی که برای حل مسئله تولید خودکار داده های آزمون وجود دارد؛ استفاده از روش های مبتنی بر جستجو محبوبیت گسترده ای در جامعه تست نرم افزار کسب کرده است. در روش های مبتنی بر جستجو، از الگوریتم های فراابتکاری برای هدایت جستجو در فضای ورودی برنامه تحت آزمون استفاده می کنند. در این مقاله رویکردی جدید برای بهبود روش های تولید داده آزمون مبتنی بر جستجو ارائه شده است، این رویکرد مبتنی بر یادگیری روابط بین مقادیر ورودی برنامه و قسمت هایی از برنامه است که به وسیله آن مقادیر، تحت پوشش قرار گرفته اند؛ که از این روابط آموخته شده به منظور افزایش سرعت در دستیابی به اهداف پوشش آزمون[1] استفاده می شود. همچنین به عنوان مبنای روش یادگیری، دو مفهوم نامتغیرهای احتمالی شاخه[2] و نامتغیرهای احتمالی مسیر[3] معرفی شده است و با استفاده از تعریف گزاره های ساده ای[4] که بر اساس الگوهای از پیش تعریف شده وجود دارد، بر روی متغیرهای ورودی برنامه به تولید راه حل های کاندید مناسب تر می پردازد و از جهش این گزاره ها، برای پوشش سایر بخش های برنامه استفاده می کند. برای ارزیابی عملکرد رویکرد پیشنهادی مقاله، مجموعه ای از آزمایشات بر روی تعدادی از برنامه های مختلف معیار انجام شده است و نشان داده شده که رویکرد پیشنهادی، از نظر درصد پوشش، اثربخشی روش های تولید داده آزمون مبتنی بر جستجو را افزایش می دهد.[1] Test coverage goals [2] branch likely invariant [3] path likely invariant [4] simple predicates1. مقدمه:تولید داده های آزمون کاری چالش برانگیز در فرآیند تست نرم افزار است؛ که در آن برای یک نرم افزار تحت آزمون(SUT)، داده های آزمون مختلفی طراحی می شود؛ تا میزان تطابق آن را با معیار آزمون بررسی کنند و احتمال کشف خطا را افزایش دهند. از این رو، مسئله تولید داده های آزمون مؤثر و سریع، از اهمیت بالایی برخوردار است. به طور کلی سه روش برای خودکارسازی تولید داده های آزمون وجود دارد: آزمون تصادفی[1]: دراین روش، ورودی ها به طور تصادفی در فضای دامنه ورودی برنامه تحت آزمون، تولید می شوند، اما علی رغم سهولت و سرعت اجرا، این روش با مشکل پوشش ضعیف کد مواجه است. اجرای نمادین[2]: در این روش ها برنامه به جای داده های واقعی، با داده های نمادین اجرا می شود. سپس داده های آزمون با حل محدودیت های به دست آمده از اجرای نمادین مسیرهای برنامه تولید می شوند. برخی از اصلی ترین چالش های این روش، دشواری انفجار مسیر در کار با حلقه ها و حل محدودیت های پیچیده است. آزمون مبتنی بر جستجو[3]: در این روش ها از تکنیک های بهینه سازی فراابتکاری[4] برای تولید داده های آزمون از فضای جستجوی ورودی های برنامه استفاده می کنند؛ و هدف آن ها برآوردن اهداف آزمون است. این روش ها معمولا با یک جمعیت اولیه تصادفی از راه حل های موجود شروع می شوند، و با چندین تکرارعملیاتی راه حل هایی با کیفیت بهتر انتخاب می شوند، رویکردهای فراابتکاری از توابع مطلوبیت[5] برای رتبه بندی راه حل ها با توجه به اهداف آزمون استفاده می کنند. روش های مبتنی بر جستجو از الگوریتم های فراابتکاری مانند الگوریتم های هوش تجمعی[6] و الگوریتم های تکاملی[7] استفاده می کنند. تمرکز این مقاله بر روی روشهای تولید داده های آزمون مبتنی بر جستجو است؛ که از تکنیک های بهینه سازی فرا ابتکاری استفاده می کنند.این مقاله برای کاهش اتکای روش های مبتنی بر جستجو به شانس، برای راه حل های جدید تولید شده و افزایش کیفیت آنها در تکرارهای بعدی، به عنوان ایده، استفاده از رویکرد یادگیری از تکرارهای گذشته برای روش های مبتنی بر جستجو را مطرح می کند؛ که این ایده می تواند مانع از انجام تکرارهای غیرضروری این روش ها به دلیل راه حل های کاندیدای کم کیفیت شود که صرفاً براساس شانس تولید می شوند. در نتیجه، یک جستجوی آگاهانه و مبتنی بر تجربه ممکن است منجر به داده های آزمون مؤثرتر شود در حالی که کارایی روش تولید داده آزمون در همان زمان بهبود می یابد. راه حل مطرح شده برای اجرای ایده ذکر شده، یادگیری روابط بین شعب تحت پوشش و داده های ورودی برنامه است، روابط برای تولید داده های ورودی با مطلوبیت بالا برای برنامه مورد آزمون (PUT) استفاده می شود، و تکرارهای بعدی جستجو، از این داده ها برای تولید داده های ورودی که باعث پوشش اهداف تست کشف نشده می شوند، استفاده می کند.در ادامه، در بخش 2 مسئله، ایده و راه حل پیشنهادی مقاله، معرفی می شود. بخش 3 نوآوری ها و بهبودهای حاصل از آن را در رویکرد پیشنهادی، بیان می کند. بخش 4 رویکرد پیشنهادی را توضیح می دهد و در بخش 5 آزمایشات و نتایج تجربی که به منظور بررسی اثرپذیری و کارایی رویکرد پیشنهادی انجام شده، ارائه می شود.[1] Random testing [2] Symbolic execution [3] Search-based testing [4] Metaheuristic [5] Fitness function [6] Swarm intelligence algorithm [7] Evolutionary algorithm2. تعریف مسئله:یکی از مشکلات روش های تولید داده آزمون مبتنی بر جستجو، این است که آنها کور هستند؛ به این معنی که هیچ گونه دانشی در مورد ماهیت مقادیر ورودی با مطلوبیت بالاتر ندارند. آنها تلاش می کنند با حداکثر تابع مطلوبیت، شرایط شاخه ای[1] را راضی کنند و از داده های قبلی بهترین را ذخیره می کنند، اما هیچ تصوری در مورد ارتباط داده های ورودی تولید شده با اهداف تحت پوشش ندارند (جز اینکه بدانند، این داده ها از آمادگی بالاتری برخوردار هستند.) بنابراین، این روش ها قادر به درک اینکه کدام نوع مقادیر ورودی می توانند تابع مطلوبیت را به حداکثر برسانند نیستند، و قادر به تولید مناسب ترین داده های ورودی از میان ورودی های مشابه نیستند، در نتیجه، این روشها معمولاً به شانس مطلق متکی هستند، علاوه براین، ممکن است با مشکل بهینه محلی هم مواجه شوند.در این مقاله رویکردی جدید برای بهبود روش های تولید داده آزمون مبتنی بر جستجو ارائه شده است؛ که مبتنی بر یادگیری روابط بین مقادیر ورودی برنامه و قسمت هایی از برنامه است که به وسیله آن مقادیر، تحت پوشش قرار گرفته اند، در ادامه به معرقی آن می پردازیم.شکل 1 خلاصه عملیات را در رویکرد پیشنهادی در این مقاله نشان می دهد که دو مرحله اصلی الگوریتم های مبتنی بر جستجوی تکاملی، یعنی مرحله شروع[2] و مرحله تکامل[3] را گسترش می دهد. مرحله ی شروع:در این مرحله، طبق برخی از قالب های از پیش تعریف شده، مجموعه ای از گزاره های ساده P بر روی متغیرهای ورودی برنامه ساخته می شوند.این گزاره ها برای دو هدف مختلف تولید جمعیت اولیه از راه حل های کاندید و یافتن نامتغیرهای احتمالی شاخه ها برای هر شاخه از PUT مورد استفاده قرار می گیرند. نامتغیرهای احتمالی شاخه ی b، با BLIb مشخص می شود و شامل مجموعه ای از گزاره های محتمل معتبر برای b است. گزاره های معتبر محتمل برای یک شاخه b، گزاره هایی هستند که برای همه داده های ورودی که قبلاً تولید شده و شاخه b را پوشش می دهند، رضایت بخش باشند. مرحله تکامل:ابن مرحله در رویکرد پیشنهادی شامل یک حلقه اصلی است؛ که این حلقه شامل یک تکرار نرمال از یک الگوریتم مبتنی بر جستجو (مانند یک الگوریتم ژنتیکی) است که جمعیت را تکامل می بخشد، و پس از آن چندین مرحله پردازش اضافی انجام می شود. پس از هر تکرار از الگوریتم مبتنی بر جستجوی به کارگرفته شده، برای هر شاخه تحت پوشش b، نامتغیرهای محتمل شاخه b، به روز می شود. به منظور به روزرسانی BLIb، گزاره های مرتبط با شاخه b در برابر داده های آزمون جدید بررسی می شوند و گزاره های که دیگر معتبر نیستند، از BLIb حذف می شوند. در پایان هر تکرار، بهترین داده ورودی برای هر هدف از آزمون یافت می شود، و داده های ورودی جدید مشابه، اما متفاوت با این ورودی ها تولید می شود. این کار با ایجاد محدودیت هایی از BLI شعب تحت پوشش با بهترین داده های ورودی یافته شده، و حل آنها انجام می شود. این داده های ورودی جدید به جمعیت الگوریتم جستجو اضافه می شود و افراد کمتری جایگزین می شود.جهش برخی از نامتغیرهای احتمالی موجود، با تغییر تصادفی گزاره های آن ها و حل محدودیت های آن ها، برای پوشش قسمت هایی از برنامه که تاکنون شناخته ناشده اند، انجام می شود.شکل 1: خلاصه ای از رویکرد پیشنهادی[1] Branch condition [2] initialization phase [3] evolution phase3. نو آوری و بهبود:با انجام مراحل گفته شده در بخش قبل، رویکرد پیشنهادی سعی در بهبود روشهای تولید داده آزمون مبتنی بر جستجو به روش های مختلف دارد: بهبود اولیه جمعیت: رویکرد پیشنهادی سعی می کند با استفاده از گزاره های مربوط به متغیرهای برنامه و ثابت های کد منبع، احتمال پیدا کردن راه حل های کاندید مناسب را در جمعیت اولیه افزایش دهد.هنگامی که یک راه حل نامزد مناسب یافت شود، تولید راه حل های مشابه انجام می شود. این کار با ساخت و حل محدودیت مسیری که احتمالاً تغییر ناپذیر است، انجام می شود.پوشش موثرتر اهداف: با تولید مقادیر ورودی جدید که مشابه بهترین مقادیر ورودی موجود در جمعیت، برای هر هدف است و با استفاده از جهش محدودیت ها برای راه حل های کاندید با بهترین مقادیر تابع مطلوبیت، بدست می آید. به طور کلی هدف در این مقاله بهبود روش های تولید داده های آزمون مبتنی بر جستجو و تقویت اثربخشی آنها است. هدف اول، ابداع رویکردی است که این روشها را قادر می سازد از تجربیات گذشته به شیوه ای آگاهانه تر و جهت دار تر یاد بگیرند. با یادگیری روابط بین متغیرهای ورودی و اهداف پوشش (بیان شده در قالب گزاره ها نسبت به متغیرهای ورودی)، این روش ها می توانند داده های آزمون را با اثربخشی بالاتر تولید کنند. اهداف دیگر این تحقیق شامل افزایش جمعیت اولیه داده های آزمون و استفاده از تکنیک هایی از قبیل جهش گزاره های آموخته شده برای کاهش مشکل بهینه محلی است.4. متدولوژی:دراین بخش، عملکرد الگوریتم اصلی روش پیشنهادی برای تولید داده های آزمون، به طور کلی شرح داده می شود. الگوریتم موجود در شکل 2، چگونگی گسترش الگوریتم های مبتنی بر جستجو برای استفاده از نامتغیرهای احتمالی را نشان می دهد. پارامترهای ورودی این الگوریتم شامل برنامه تحت ازمون P، اهداف پوشش(goals) و اندازه ی جمعیت یا تعداد داده های آزمون(ps) است. این الگوریتم سعی دارد گزاره های مختلفی را که برای مقادیر ورودی قبلاً تولید شده در هر شاخه از برنامه وجود دارد، بیاموزد.در Initialization، یعنی مرحله ی آغازین الگوریتم، در ابتدا، مجموعه ای از گزاره های ساده بر اساس متغیرهای ورودی برنامه و نوع آن ها، مقادیر ثابت کد برنامه و الگوهای مشابه در شکل 3، ایجاد می شود. سپس با استفاده از گزاره های ساده ایجاد شده، نوع متغیرهای برنامه و اندازه جمعیت، جمعیت اولیه داده های آزمون ایجاد می شود و برای تمامی شاخه های برنامه تحت آزمون، نامتغیرهای احتمالی شاخه، یعنی BLI ها را برابر با گزاره های ساده ی ساخته شده برای متغیرهای ورودی قرار می دهد. لازم به توضیح است که BLI مجموعه ای از تمام گزاره هایی است که برای تمام مقادیر ورودی تولید شده که شاخه br را پوشش می دهد صحیح است. مرحله تکامل الگوریتم 2 شامل خطوط 4-10است. هر تکرار از این حلقه شامل یک Evolve است، که اجرای یک الگوریتم مبتنی بر جستجو مانند GA یا PSO است؛ سپس با استفاده ازUpdateBranchLikelyInvariants در خط 5، نامتغیرهای احتمالی شاخه ها به روز می شوند. در خط 9 بهترین راه حل های نامزد برای هر هدف نگه داشته شده و راه حل های با کیفیت پایین دورانداخته می شوند. در پایان، جمعیت حاصل به عنوان خروجی الگوریتم بازگردانده می شوند.مرحله اصلی برای یادگیری نامتغیرهای احتمالی شاخه با فراخوانی UpdateLikelyInvariants در خط 5 انجام می شود. که در آن گزاره هایی که برای ورودی های برنامه موجود در جمعیت، که منجر به پوشش شاخه ها می شوند صحیح نیستند، از BLIbr حذف می شوند.ورودی های شبیه به بهترین ورودی ها با فراخوانیGenerateInputsSimilarTo تولید می شوند؛ که در آن، یک محدودیت از ترکیب عطفی گزاره های نامتغیر شاخه های هر مسیر یعنی نامتغیرهای احتمالی مسیرساخته می شود و با استفاده از حل کننده محدودیت حل می شود؛ و در صورت برآورده شدن گزاره ها، ورودی را مشابه ورودی برای آن مسیر در نظر می گیرد.شکل 2: الگوریتم اصلی رویکرد پیشنهادیشکل 3: تعدادی از نامتغیرهای محتمل ممکن برای متغیرهای صحیح x، y و z5. آزمایش و نتایج:این مقاله برای ارزیابی روش پیشنهادی خود به دو دسته آزمایش به شرح زیر می پردازد:1-5. آزمایشات مربوط به پیاده سازی پایتون:به عنوان اولین ارزیابی، روش پیشنهادی با الگوریتم های GA و PSO در پایتون 3.6 پیاده سازی شده و به مقایسه آن، با چندین روش تولید داده آزمون دیگر پرداخته شده است، در این آزمایش هدف، پوشش تمامی شاخه های برنامه های معیار موجود در جدول 1 بوده است، و معیارهای ارزیابی عبارتند از: درصد شاخه های پوشیده شده، درصد پوشش های کامل در اجراهای مختلف (یعنی، درصد اجرا هایی که در آن 100٪ پوشش حاصل می شود) و تعداد تکرارهای لازم برای پوشش دادن تمام شعب.برای انجام مقایسه، از چندین الگوریتم مبتنی بر جستجو شامل: الگوریتم ژنتیکی تک هدف(ga: single)، الگوریتم ژنتیکی چند هدفی که سعی در پوشاندن همه شاخه ها به طور همزمان دارد(ga:multi)، روش پیشنهادی مقاله هنگام استفاده از الگوریتم ژنتیکی چند هدفی(ga-li)، الگوریتم PSO (pso) و روش پیشنهادی مقاله هنگام استفاده از الگوریتم PSO (pso-li)، جستجوی تصادفی (random)، الگوریتم simulated Anealing(SA)، دو نسخه از الگوریتم کلونی مورچه ها با نام های aco و aco-es و الگوریتم هارمونی (harmony)، استفاده شده است. و هرالگوریتم در هر برنامه 30 بار اجرا شد. همچنین سایر شرایط مانند تابع مطلوبیت، حداکثر تعداد تکرارها برابر 50 تکرار در الگوریتم های مختلف دقیقاً یکسان اعمال شده است.در جدول 1 نتایج مربوط به معیارهای "پوشش شعبه"، "درصد پوشش کامل" و "تعداد تکرارها" از اجرای الگوریتم ها در هر برنامه معیار مقایسه شده است. ستون cov متوسط پوشش شاخه را نشان می دهد، و ستون fcp درصد اجرا هایی را نشان می دهد که پوشش 100٪ در هر الگوریتم را بدست آورده اند و ستون its تعداد متوسط تکرارها (یا نسلها) را برای دستیابی به پوشش کامل نشان می دهد.نتایج برتری الگوریتم پیشنهادی را نشان می دهد، به ویژه هنگامی که از آن برای GA استفاده می شود. برای کلیه معیارها، ga-li در بیشتر موارد از سایر روش ها بهترعمل می کند. این نتایج همچنین نشان می دهد که pso-li به وضوح عملکرد بهتری نسبت به PSO دارد. برای سایر الگوریتم ها، در بیشتر موارد ga-single و ga-multi عملکرد کمی بهتر از بقیه الگوریتم ها دارند. ضعیف ترین اجراهای متعلق به sa است.جدول 1: نتایج اجرای الگوریتم های مختلف روی برنامه های معیاردر این مقاله به منظور نشان دادن اختلاف در نتایج ga-li و سایر الگوریتم ها که از نظر آماری قابل توجه است، تست ANOVA (تجزیه و تحلیل واریانس) با میانگین پوشش و تعداد تکرارهای الگوریتم ها انجام شده است. فرضیه H0 دراین تست این است که بین میانگین پوشش متوسط و میانگین تعداد تکرارهای ga-li در برابر الگوریتم های جایگزین تفاوت معنی داری وجود ندارد، همچنین سطح معنادار α = 0.05 انتخاب شده است. جداول 2 و 3 نتایج این تحلیل را نشان می دهد. در جدول 2، ستون های ma - mx تفاوت میانگین پوشش متوسط ga-li و الگوریتم x را نشان می دهد. ستون های p-value مقدار p حاصل از آزمون ANOVA را نشان می دهند. در جدول 4، ستونها mx - ma اختلاف میانگین متوسط تکرارهای الگوریتم x و ga-li را نشان می دهد.به طور کلی نتایج آزمون ANOVA نشان می دهد که تفاوت های گزارش شده در ستون های ma - mx و mx - ma در این دو جدول از نظر آماری معنی دار هستند و فرضیه H0 رد می شود و در نتیجه ga-li عملکرد بسیار بهتری دارد.جدول2: نتایج تست ANOVA بر متوسط پوشش برای ga-li(a) در برابر سایر الگوریتم هاجدول 3 : نتایج تست ANOVA بر متوسط تکرار برای ga-li(a) در برابر سایر الگوریتم هااین مقاله آزمایش سومی نیز به منظور ارزیابی کارایی روش پیشنهادی انجام داده است؛ که در آن بودجه زمانی را به 20 ثانیه محدود کرده و نتایج در جدول 4 آورده شده که عملکرد بهتر ga-li و بعد pso-li در مقایسه با سایر الگوریتم ها را نشان می دهد.جدول 4: نتایج اجرای الگوریتم های مختلف بر روی برنامه های معیار با معیار توقف 20 ثانیهنتایج نشان می دهد که روش پیشنهادی منجر به افزایش قابل توجه در توانایی الگوریتم های مبتنی بر جستجو (مانند GA و PSO) برای پوشش بخش های مختلف برنامه ها می شود GA .هنگامی که با روش پیشنهادی بهبود پیدا کرد ، قادر به دستیابی به پوشش 100٪ بیشتر از سایر روشها بود. به طور کلی، در تمام آزمایش ها، هنگامی که روش های مبتنی بر جستجو با روش پیشنهادی ترکیب می شوند، در مقایسه با مواردی که به تنهایی استفاده می شدند (از نظر تعداد تکرارها ، درصد پوشش های کامل و کل پوشش) عملکرد بهتری داشتند.2-5. آزمایشات مربوط به ادغام روش پیشنهادی با EvoSuiteاین مقاله برای ارزیابی رویکرد پیشنهادی خود برای برنامه هایی با مقیاس بزرگ و پشتیبانی از انواع بیشتر، از Evosuite که یک اجرای عالی و صنعتی در تکنیک های تولید داده آزمون است، استفاده کرده است و قسمت هایی از آن را با توجه به رویکرد پیشنهادی خود تغییر داده و یک نمونه اولیه از روش پیشنهادی را در جاوا پیاده سازی کرده است و آن را EVO-LI نامیده است.سپس EVO و EVO-LI را در 51 معیار جاوا که شامل پارامترهای عددی و رشته ای هستند، اجرا کرده و سپس به بررسی نتایج پرداخته است. در این آزمایش که به منظور بررسی اثربخشی نیز انجام می شود، بودجه آزمون شامل تعداد تکرار 30، جمعیت 10 در نظر گرفته شده است و این درحالی است که در EvoSuite به صورت پیش فرض تعداد تکرار 60 و تعداد جمعیت 50 است و این کاهش به دلیل ایجاد محدودیت بیشتر به منظور تاکید بر بهبود روش پیشنهادی در چنین شرایطی است.جدول 5 نتایج آزمایش را نشان می دهد. ستون Avg fitness وAvg Uncapped نشانگر میانگین fitness و تعداد شاخه های کشف نشده کلاس مورد آزمون است. p-vlue مقدار p-value از تست ANOVA برای متریک Fitness را نشان می دهد. در 76.5 درصد موارد، EVO + LI ،Fitness بهتری را برای تعداد تکرارهای مشابه بدست آورده است؛ در این موارد میانگین کاهش fitness، 8.27 درصد بوده است.با استفاده از روش پیشنهادی، کاهش تعداد تکرارهای لازم برای پوشش شاخه های مختلف با برنامه های محک با داشتن شعب با شرایط وابسته تر به پارامترهای ورودی عددی یا رشته ای مشهود است. همچنین مواردی که تاثیر مثبتی از روش پیشنهادی در نتایج جدول 6 مشاهده نمی شود، اغلب به دلیل عدم وابستگی شرایط موجود در آن مورد به پارامترهای عددی و رشته ای است.جدول 5: نتایج آزمایش های مربوط به ادغام Evosuite با روش پیشنهادی، با شرط توقف 30 تکرارهمچنین آزمایش دیگری برای مقایسه کارآیی EVO و EVO + LI با بودجه زمانی 20 ثانیه (به جای 30 نسل) انجام شده است.جدول 6 نتایج این آزمایش را نشان می دهد. در 84.3٪ موارد ، الگوریتم اصلی EvoSuite عملکرد بهتری دارد. این بدان معناست که اگرچه حل محدودیت تعداد تکرارهای لازم را کاهش می دهد، هر تکرار اجرای ما کندتر است. بنابراین ، از نظر کارآیی (انجام همان کار در زمان کمتر)، الگوریتم اصلی EvoSuite عملکرد بهتری دارد.جدول6: نتایج آزمایش های مربوط به ادغام Evosuite با روش پیشنهادی، با شرط توقف 20 ثانیه. به منظور سنجش اثربخشی استفاده از نامتغیرهای احتمالی برای تولید جمعیت اولیه، آزمایشات با SEARCH BUDGET = 1 انجام شده که باعث می شود الگوریتم جستجو فاز تکامل را اجرا نکند یا به عبارت دیگر فقط مرحله اولیه انجام می شود. در جدول 7 نتایج اجرایEVO وEVO + LI باSEARCH BUDGET = 1 نشان داده شده است؛ که در آن میانگین fitness در 62.7٪ از برنامه های معیار برای EVO + LI بهتراست. بنابراین، استفاده از نامتغیرهای احتمالی برای تولید جمعیت اولیه، منجر به بهبود میانگین fitness می شود. همانطور که گفته شد، برای SEARCH BUDGET = 30، در 76.5٪ موارد EVO + LI دارای آمادگی متوسط ​​بالاتری بود. با مقایسه این درصدها، مشاهده می کنیم که هرچه تعداد تکرارها در الگوریتم جستجو بیشتر شود، نتایج بهتر می شوند. این در شرایطی است که با گذر از تکرارهای بیشتر و مشاهده داده های ورودی بیشتر، الگوریتم می تواند به تقریب بهتری از ثابت واقعی شاخه ها دست یابد، که منجر به تولید مقادیر ورودی با fitness بالاتر می شود. بنابراین نتایج نشان می دهد که تغییرات ایجاد شده باعث کارایی الگوریتم EvoSuit(پوشش بهتر برای تکرارهای مشابه) برای برنامه هایی با ورودی های عددی یا رشته ای و شاخه هایی با شرایط وابسته به آن ورودی ها شده است، ضمن آن که باعث کاهش اهداف کشف نشده برای برنامه ها شد.جدول 7: مقایسه مطلوبیت جمعیت اولیه(بودجه جستجو برابر1) در حالت استفاده از نامتغیرهای احتمالی و یا عدم استفاده از آن ها.6. مرجع:Nosrati, Mohammad, Hassan Haghighi, and M. Vahidi Asl. "Using likely invariants for test data generation." Journal of Systems and Software 164 (2020): 110549.https://www.sciencedirect.com/science/article/pii/S0164121220300315 لازم به توضیح است که معرفی انجام شده از رویکرد مقاله مذکور،تمرین درس آزمون و اشکال زدایی نرم افزار دانشگاه شهید بهشتی و جهت انتشار محتوای فارسی است.