۱-۶- بیان مسئله

 

 

از مشکلات اساسی در مورد تست نرم افزار و اولویت بندی موارد تست به موارد زیر می‌توان اشاره کرد :
ما نمی‌توانیم همه چیز را تست کنیم
سیستم نمی‌تواند به طور کامل تست شود
زیاد بودن تعداد موارد تست برای اجرا بر روی برنامه تحت تست
محدود بودن زمان و هزینه برای انجام تست

 

 

۱-۷- چالش موجود در تست رگرسیون

 

 

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

 

 

۱-۸- راه حل برای چالش موجود در تست رگرسیون

 

 

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

 

 

۱-۹- توجیه ضرورت انجام طرح

 

 

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

 

 

۱-۱۰- هدف از اجراء

 

 

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

 

 

۱-۱۱- نوآوری تحقیق

 

 

نوآوری موجود در رویکرد پیشنهادی ما عبارتند از: ۱- در نظر گرفتن ساختار برنامه در سطح ماژول که در روش‌های پیشنهادی قبل از این کار در سطح کلاس بوده است. ۲– در نظر گرفتن متریک های اثرگذاری خطای ماژول بر دیگر ماژول‌ها به همراه داده‌های در دسترس دیگر(نیازمندی‌های کاربر، اجراهای قبلی موارد تست ها، داده‌های تاریخی، اطلاعات تغییرات برنامه و نظرات افراد خبره در حوزه تست نرم افزار ) می‌باشد. ۳- استفاده از شبکه بیزی به کمک نظرات افراد خبره و داده‌های موجود برای انجام محاسبات می‌ باشد.
فصل دوم
ادبیات و پیشینه تحقیق

 

 

۲-۱- پیشینه تحقیق

 

 

۲-۱-۱- کارهای مرتبط

 

 

در این فصل، به زمینه‌های تحقیقاتی مربوط به موضوع این پایان نامه پرداخته شده است. برای بهبود فعالیت تست نرم افزار، محققان پیشنهاد کرده‌اند تکنیک های زیادی را جهت اولویت بندی موارد تست در سالهای اخیر. Wong و همکاران یک راه برای اولویت بندی موارد تست با توجه به معیار (افزایش هزینه بر پوشش اضافی) [۵]. Rothermel و همکاران یک تعریف رسمی از مشکل اولویت بندی مورد تست و ارائه متریک هایی برای اندازهگیری نرخ تشخیص خطا از مجموعه تست ارائه کرده‌اند. نویسندگان APFD را به عنوان معیاری برای نرخ تشخیص خطا و ارزیابی تجربی در کاتالوگ خودشان معرفی می‌ کنند [۶]. در مطالعات موردی بزرگ‌تر تکنیک ها با بیش از یک معیار ارزیابی می‌شوند. Kim و همکاران اولویت بندی موارد تست را تدوین و رابطه کردند بر اساس تئوری احتمال[۷]. تکنیک های زیادی برای تست پیشنهاد شده‌اند مانند کاهش مجموعه تست [۸] و اولویت بندی موارد تست [۹] . مطالعات تجربی انجام شده نشان می‌دهند که ، بیشتر تکنیک های اولویت بندی موارد تست در بهبود نرخ تشخیص خطا در تست رگرسیون مفید و موثر هستند. استفاده از روش بهینه سازی اجتماع مورچگان یک راه جدید برای حل مشکل محدودیت زمان اولویت بندی است. در این رهکار ارائه شده، هدف اولویت بندی در تست رگرسیون برای دوباره مرتب کردن مجموعه تست در محیط محدود است. ممکن است تکنیک های آگاه به زمان برای اولویت بندی موارد تست، نرخ تشخیص خطای بهتری نسبت به روش‌های سنتی اولویت بندی موارد تست دست یابد. رویکرد جدیدی را برای آگاه به زمان اولویت بندی موارد تست با استفاده از برنامه نویسی خطی عدد صحیح را پیشنهاد می‌کند. اولویت بندی موارد تست به چالشی در سیستم های نرم افزاری مبتنی بر مولفه شده است (CBSS) که تسهیل می‌کند توسعه سیستم های پیچیده را با یکپارچه سازی اجزای قابل استفاده مجدد. CBSSبه عنوان یک رویکرد ظهور کرده که توسعه سریع سیستم را با استفاده از منابع و تلاش کمتر ارائه می‌کند. ایده اصلی استفاده مجدد و کاهش هزینه‌های توسعه را می‌توان به دست آورد از اجزای ارائه خدمات قابل اعتماد. بنابراین، ادغام اجزاء و آزمایش تبدیل شدن به یک مرحله مهم در CBSS. در هدف تجزیه و تحلیل روش های اولویت بندی موارد تست موجود مبتنی بر کد، بر اساس نیازمندی و تکنیک های اولویت بندی مبتنی بر مدل و در نهایت پیاده سازی آنها در CBSS است [۱۰] .
در [۲۷] اولویت بندی موارد تست نرم افزار براساس شبکه های بیزی برای تست رگرسیون ارائه گردیده است. در رویکرد پیشنهاد شده، اطلاعات تغییرات در نرم افزار ، کد برنامه و مجموعه تست رگرسیون ورودی های مدل پیشنهاد شده را تشکیل می دهند. در ضمن این رویکرد برای تست رگرسیون ارائه شده و برای استفاده در تست غیر رگرسیون نمی توان از این رویکرد بهره برد. در این روش پس از ارزیابی و محاسبه متریک احتمال ابتلا به خطا ، تجزیه و تحلیل تغییرات کد برنامه و بررسی پوشش موارد تست، شواهد لازم برای ساخت شبکه بیزی استخراج می شوند و بر اساس اطلاعات بدست آمده ساختار گراف ایجاد می گردد. پس از ایجاد گراف در شبکه بیزی، استنتاج احتمالات صورت می گیرد و موارد تست بر اساس آن اولویت بندی می شوند. برای مدل پیشنهادی که مورد مطالعه قرار گرفته است می توان این نکته را بیان کرد، اینکه مدل پیشنهادی با توجه به استفاده از شبکه بیزی دارای یک نقص می باشد و آن هم اینکه فقط برای تست رگرسیون می توان از آن استفاده کرد و برای تست غیر رگرسیون کاربرد ندارد.
در[۳۱] اولویت بندی بر اساس تجزیه تحلیل ساختار برنامه برای تست رگرسیون و هم تست غیر رگرسیون ارائه شده است. مدل ارائه شده مشکل موجود در رویکرد ارائه شده در [۲۷] را حل کرده است. اینگونه که مدل خود را در سطح ماژول ها ارائه کرده است و بر اساس ساختار برنامه به اولویت بندی کردن موارد تست می پردازد. در این روش با بکار گیری روش های فراخوانی گراف روابط بین ماژول ها را مشخص می کند و بعد از این مرحله معیارها و متریک هایی را برای وزن دهی به هر یک از متریک ها در نظر می گیرد. ورودی این مدل را ساختار برنامه و مجموعه تست تشکیل می دهند. در مدل پیشنهاد شده، از مجموعه تست برای سنجش اینکه موارد تست چه میزان از برنامه تحت تست را پوشش می دهند استفاده می شود. در نهایت اطلاعات حاصل از مرحله تجزیه و تحلیل پوشش موارد تست نرم افزار و محاسبه متریک ها، اطلاعات مورد نیاز جهت اولویت بندی موارد تست در خروجی بدست می آیند. از موارد مهمی که در این مدل بایستی بهبود داده شوند این موارد قابل ذکر می باشند. اول اینکه عدم قطعیت در این مدل نادیده گرفته شده است و بایستی در مدل حتماَ گنجانده شود. متریک های در نظر گرفته شده می تواند متعدد باشد و همچنین شدت خطاهای شناسایی شده باهم یکسان نمی باشند.
در [۳۷] اثر محدودیت های زمانی در مورد اولویت بندی موارد تست مورد بررسی قرار گرفته است. ورودی های این مدل عبارتند از : داده های پوشش تست،اطلاعات تغییر کد ، داده های متریک کیفیت و مجموعه های تست. در این مدل از سه گروه از تکنیک های تست استفاده شده است. گروه های استفاده شده عبارتند از : تکنیک های کنترل ، تکنیک های بدون بازخورد و تکنیک های با مکانیزم بازخورد. از بین تمامی مجموعه های تست موجود نرخ شناسایی همگی محاسبه می گردد و مجموعه تست ای که نرخ شناسایی خطای در آن از بقیه بیشتر است انتخاب می گردد و سپس اطلاعات تشخیص خطای حاصل از آن به عنوان ورودی به مدل های هزینه – فایده داده می شود تا اینکه تعیین گردد در مواقعی
که در محدودیت زمانی اجرا می شوند نرخ شناسایی خطای قابل قبولی را ارائه می کنند. نتایج حاصله از آزمایشات انجام گرفته در این تحقیق نشان دهنده این موضوع می باشد که استفاده از شبکه های بیزی در اولویت بندی موارد تست نتایج مطلوبی را بدست می دهند.در [۳۹] ساخت مدل های شبکه بیزی از عدم قطعیت های موجود در تست و نگهداری نرم افزار صورت گرفته است. عدم قطعیت در مهندسی نرم افزار که بطور گسترده در تائید ، ارزیابی و پیش بینی دیده می شود. عدم قطعیت در مهندسی نرم افزار ذاتی و اجتناب ناپذیر است. عدم قطعیت در خصوص تجزیه تحلیل نیازمندی های کاربر هم یکی از بحث های مهم در حوزه مهندسی نرم افزار می باشد. در این روش از شبکه های بیزی باور الهام گرفته شده است و برای مدل کردن عدم قطعیت موجود در هر یک از فازهای مهندسی نرم افزار استفاده کرده است.

 

 

۲-۱-۲- بررسی مشکلات موجود در روش‌های مطالعه شده قبلی

 

 

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

 

 

– تست نرم افزار ۲-۲

 

 

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

 

 

۲-۳- صحت و اعتبار سنجی

 

 

آزمایش نرم افزار یک عنصر از عنوان گسترده تری است که اغلب با صحت و اعتبار سنجی V&V [۴] شناخته می‌ شود. صحت اشاره به مجموعه فعالیت‌هایی دارد که مطمئن می‌سازند نرم افزار به درستی یک تابع خاص را پیاده سازی می‌نماید. اعتبارسنجی اشاره به مجموعه ای متفاوت دارد که مطمئن می ‌سازند نرم افزاری که ایجاد شده منطبق بر نیازهای مشتری است. Boehm این مطلب را اینگونه بیان می ‌کند:

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