بخشی از مقاله

ارائه چهارچوبی جهت افزایش کیفیت تست نرم افزار با استفاده از کاوش در داده های نرم افزاری

چکیده

مهندسی نرم افزار شامل فرایند طراحی، پیاده سازی و نگهداری نرم افزار میباشد. در این فرایند، تست نرم افزار به عنوان یکی از حیاتی ترین، پرهزینه ترین و زمان بر ترین مرحله از توسعه نرم افزار در نظر گرفته می شود. به منظور تست موثر و صحیح نرم افزار، افراد تست کننده نیاز به سناریوهای مختلف به منظور پوشش بخش عظیمی از نرم افزار دارند.

امروزه طراحی مجموعه ای موثر از این سناریوها به دلیل پیچیده شدن نرم افزار و حجم زیادی از داده ها به عنوان یک چالش در نظر گرفته می شود. اگر چه استفاده از تکنیک خودکار سازی تست نرم افزار، منجر به کاهش این پیچیدگی و ارائه تست موثر نرم افزار شده است اما همچنان ارائه سناریو های بهینه در تست نرم افزار به عنوان یک موضوع اساسی در فرایند توسعه نرم افزار در نظر گرفته می شود . از طرفی با پیشرفت علوم کامپیوتری و تکنولوژی ، روش های داده کاوی به عنوان راه حلی مناسب برای جست جو در حجم زیادی از دادها مورد استفاده قرار می گیرد. در واقع داده کاوی فرایندی برای مرتب سازی از میان داده های بسیار زیاد ناهمگون است. همچنین این فرایند بطور فزاینده ای برای استخراج اطلاعات از میان مجموعه های داده بسیار بزرگ که توسط آزمایشهای مدرن و شیوه های مبتنی بر مشاهده گرد آوری شده مورد بهره برداری قرار میگیرد. در این مقاله ما سعی براین است تا با استفاده از دادههای نرم افزاری مانند کد منبع، مسیرهای اجرایی و بهرهگیری از تکنیک کاوش دادهها مجموعهای بهینه از سناریوهای تست نرم افزار ارائه گردد. نتایج شبیهسازی نشان میدهد کارامد کردن تست نرم افزار، هزینه های ناشی از تست را کاهش داده و کیفیت نهایی نرم افزار نیز افزایش مییابد.

واژههای کلیدی: تست نرمافزار، داده کاوی، الگوریتم ژنتیک، انباره داده، خوشهبندی، ماتریس گراف.

×


-1 مقدمه

تولید نرم افزار های کاربردی روز به روز گسترش می یابد و لزوم بکارگیری روش ها و اصول مهندسی نرم افزار در مراحل توسعه ، مدیریت و پشتیبانی آنها بیشتر نمود پیدا می کند . کیفیت نرم افزار 1 شاخص حیاتی برای تولید نرم افزار های با کیفیت بالاست که ضمن بالا بردن بهره وری در تولید نرم افزار ها ، به ایجاد نرم افزار های قدرتمند و شکست ناپذیر منجر می گردد. در کل روش مهندسی نرم افزار یک هدف واحد را دنبال می کند و آن تولید نرم افزاری با کیفیت بالاست. کیفیت هدف اصلی تمامی افراد، شرکت ها و بصورت کلی سازمان هایی است که در جهت تولید و توسعه نرم افزار گام بر می دارند.
یکی از شاخه های اصلی و تاثیرگذار بر کیفیت نرم افزار تولید شده، تست یا آزمون نرم افزار است. تست نرم افزار به دنبال خطایابی و عیب یابی محصول، قبل از تحویل به مشتری است. در دنیای امروز از یک طرف، با وجود گشترش بیش از حد سایز و پیچیدگی نرم افزارهای تولید شده و از طرف دیگر، تولید سیستم ها و نرم افزار های حیاتی، فرایند تست نرم افزار از اهمیت ویژه ای برخوردار گردیده است. از این رو تعیین بهترین و بهینه ترین سناریوها برای تست نرم افزار به منظور افزایش کیفیت ان، کاهش هزینه و کاهش زمان توسعه به عنوان یکی از موضوعات اساسی در فرایند توسعه نرم افزار در نظر گرفته می شود.

آزمایش، مجموعه فعالیت هایی است که می تواند از قبل به صورت سیستماتیک برنامه ریزی و هدایت شود . به این دلیل، برای آزمایش نرم افزار باید الگویی برای فرآیند نرم افزار تعریف شود . این الگو شامل مجموعه مراحلی است که می تواند تکنیک های خاصی برای طراحی نمونه ها و روش های آزمایش را در آن قرار داد. تاکنون چندین استراتژی آزمایش نرم افزار پیشنهاد شده است که همه آنها برای توسعه دهنده نرم افزار، الگویی را به منظور آزمایش فراهم میکنند و همگی دارای خصوصیات زیر هستند:

- آزمایش از سطح مؤلفه شروع می شود به سمت خارج در جهت مجتمع سازی کل سیستم کامپیوتری پیش می رود.

- تکنیک های متفاوت آزمایش، در نقاط زمانی مختلف مناسب می باشند.
- آزمایش توسط توسعه دهنده نرم افزار، برای پروژه های بزرگ توسط گروهی مستقل از گروه آزمایش، هدایت می شود.

- آزمایش و اشکالزدایی فعالیت های متفاوتی هستند، اما اشکالزدایی باید با هر استراتژی آزمایش همراه باشد.

یک استراتژی برای آزمایش نرم افزار باید آزمایش های سطح پایینی را هدایت کند که برای بازبینی صحت پیاده سازی یک قطعه کد کوچک لازم می باشند. همچنین این استراتژی باید آزمایش های سطح بالایی را سازماندهی کند که اکثر توابع سیستم را در رابطه با نیازهای مشتری اعتبارسنجی می نمایند.

کیفیت نرم افزار ارتباط بسیار زیادی با طراحی تست های بهینه به منظور یافتن بیشترین خطا ها در نرم افزار دارد. هدف از تست نرم افزار یافتن بیشترین خطا ها در طول فرایند تولید و تحویل نرم افزار می باشد . از این رو آزمون یا تست نرمافزار یکی از مهمترین بخشهایی است که در حین فرایند توسعه نرمافزار باید مورد توجه ویژه قرار گیرد. در تمامی متدولوژیهای تولید نرمافزار برای تست، روشهای مدونی در نظر گرفته شده است. بنابراین برنامهریزی و اجرای صحیح تست نرمافزار میتواند نقش تعیین کنندهای در موفقیت یا شکست پروژه های نرمافزاری ایفا کند. این فرایند از سه بخش کلی شامل تولید سناریوهای تست، اجرای سناریوها و بررسی نتایج حاصل از اجرا با نتایج مورد انتظار تشکیل شده است. یکی از دغدغههای اساسی در فرایند تست نرمافزار انتخاب بهترین و بهینهترین سناریوهای تست نرمافزار میباشد بهطوری که این سناریوها، بیشترین خطاهای موجود در نرمافزار را کشف کنند.

در این مقاله ما بدنبال ارائهی راهکاری برای بهینهسازی سناریوهای تست نرمافزار با استفاده از دادههای نرم افزاری مانند کد منبع، مسیرهای اجرایی و بهرهگیری از تکنیک کاوش دادهها هستیم. کارامد کردن تست نرم افزار، هزینه های ناشی از تست را کاهش داده و سبب افزایش کیفیت نهایی نرم افزار میگردد.

درادامه سازماندهی مقاله بدین صورت است؛ در بخش 2 کارهای مرتبطی که در حوزه تست نرمافزار تاکنون صورت گرفته است بیان میگردد؛ در بخش 3 الگوریتم پیشنهادی معرفی شده، بخش 4 نتایجی که از ارزیابی و شبیهسازی طرح پیشنهادی بدست آمده است ارائه میگردد و در بخش پایانی نتایجی که از این مقاله استخراج شده است بیان میشود.

-2 کارهای مرتبط

با رشد فناوری اطلاعات و روش های تولید و جمع آوری داده ها ، پایگاه داده های مربوط به داده های تبادلات تجاری ، کشاورزی ، اینترنت ، جزییات مکالمانی تلفنی ، داده های پزشکی و ... سریع تر از هر روز جمع آوری و انبارش میشود . لذا از اواخر دهه ی 80 میلادی بشر به فکر دستیابی به اطلاعات نهفته در این پایگاه داده های حجیم افتاد . زیرا سیستم های سنتی قادر به این کار نبودند. به دلیل رقابت در عرصه های سیاسی ، نظامی ، اقتصادی ، علمی و اهمیت دستیابی به اطلاعات در کم ترین زمان بدون دخالت انسان علم تجزیه و تحلیل داده ها یا داده کاوی پا به عرصه گذاشت.
داده کاوی فرآیندی است که در آغاز دهه 90 مطرح شد و با نگرشی نو به مساله استخراج اطلاعات از پایگاه داده ها میپردازد .از سال 1995 داده کاوی به صورت جدی وارد مباحث آمار شد. درحال حاضر ، داده کاوی مهمترین فناوری جهت بهره برداری مواثر از داده های حجیم است و اهمیت آن رو به فزونی است. به طور رسمی اصطلاح داده کاوی برای اولین بار توسط فییاد در اولین کنفرانس بین المللی " کشف دانش و داده کاوی " در سال 1995 مطرح شد .

در نرم افزار منابع زیادی چون کد منبع ،مستندات و ... جهت بررسی صحت و درستی ان وجود دارد. بسیاری از مهندسین با بهره گیری از داده های موجود و استفاده از تکنیک های داده کاوی سعی در استخراج تست کیس های مناسب و بررسی و صحت و درستی نرم افزار دارند.برخی از این تحقیقات در زیر اورده شده است.

کارلسون و همکارانش در (Carlson,2011, 382-391) با بهره گیری از روش های خوشه بندی در داده های نرم افزار می توان به طور مطلوبی تست کیس های بهینه ای را طراحی کرند که این تست کیس ها به طور موثری می توانند خطا های موجود در نرم افزار را اشکار نمایند . در این روش پیشنهادی از روش خوشه بندی سلسله مراتبی بهره برده اند. دز ابتدا داده ها بر اساس خوشه بندی های مناسب به صورت سلسله مراتبی منظم شده و سپس از بین هر خوشه نمونه هایی که بتواند بیشترین پوشش برای تست رگرسیون را داشته باشد انتخاب می شود. روشی که برای تست نرم افزار توسط کارلسون و همکارانش ارائه شده است در شکل (1) نشان داده شده است.


شکل (1) روش کلاسترینگ ارائه شده در تست نرم افزار((Carlson, 2011, 382-391

در تحقیقاتی دیگر رامش “Raamesh,2010, 6611-6616) و همکارانش ضمن تاکید بر اهمیت تست نرم افزار و نقش کلیدی تست کیس های مناسب جهت انجام موفقیتامیز این عمل، روشی دیگر را بر اساس الگوریتم خوشه بندی داده ها ارائه داده اند. در “Mal,2010) راهکاری برمبنای قوانین وابستگی در کلاسها معرفی شده است. در این روش طبقه بندی داده های نرم افزار بر اساس روابط قابل درک بین داده ها مشخص می شود.

×

اوما و همکارانش در (Uma,2011, 324-331) چهار چوبی ارائه کردهاند که بر اساس ان ابتدا نیازمندی های اولیه دریافت می شود سپس با استفاده از قوانین کلاس، روش خوشه بندی و بهره گیری از نرم افزار های Weka مجموعه تست کیس های مناسب استخراج می شود.

-3 شرح مسئله
-1-3 استفاده از روش خوشه بندی2 در تست نرم افزار به منظور انتخاب تست کیس های مناسب

هدف تقسیم کردن مجموعه ای از دادهای اولیه نرم افزار در چند گروه می باشد به طوری که داده های یک گروه مشابه یکدیگر هستند و داده هایی که متعلق به دو گروه متفاوت هستند نامتشابه می باشند . چنین گروهی یک کلاستر نامیده می شود و هر داده دقیقا متعلق به یک کلاستر است . تشابه بین داده ها به طور محاسباتی توسط یک تابع فاصله اندازه گرفته می شود . تابع فاصله دو داده را به عنوان ورودی می گیرد و مقداری که بیانگر تشابه آنهاست بر می گرداند . برنامه های کاربردی متفاوت ، نشان گذاری های متفاوتی از تشابه دارند و هیچ اندازه ای که برای تمامی آنها کار کند وجود ندارد . این روش خوشهبندی در شکل (2) نشان داده شده است.


شکل (2) روشی از خوشه بندی داده ها (Bishnu,2012) شکل (3) خوشه بندی مفهومی داده ها((Laszlo,2009,11-24

در شکل (2) داده ها بر اساس مقداری ارزشی که دارند به گروه های مختلفی دسته بندی شده اند. روش دیگری که به منظور خوشه بندی داده ها در فرایند تست دادها استفاده می گردد خوشه بندی مفهومی نام دارد. در این روش بر اساس مفهوم توضیحی شان گروه بندی می شوند.فرض کنید که ما دادها را براساس دو متغییر X , Yدسته بندی کرده ایم.بنابراین بر اساس این دسته بندی خواهیم داشت :

Data_info(X=int,Y=int)

با این نوع خوشه بندی یک نمای دوبعدی از داده ها بر اساس متغییر X,Y در شکل (3) نمایش داده شده است.

معمولا خروجی یک الگوریتم کلاستربندی شامل یک نمایش خلاصه شده از هر کلاستر است . نوع نمایش خلاصه شده خیلی زیاد به نوع و شکل کلاسترهایی که الگوریتم محاسبه می کند دارد .

الگوریتم های خوشبندی جهت خوشه بندی داده های نرم افزارمی توانند به موارد زیر دسته بندی می شوند :

Mixture of Gaussian: Probabilistic Clustering (4
در کلاستربندی انحصاری 3 داده به صورت انحصاری گروه بندی می شود ، به طوری که اگر آیتم مشخصی در یک کلاستر قرار گرفت نمی تواند در کلاستر دیگری قرار گیرد . یک مثال ساده از آن را در شکل (4) می بینید که تفکیک نقاط با استفاده از یک خط مستقیم در فضای دو بعدی صورت گرفته است . بر عکس در کلاسترینگ دارای اشتراک4 از مجموعه های فازی برای کلاسترینگ استفاده می شود ، به طوری که هر نقطه می تواند متعلق به دو یا چند کلاستر متفاوت با درجه عضویت متفاوت باشد

. در این حالت ، داده به مقدار عضویت مناسبی مربوط خواهد شد(.( Bishnu,2012) (Laszlo,2009,11-24

شکل (4) خوشه بندی انحصاری داده ها “Raamesh, 2010, 6611-6616)

روشهای خوشهبندی معایبی نیز دارد از جمله:
· هدف از خوشهبندی ، تصمیم گیری در مورد گروه بندی حقیقی5 در مجموعه ای از داده های بدون برچسب می باشد. اما چگونه باید تصمیم گیری کرد که یک خوشه خوب انجام شده است؟ می توان نشان داد که شرط "بهترین " به طور مطلق وجود ندارد.این کاربر است که باید این شرط را پشتیبانی کند،به طریقی که نتیجه خوشهها نیازهایشان را به بهترین نحو ممکن فراهم کنند.

· پیچیدگی زمانی حداقل O(n2) است ، که n تعداد اشیاء یا داده ها می باشد .

-3-2 استفاده از روش طبقه بندی6 در تست نرم افزار به منظور انتخاب تست کیس های مناسب
طبقه بندی در واقع ارزشیابی ویژگیهای مجموعه ای از داده ها و سپس اختصاص دادن آنها به مجموعه ای از گروه های از پیش تعریف شده است. این متداولترین قابلیت داده کاوی می باشد. داده کاوی را می توان با استفاده از داده های تاریخی برای تولید یک مدل یا نمایی از یک گروه بر اساس ویژگی های داده ها به کار برد. سپس می توان از این مدل تعریف شده برای طبقه بندی مجموعه داده های جدید استفاده کرد. همچنین می توان با تعیین نمایی که با آن سازگار است برای پیش بینی های آتی از آن بهره گرفت. در واقع سیستم هایی که بر اساس طبقه بندی داده کاوی می کنند، دو مجموعه ورودی دارند: یک مجموعه آموزشی که در آن داده هایی که به طور پیش فرض در دسته های مختلفی قرار دارند، همراه با ساختار دسته بندی خود وارد سیستم می شوند و سیستم بر اساس آ نها به خود آموزش می دهد یا به عبارتی پارامترهای دسته بندی را برای خود مهیا می کند. دسته دیگر از ورودی هایی هستند که پس از مرحله آموزش وبرای تعیین دسته وارد سیستم می شوند. تکنیک های داده کاوی که برای طبقهبندی به کار میآیندعمومًا شامل تکنیک های شبکه عصبی و درخت تصمیم گیری هستند. یکی از متغیرهای مهم در قابلیت طبقهبندی برآورد یا امتیاز دهی است.مسائل طبقه بندی به شناسایی خصوصیاتی منجر می شوند که مشخص می نمایند هر مورد به کدام گروه تعلق دارد.این الگو هم می تواند برای فهم داده موجود و هم برای پیش بینی اینکه هر نمونه جدید چگونه کار می کند استفاده شود.



×

-4-2 استفاده از روش استخراج وابستگی ها7 در تست نرم افزار جهت طراحی تست کیس های مناسب
یکی از مهمترین بخشهای داده کاوی، کشف قوانین انجمنی در دادهها است. این قوانین، لزوم وقوع برخی صفات (آیتم ها) را در صورت وقوع برخی دیگر از آیتمها، تضمین می کند. قوانین انجمنی یکی از مهم ترین شیوه های داده کاوی است. شاید این روش را بتوان به عنوان رایج ترین شکل روش های کشف الگو در سیستم های یادگیری غیرنظارت نام برد.این روش ها، تمامی الگوهای ممکن دلخواه را درون داده های ما پیدا می کنند .)Galeebathullah,2010,7-9)

در این مقاله بدلیل استفاده از الگوریتم ژنتیک و یک تابع امتیازدهی که مشخص میکند تست کیسها امکان تولید نسل دارند یا نه، الگوریتم پیشنهادی جز روشهای دستهبندی قرار میگیرد.

-3 الگوریتم پیشنهادی
-1-3 شمای کلی از بهره گیری الگوریتم ژنتیک به منظور بهینه سازی تست کیس ها
در هر بهینه سازی تست نرم افزار قبل از آنکه بتوان الگوریتم ژنتیک را برای یافتن یک پاسخ به کار برد به دو عنصر نیاز است:

1) روشی برای ارائه یک جواب به شکلی که الگوریتم ژنتیک بتواند روی آن عمل کند لازم است. به شکل سنتی یک جواب به صورت یک رشته از بیتها، اعداد یا نویسهها نمایش داده میشود.

2) دوم روشی که بتواند کیفیت هر جواب پیشنهاد شده را با استفاده از توابع تناسب محاسبه نماید و بررسی نمایید که ایا معیار های مورد نظر بدست امده اند یا خیر ؟

روال بهینه یابی در الگوریتم ژنتیک براساس یک روند تصادفی- هدایت شده است. این روش، بر مبنای نظریه تکامل تدریجی و ایدههای بنیادین داروین پایه گذاری شدهاست. در این روش ، ابتدا برای تعدادی ثابت که جمعیت نامیده میشود مجموعهای از پارامترهای هدف بصورت اتفاقی تولید میشود ، پس از اجرای برنامه شبیه ساز عددی را که معرف انحراف معیار و یا برازش آن مجموعه از اطلاعات است را به آن عضو از جمعیت مذکور نسبت میدهیم.

این عمل را برای تک تک اعضای ایجاد شده تکرار میکنیم، سپس با فراخوانی عملگرهای الگوریتم ژنتیک از جمله لقاح ، جهش و انتخاب نسل بعد را شکل میدهیم و این روال تا ارضای معیار همگرایی ادامه داده خواهد شد. بصورت متداول سه معیار بهعنوان معیار توقف این چرخه در نظر گرفته میشود:

1. زمان اجرای الگوریتم
2. تعداد نسلهایی که ایجاد میشوند

3. همگرایی معیار خطا

همچنین وقوع یکی از شرایط زیر سبب خاتمه الگوریتمهای ژنتیک به منظور بهینه سازی تست کیس ها می شود :
· به تعداد ثابتی از تست کیس ها (نسل ها )
· بودجه اختصاص دادهشده تمام شود(زمان محاسبه یا هزینه ).

· یک فرد(فرزند تولید شده) پیدا شود که مینیمم (کمترین) ملاک را برآورده کند.
· بیشترین درجه برازش فرزندان حاصل شود یا دیگر نتایج بهتری حاصل نشود.

· بازرسی دستی.

· ترکیبهای بالا.

-2-3 مرحله اول از راهکار پیشنهادی



×

شکل (5) استخراج تست کیس ها و رسم درخت تصمیم

-1-2-3 طراحی درخت تصمیم با استفاده از کد منبع

ساختار درخت تصمیم در یادگیری ماشین، یک مدل پیش بینی کننده می باشد که حقایق مشاهده شده در مورد یک پدیده را به استنتاج هایی در مورد مقدار هدف آن پدیده نقش می کند. تکنیک یادگیری ماشین برای استنتاج یک درخت تصمیم از داده ها، یادگیری درخت تصمیم نامیده می شود که یکی از رایج ترین روش های داده کاوی است.

هر گرهء داخلی متناظر یک متغیر و هر کمان به یک فرزند، نمایانگر یک مقدار ممکن برای آن متغیر است. یک گرهء برگ، با داشتن مقادیر متغیرهایی که با مسیری از ریشهء درخت تا آن گرهء برگ بازنمایی می شود، مقدار پیش بینی شدهء متغیر هدف را نشان می دهد. یک درخت تصمیم ساختاری را نشان می دهد که برگ ها نشان دهندهء دسته بندی و شاخه ها ترکیبات فصلی صفاتی که منتج به این دسته بندی ها را بازنمایی می کنند.

یادگیری یک درخت می تواند با تفکیک کردن یک مجموعهء منبع به زیرمجموعه هایی براساس یک تست مقدار صفت انجام شود. این فرآیند به شکل بازگشتی در هر زیرمجموعهء حاصل از تفکیک تکرار می شود. عمل بازگشت زمانی کامل می شود که تفکیک بیشتر سودمند نباشد یا بتوان یک دسته بندی را به همهء نمونه های موجود در زیرمجموعهء بدست آمده اعمال کرد.

این ساختار تصمیم گیری می تواند به شکل تکنیک های ریاضی و محاسباتی که به توصیف، دسته بندی و عام سازی یک مجموعه از داده ها کمک می کنند نیز معرفی شوند. داده ها در رکوردهایی به شکل:

(x , y) = (x1, x2, x3…, xk , y)

نشان داده می شوند. با استفاده از متغیرهای x1,x2,..,xk سعی در درک، دسته بندی یا عام سازی متغیر وابستهء Y داریم. انواع صفات در درخت تصمیم به دو نوع صفات دسته ای و صفات حقیقی بوده که صفات دسته ای، صفاتی هستند که دو یا چند مقدار گسسته می پذیرند (یا صفات سمبلیک) درحالی که صفات حقیقی مقادیر خود را از مجموعهء اعداد حقیقی می گیرند.

این در خت تصمیم با بهره گیری از کد منبع و استفاده از قواعد دستوری و نگاشت انها به ساختار منطقی حاصل می شود که این ساختار در شکل (6) شده است. در این اشکال علامت دایره نشان گر حالات کد منبع می باشند و فلش ها بیانگر تغییر از یک حالت به حالتی دیگر است.

A B

شکل (6) نمونه هایی از درخت های متناظر با کد


-2-2-3شناسایی نقاط بحرانی بر اساس درخت تصمیم

پس از شکل گیری درخت تصمیم در مرحله قبل بایستی بر اساس تجربه های بدست امده از تست نرم افزار قسمت هایی که شامل بیشترین خطاها در طول توسعه نرم افزار می باشتد را شناسایی کرد. این قسمت ها شامل نواحی بحرانی در درخت تصمیم می باشند. برای این منظور موارد زیر به عنوان نقاط بحرانی یرای تست نرم افزار در نظر گرفته می شوند:

مقدار مرزی داده های ورودی :به دلایلی که کاملاً واضح نیستند، تعداد زیادی از خطاها در مرزهای دامنه ورودی اتفاق می افتند، به جای این که در مرکز آن اتفاق بیفتند. به این دلیل است که تحلیل مقدار مرزی به عنوان یک روش آزمایش موثر جهت شناسایی نقاط بحرانی و دارای خطا در تست نرم افزار شناخته می شود. تحلیل مقدار مرزی باعث انتخاب نمونه های آزمایشی می شود که مقادیر مرزی را مورد آزمایش قرار می دهند.

شرطهای موجود در منطق برنامه : روشی برای طراحی نمونه های آزمایش است که شرط های منطقی موجود در یک پیمانه برنامه را بررسی می نماید. یک شرط ساده، متغیری بولی یا عبارتی رابطهای است، احتمالاً عملگرNOT قبل از آن قرار گرفته است.

حلقه ها: اکثرا الگوریتم های پیاده سازی شده در نرم افزار نقش محوری دارند . با این وجود، اغلب در ضمن هدایت آزمایش های نرم افزار، توجه کمی به آنها می شود.

-3-2-3استخراج تست کیس ها جهت پوشش نقاط بحرانی

پس از ان که نقاط بحرانی در مرحله قبل شناسایی شد بایستی تست کیس های مناسب جهت پوشش نقاط بحرانی فراهم اوریم. این پوشش جهت طراحی تست کیس ها شامل انجام تست های زیر می باشد :

ازمایش جریان داده : روش آزمایش جریان داده، مسیرهای آزمایش برنامه را طبق مکانهای تعاریف و استفاده از متغیرهای برنامه انتخاب می کند. چند استراتژی آزمایش جریان داده، مطالعه و مقایسه شده اند. به منظور نمایش شیوه آزمایش جریان داده، فرض کنید که به هر دستور در برنامه یک شماره دستور منحصر به فرد داده شده است و این که هر تابع، پارامترهای خود یا متغیرهای سراسری را تغییر نمی دهد.

آزمایش حلقه: چهار رده از حلقه ها قابل تعریف هستند: حلقه های ساده، حلقه های الحاق شده، حلقه های تداخل و حلقه های بدون ساختار که در شکل نشان داده شده است.

ازمایش شروط: اگر یک شرط غلط باشد، حداقل یک مؤلفه آن شرط غلط خواهد بود. بنابراین، انواع خطاها در شرط به شرح زیر هستند که باید مورد آزمایش قرار گیرند:

· خطاهای عملگر منطقی (غلط/ حذف شده/ عملگرهای بولی اضافی)
· خطای متغیر بولی

· خطای پرانتزهای بولی

· خطای عملگر رابطه ای

· خطای عبارت محاسباتی

پس از اجرای این مرحله و بر اساس ازمایش های فوق مجموعه ای بسیار زیاد از تست کیس ها جهت تست بدست می اید که در مرحله بعد مجموعه ای بهینه از انها به نحوی که بیشترین خطاها را مشخص کند با استفاده از روش ارائه شده انتخاب خواهد شد.

-2-3 مرحله دوم : فرایند بهینه سازی

در روش فرایند بهینه سازی ما از روش الگوریتم ژنتیک ترکیبی به منظور استخراج تست کیس های مناسب استفاده کرده ایم. این فرایند شامل موارد زیر می باشد:

-1 دریافت نرم افزار تحت تست، تست کیس های استخراج شده و مسیرهای مشخص شده از مرحله قبل -2 قرار دادن تست کیس ها در تست ترکیبی
-3 تولید تست کیس های جدید از تست کیسهای اغازی(بدست امده در مرحله قبل) وکد منبع، با استفاده از الگوریتم ژنتیک ترکیبی
×

-4 تولید گزارشی از تست بر اساس تست کیس های انتخاب شده -5 ذخیره تست کیس های بهینه شده و همچنین ترتیب تست کیس ها در مخزن تست کیس ها

همچنین در قسمت تست ترکیبی عملیات زیر انجام می شود:
· امکان سنجی تولید نسل ها برای هر تست کیس

· تولید نسل های جهش یافته برای نرم افزار
· تحلیل پوشش مسیر بر اساس تست مسیر

· تحلیل جهش بر اساس معیارهای امتیاز جهش

صدر این فرایند، کد نرم افزار و همچنین تست کیس های استخراج شده مرحله قبل به عنوان ورودی در نظر گرفته می شوند و با استفاده از روش تست ترکیبی گزارشاتی از تست کیسها مورد بررسی ایجاد می شود و بهترین و موثر ترین تست کیس ها انتخاب شده و در پایگاه داده تست کیس ها ذخیره میشود. به طور کلی این فرایند در شکل (7) به صورت کامل اورده شده است:

شکل((7 فرایند کلی بهینه سازی با استفاده از الگوریتم ژنتیک ترکیبی

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