چکیده رگرسیون این اطمینان را حاصل میکند كه تغییرات بر روی رفتار كنونی نرم افزار اثر نامطلوبی نگذاشته است. یكی از تكنیك های تست رگرسیون تكنیک اولویت بندی است كه باعث افزایش كارایی تست میشود. تکنیک های اولویت بندی موارد تست در بهبود تشخیص نرخ خطای تست رگرسیون موثراند. با این حال، بیشتر تکنیک های پیشنهاد شده قبلی برای خطاهای تشخیص داده شده در طول تست، شدت برابری را در نظر میگیرند که در عمل اینگونه نیست. علاوه بر این، بیشتر تکنیک های موجود برروی اطلاعات قبلی بدست آمده از اجرای موارد تست قبلی یا تغییر در کد برنامه تکیه میکنند و تعداد کمی از آنها میتوانندبهطور مستقیم برای تست غیر رگرسیون استفاده شوند.در این رساله،با هدف بهبود نرخ تشخیص خطا برای تست رگرسیون و همچنین تست غیر رگرسیون، پیشنهاد کردیم یک رویکرد جدید اولویت بندی موارد تست را با استفاده از شبکههای بیزی با تکیه بر تجزیه تحلیل ساختار برنامه تحت تست.برای پیاده سازی رویکرد پیشنهادی،ما از ابزار Netica و همچنینروش کد نویسی در نرم افزار MATLAB استفاده میکنیم.و همچنین از متریک APFD(متوسط درصد شناسایی خطا) جهت ارزیابی نرخ تشخیص خطا در این رساله تكیه میکنیم. و روش مبتنی بر شبکههای بیزی بر اساس تجزیه و تحلیل ساختار برنامه را ارائه خواهیم نمود. در نهایت با كمك یك بررسی موردی، كاربرد روش خود را نشان میدهیم. نتایج مقایسه تكنیك پیشنهادی با سایر تكنیك ها نشان میدهد كه روش ارائه شده نسبت به سایر روشها نتیجه دقیق تری را ارائه مینماید.ضمن اینکه روش پیشنهادی قادر به تصمیم گیری در وضعیت عدم قطعیت هم می باشد و این به عنوان ویژگی محسوب می شود. همچنین علاوه بر در نظر گرفتن معیار احتمال ابتلا به خطا و اهمیت خطا ، معیارهایی نظیر اثر گذاری خطای ماژول بر دیگر ماژولها و شدت خطای هر ماژولرا نیز مورد توجه قرار میدهد و به همین خاطر روشی کاملتر از روش مشابهمیباشدو این توانایی را دارد که علاوه بر تست رگرسیون در تست توسعه نرم افزار هم مورد استفاده قرار بگیرد.کلمات کلیدی : تست رگرسیون ، شبکه های بیزی ، اولویت بندی موارد تست، نرخ تشخیص خطا فهرست رئوس مطالبفصل اول : مقدمه و کلیات تحقیقمقدمه. 31-1 - یك شیوه استراتژیك برای آزمایش نرم افزار. 51-2- اصول آزمایش نرم افزار. 61-3- برخی از انواع سطوح تست نرم افزار . 61-4- آشنایی با شبکه های بیزی. 91-4-1- مقدمه ای بر شبکه های بیزی. 91-5- اندازه گیری و متریک. 101-6- بیان مسئله. 161-7- چالش موجود در تست رگرسیون. 171-8- راه حل برای چالش موجود در تست رگرسیون. 171-9- توجیه ضرورت انجام طرح. 181-10- هدف از اجراء. 191-11- نوآوری تحقیق. 19فصل دوم : ادبیات و پیشینه تحقیق2-1- پیشینه تحقیق. 212-1-1- کارهای مرتبط. 212-1-2- بررسی مشکلات موجود در روشهای مطالعه شده قبلی 222-2- تست نرم افزار. 242-3- صحت و اعتبار سنجی. 242-4- اهداف آزمایش. 252-5- اصول آزمایش. 262-6- قانون Paretoدر فرآیند تست نرم افزار. 262-7- چند نمونه از انواع تست. 272-8- مراحل انجام تست. 272-9- ویژگیهای یک نرمافزار تست پذیر. 282-10- ویژگیهای یک تست خوب. 292-11- طراحی نمونههای آزمایش. 302-11-1 تست جعبه سیاه . 312-11-2 تست جعبه سفید . 312-11-3 آزمایش ساختاركنترل. 312-11-4 آزمایش واحد. 312-11- 5 خطاهای متداول محاسبه که اغلب مشاهده میشوند. 322-12- آزمایش یکپارچه سازی . 322-13- آزمایش رگرسیون . 332-14- متدولوژی های مربوط به تست رگرسیون. 352-14-1- اجرای مجدد همه ی تست ها . 352-14-2- انتخاب تست رگرسیون . 362-14-3- کاهش مجموعه تست . 362-14-4- اولویت بندی موارد تست . 362-15- اولویت بندی. 372-15-1- مقدمه ای بر اولویت بندی. 372-15-2 - معیارهای اولویت دهی. 382-15-3- اولویت بندی موارد تست. 392-16- متریک. 392-16-1- مقدمه ای برای متریک. 392-17- متریک های تست نرم افزار. 402-17-1- خواص متریک ها در شرایط ایده آل. 402-18- معیار و متریک در تست نرم افزار. 432-18-1- مراحل انجام کاردر فرایند اندازه گیری. 432-19- متریک های آزمون. 432-20- مزایای استفاده از متریک ها. 442-21- شبکه های بیزی. 452-21-1- استنتاج با استفاده از توزیع توام كامل. 452-21-2- مشكلات استنتاج با توزیع توام كامل و راه حل آن ها 472-21-3- مثالی از شبکه های بیزی. 482-22- مفاهیم شبكه های بیزی. 502-22-1- نمایش توزیع توام كامل. 502-22-2- رابطه های استقلال شرطی در شبكه های بیزی. 522-22-3- نمایش كارآمد توزیع های شرطی. 532-23- یادگیری شبكه های بیزی. 542-24- استنتاج دقیق در شبكه های بیزی. 552-25- استنتاج بوسیله محاسبه تك تك عناصر احتمالی. 552-26- الگوریتم حذف متغیر. 572-27- استنتاج تقریبی در شبكه های بیزی. 582-28- روشهای نمونهگیری مستقیم. 582-28-1- نمونه گیری با رد كردن. 592-28-2- نمونه گیری وزن دار. 602-28-3- نمونه گیری زنجیره ماركوفی. 612-28-4- جمع بندی شبکههای بیزی. 622-29- تحولات انجام شده تا کنون. 63فصل سوم : روش تحقیق-3 انگیزه و هدف ما از ارائه این رویکرد. 663-1- رویکرد پیشنهادی. 683-1-1- روند کلی در رویکرد پیشنهادی. 683-2- محاسبه و استخراج شاخصها برای ماژولها. 703-3 - معیارهای رویکرد پیشنهادی. 703-3-1- اهمیت هر ماژول. 713-3-2- احتمال ابتلا به خطای ماژول. 723-3-3- اثرگذاری خطای ماژول بر دیگر ماژولها. 723-3-4- شدت خطای هر ماژول. 733-4- شاخصهای وزن دهی به ماژول ها. 743-5- ساخت شبکه بیزی. 743-6- ایجاد ساختار گراف. 753-7- محاسبه جداول احتمال شرطی. 763-8- تبدیل اندازهی كیفی صفت هابه مقادیركمی. 793-9-روش اول برای صفت های سه حالته. 793-9-1- مثالی از روش اول برای صفت های سه حالته. 803-10- روش دوم برای صفتهای سه حالته. 813-10-1- مثالی از روش دوم برای صفت های سه حالته. 813-11- تبدیل اندازهی كیفی صفت های غیرهم وزن به مقادیركمی 823-11-1- مثالی از روش تبدیل اندازهی كیفی صفت های غیرهم وزن به مقادیركمی. 833-12- پیاده سازی مدل تست کارآمد نرم افزار با استفاده از نرم افزار Netica. 853-13- پركردن جدول احتمال شرطی با استفاده از كد نویسی 873-14- نمونه هایی از جداول احتمال شرطی فاکتورهای تست و کارآمدی اولویت بندی. 903-15- پیاده سازی رویکرد پیشنهادی در مثال واقعی. 94فصل چهارم : محاسبات و یافته های تحقیق- 4 1- ارزیابی مدل پیشنهادی. 972-4 - متریک (APFD). 974-3- اولویت بندی با کمک تکنیک شبکه های بییزی . 984-4- اولویت بندی با تکنیک اصلی . 1014-5- اولویت بندی با تکنیک تصادفی. 1024-6- مقایسه روش های اولویت بندی با روش پیشنهادی. 103فصل پنجم : نتیجه گیری و پیشنهادات1-5 نتیجه گیری. 1082-5 پیشنهادات آینده. 110 پیوست الف: واژه نامه ی فارسی به انگلیسی. 111پیوست ب: واژه نامه ی انگلیسی به فارسی. 114 منابع و ماخذ. 117 جدول2-1: توزیع یک قلمرو ساده45جدول2-2 : سیر تحولات در مورد اولویت بندی موارد تست63جدول3-1 : سیستمی ساده شامل 10 ماژول و 10 مورد تست67جدول3-2 : سطح شدت خطای هر ماژول74جدول3-3 : تعداد سطرهای جدول احتمال شرطی فاکتورهای تست78جدول3-4 : انتساب مقدار عددی به اندازههای کیفی در صفتهای سه حالته79جدول3-5 : بازههای تبدیل میانگین به اندازههای کیفی در صفتهای سه حالته80جدول3-6 : نمونه سطری از جدول احتمال شرطی فاكتوراحتمال ابتلا به خطای ماژول، سه حالته81جدول3-7 : سطری از جدول احتمال شرطی احتمال ابتلا به خطای ماژول با سه ویژگی فرعی82جدول3-8 : نمونه سطری از جدول احتمال شرطی فاكتوراحتمال ابتلا به خطای ماژول، سه حالته85جدول3-9 : اندازه درصد احتمال حالتها در فاکتورها بدون مشاهده ویژگیهای فرعی، سه حالته87جدول3-10: اندازه ویژگیهای فرعی در یک پروژه نرم افزاری نمونه94جدول4-1: تعداد خطای شناسایی شده توسط موارد تست با توجه به زمان کل هر مورد تست98 فهرست تصاویر و نمودار شكل2-2 : شبکه بیزی قلمرو دستگاه آژیر48شکل3-2 : ارائه مفاهیم ساختاری به دو صورت معمول53شكل4-2 : جواب به درخواست با محاسبه عبارت بهینهتر56شکل5-2 : الگوریتم حذف متغیر57شكل6-2 : الگوریتم نمونهگیری با رد کردن59شكل7-2 : الگوریتم نمونهگیری وزندار61شكل8-2 : الگوریتم نمونهگیری وزندار62شکل3-1 : ماژول های یک سیستم ساده نرم افزاری66شکل3-2 : یک پیاده سازی عمومی برای چارچوب مبتنی بر شبکه های بیزی69شکل3-3 : گراف شبکه بیزی تست کارآمد نرم افزار75شکل3-4 : پیاده سازی مدل تست کارآمد نرم افزار با استفاده ازنرم افزار Netica86شکل3-5 : شبه کد پر کردن جدول احتمال شرطی برای اهمیت ماژول با دو ویژگی فرعی88شکل3-6 : شبه کد پر کردن جدول احتمال شرطی برای تعداد خطاها با سه ویژگی فرعی89شکل3-7 : جدول احتمال شرطی تعداد موارد تست90شکل3-8 : جدول احتمال شرطی تعداد خطاها91شکل3-9 : جدول احتمال شرطی اهمیت ماژول92شکل3-10 : جدول احتمال شرطی کارآمدی نهایی تست نرم افزار93شکل3-11 : پیاده سازیمدلتست کارآمد نرم افزار بروی سیستم مدیریت پرونده های قضایی95شکل4-1 : نمودار نرخ شناسایی خطا با روش BN برای اولویت بندی موارد تست100شکل4-2 : نمودار نرخ شناسایی خطا با روش Orginal برای اولویت بندی موارد تست102شکل4-3 : نمودار نرخ شناسایی خطا با روش Random برای اولویت بندی موارد تست103شکل4-4 : نمودار مقایسه نتایج روش پیشنهادی با دو روش دیگر در نرخ شناسایی خطا104 فصل اولمقدمه و کلیات تحقیقسیستم های نرم افزاری امروزه با فراگیر شدن در علوم مختلف نقش بسیار مهمی را در برطرف نمودن نیازها و خواستههای مشتریان ایفا میکنند و همچنین به عنوان یک جزء اصلی و لاینفک در امور روزمره به حساب میآیند. با گسترش روز افزون تولید سیستم های نرم افزاری همچنان تقاضا برای تولید سیستم های نرم افزاری جدید وجود دارد. بحث مهمبعد از تولید نرم افزارها نگهداری و ارتقاء آنها میباشد. وجود خطا و اشتباه در نرم افزارها میتواند منجر به خسارات زیادی از قبیل هزینههای مالی، زمانی، فیزیکی وحتی در برخی کاربردهای حساس و بحرانی مانندکاربردهای پزشکی، کنترل کننده موشک و کنترل کنندههای ترافیک هوایی خسارت جانی را نیز به بار آورد. از این رو برای اینکه قابلیت اطمینان را در استفاده از سیستم های نرم اقزاری افزایش دهیم باید نرم افزار را مورد تست قرار دهیم. تست نرم افزار در توسعه سیستم های نرم افزاری از جایگاه مهم و با ارزشی برخوردار است. بهخصوص در سیستم های نرم افزاری مقیاس بزرگ و پیچیده امروزی. زیرا فعالیتهای تست هم زمان بر و هم هزینه بر هستند. نرم افزارها برای اینکه ارتقاء یابند میبایست توسعه داده شوند و نسبت به نسخههای اولیه رشد و تکامل یابند. یکی از فعالیتهای مهم و هزینه بر در جهت ارتقاء نرم افزار تست نرم افزار است که انواع متفاوتی از تست برای بخشهای مختلف و در زمانهای مختلف طراحی و ایجاد شدهاند. تست فرآیندی است مخرب که محصول نرم افزاری را مورد حمله قرار میدهد تا اینکه خطا بروز کند. تست نرم افزار شامل تحقیق و بررسی بر روی نرم افزار تولید شده است که این تحقیق و برسی برای پیدا کردن خطاهاانجام میشود. به طور کلی یک سری از سوال و جوابهایی هستند که نرمافزار را با آن امتحان میکنیم در حالی که از برنامه انتظار داریم با توجه به ورودیهایی که با استفاده از سوالات وارد میکنیم، جوابهای صحیحی را به عنوان خروجی به دست دهد.آزمایش نرمافزار حیطه وسیعی از فعالیتهای مربوط به تولید برنامههای رایانهای را دربرمیگیرد که از آزمایش کردن کد برنامه توسط برنامهنویس گرفته تا نشان دادن عملکرد درست یک سیستم اطلاعاتی بزرگ به مشتری.سازمانها یا شرکتهایی که نرم افزارها را توسعه میدهند، محصولی به نام نرم افزار تولید میکنند. ولی چه عامل یا عواملی باعث میشوند که یک نرم افزار از نرم افزار مشابه دیگر متمایز و برجسته شود؟ عوامل متعددی را میتوان نام برد که باعث این برتری و تمایز شود اما یکی از این عوامل میتواند کیفیت محصول نهایی باشد که به بازار عرضه خواهد شد. اما برای رسیدن به این نقطه برتری، باید چگونه عمل کرد و اندیشید؟ یکی از پاسخهابه این سوال بدون شک تست نرم افزار و نحوه انجام آنمیتواند باشد.اهمیتآزمایشنرمافزارواثراتآنبركیفیتنرمافزارنیازبهتأكیدبیشترندارد.Deutch دراینبارهاینگونهبیانمینماید: توسعهسیستمهاینرمافزاریشاملیكسریفعالیتهایتولیدمیباشدكهامكاناشتباهاتانسانیدرآنزیاداست.خطاهادرابتداییكفرآیندومراحلتوسعهبعدیآنظهورمینمایند. بهدلیلعدمتواناییانجامكارهاوبرقراریارتباطبهصورتكامل،توسعهنرمافزارهموارهبافعالیتتضمینكیفیتهمراهاست. آزمایشنرمافزارعنصریحیاتیازتضمینكیفیتنرمافزارمیباشدومرورتقریبیمشخصه،طراحی،وتولیدكدرانشانمیدهد.[1] 1-1 – یكشیوهاستراتژیكبرایآزمایشنرمافزارآزمایش،مجموعهفعالیتهاییاستكهمیتواندازقبلبهصورتسیستماتیكبرنامهریزیوهدایتشوند . بهایندلیل، الگوییبرایآزمایشنرمافزاربایدبرایفرآیندنرمافزارتعریفشود. اینالگوشاملمجموعهمراحلیاستكهمیتوانتكنیكهایخاصطراحینمونههایآزمایشوروشهایآزمایشرادرآنقرارداد.چنداستراتژیآزمایشنرمافزاردراینرابطهپیشنهادشدهاست . همهآنهابرایتوسعهدهندهنرمافزار،الگوییرابهمنظورآزمایشفراهممیکنندوهمگیدارایخصوصیاتزیرهستند:ü آزمایش از سطح مؤلفه شروع میشود به سمت خارج در جهت مجتمع سازی كل سیستم كامپیوتری پیش میرود.ü تكنیك های متفاوت آزمایش، در نقاط زمانی مختلف مناسب می باشند.ü آزمایش توسط توسعه دهنده نرم افزار و برای پروژههای بزرگ توسط گروه مستقل آزمایش، هدایت میشود.ü آزمایش و اشكال زدایی فعالیتهای متفاوتی هستند، اما اشكال زدایی باید با هر استراتژی آزمایش همراه باشد.یك استراتژی برای آزمایش نرم افزار باید آزمایشهای سطح پایینی را هدایت كند كه برای بازبینی صحت پیاده سازی یك قطعه كد كوچك لازم می باشند.همچنین این استراتژی باید آزمایشهای سطح بالایی را سازمان دهی كند كه اكثر توابع سیستم را در رابطه با نیازهای مشتری اعتبار سنجی می نمایند. یك استراتژی باید راهنماییهایی را برای مجری و مجموعه ای از علایم نشان دهنده را برای مدیر فراهم نماید. چون این مراحل استراتژی آزمایش زمانی انجام می شوند كه فشار مربوط به پایان مهلت، شروع به افزایش مینماید، پیشرفت باید قابل اندازه گیری باشد و مشكلات باید تا حد امكان به سادگی برطرف شوند.آزمایش، موارد غیر معمول جالب توجه ای را برای مهندس نرم افزار آشكار مینماید. در ضمن فعالیتهای اولیه مهندسی نرم افزار، مهندس، سعی در ایجاد نرم افزار با استفاده از مفهومی مجرد و بدست آوردن محصولی واضح و كامل دارد و اینك آزمایش باید انجام شود .مهندس تست یكسری نمونههای آزمایش ایجاد می کند كه باید نرم افزار ایجاد شده را با شكست روبرو نماید. در واقع، آزمایش، یك مرحله در فرآیند نرم افزار است كه می تواند به عنوان فرآیندی مخرب به جای سازنده در نظر گرفته شود (حداقل از نظر روانشناسی) به هرحال هدف از آزمایش چیزی متفاوت از آنچه انتظار می رود می باشد. در بسیاری از شرکتها حدود 30 تا 50 درصد از هزینه نرم افزار را صرف تست آن میکنند، با این وجود برخی هنوز هم بر این عقیدهاند که نرم افزارها قبل از انتشار و تحویل به مشتری به درستی تست نمیشوند. چند دلیل باعث این باور میشوند : اول اینکه انجام تست نرم افزار امری است بسیار مشکل. دوم اینکه معمولاَ به خاطر زمانبر بودن و دیگر عوامل از قبیل : هزینهی بالای تست نرم افزار ، فشارهای وارده از سوی بازار ، مشتری و رقبا منجر به این شدهاند تا مدت زمان اختصاص داده شده برای انجام تست بسیار کمتر از دیگر بخشهای فرایند تولید نرم افزار گردد. دلیل دیگر نداشتن برنامه (استفاده از متدولوژی و ابزاری مشخص) برای تست کردن میباشد. با این وجود تمامی شرکتهای تولید کننده نرم افزار با هدف تولید نرم افزاری با کیفیت و افزایش رضایتمندی مشتری، محصول خود را مورد تست قرار میدهند. کیفیت چیزی است که ما در تمامی چرخه تولید نرم افزار از قبیل تولید محصولات نرم افزاری ، فرایندها و خدمات ارائه شده به مشتری یا کاربران به دنبال آن هستیم. [2]
اولویت بندی کارآمد موارد تست نرم افزار به کمک شبکه های بیزی WORD
چکیده رگرسیون این اطمینان را حاصل میکند كه تغییرات بر روی رفتار كنونی نرم افزار اثر نامطلوبی نگذاشته است. یكی از تكنیك های تست رگرسیون تكنیک اولویت بندی است كه باعث افزایش كارایی تست میشود. تکنیک های اولویت بندی موارد تست در بهبود تشخیص نرخ خطای تست رگرسیون موثراند. با این حال، بیشتر تکنیک های پیشنهاد شده قبلی برای خطاهای تشخیص داده شده در طول تست، شدت برابری را در نظر میگیرند که در عمل اینگونه نیست. علاوه بر این، بیشتر تکنیک های موجود برروی اطلاعات قبلی بدست آمده از اجرای موارد تست قبلی یا تغییر در کد برنامه تکیه میکنند و تعداد کمی از آنها میتوانندبهطور مستقیم برای تست غیر رگرسیون استفاده شوند.در این رساله،با هدف بهبود نرخ تشخیص خطا برای تست رگرسیون و همچنین تست غیر رگرسیون، پیشنهاد کردیم یک رویکرد جدید اولویت بندی موارد تست را با استفاده از شبکههای بیزی با تکیه بر تجزیه تحلیل ساختار برنامه تحت تست.برای پیاده سازی رویکرد پیشنهادی،ما از ابزار Netica و همچنینروش کد نویسی در نرم افزار MATLAB استفاده میکنیم.و همچنین از متریک APFD(متوسط درصد شناسایی خطا) جهت ارزیابی نرخ تشخیص خطا در این رساله تكیه میکنیم. و روش مبتنی بر شبکههای بیزی بر اساس تجزیه و تحلیل ساختار برنامه را ارائه خواهیم نمود. در نهایت با كمك یك بررسی موردی، كاربرد روش خود را نشان میدهیم. نتایج مقایسه تكنیك پیشنهادی با سایر تكنیك ها نشان میدهد كه روش ارائه شده نسبت به سایر روشها نتیجه دقیق تری را ارائه مینماید.ضمن اینکه روش پیشنهادی قادر به تصمیم گیری در وضعیت عدم قطعیت هم می باشد و این به عنوان ویژگی محسوب می شود. همچنین علاوه بر در نظر گرفتن معیار احتمال ابتلا به خطا و اهمیت خطا ، معیارهایی نظیر اثر گذاری خطای ماژول بر دیگر ماژولها و شدت خطای هر ماژولرا نیز مورد توجه قرار میدهد و به همین خاطر روشی کاملتر از روش مشابهمیباشدو این توانایی را دارد که علاوه بر تست رگرسیون در تست توسعه نرم افزار هم مورد استفاده قرار بگیرد.کلمات کلیدی : تست رگرسیون ، شبکه های بیزی ، اولویت بندی موارد تست، نرخ تشخیص خطا فهرست رئوس مطالبفصل اول : مقدمه و کلیات تحقیقمقدمه. 31-1 - یك شیوه استراتژیك برای آزمایش نرم افزار. 51-2- اصول آزمایش نرم افزار. 61-3- برخی از انواع سطوح تست نرم افزار . 61-4- آشنایی با شبکه های بیزی. 91-4-1- مقدمه ای بر شبکه های بیزی. 91-5- اندازه گیری و متریک. 101-6- بیان مسئله. 161-7- چالش موجود در تست رگرسیون. 171-8- راه حل برای چالش موجود در تست رگرسیون. 171-9- توجیه ضرورت انجام طرح. 181-10- هدف از اجراء. 191-11- نوآوری تحقیق. 19فصل دوم : ادبیات و پیشینه تحقیق2-1- پیشینه تحقیق. 212-1-1- کارهای مرتبط. 212-1-2- بررسی مشکلات موجود در روشهای مطالعه شده قبلی 222-2- تست نرم افزار. 242-3- صحت و اعتبار سنجی. 242-4- اهداف آزمایش. 252-5- اصول آزمایش. 262-6- قانون Paretoدر فرآیند تست نرم افزار. 262-7- چند نمونه از انواع تست. 272-8- مراحل انجام تست. 272-9- ویژگیهای یک نرمافزار تست پذیر. 282-10- ویژگیهای یک تست خوب. 292-11- طراحی نمونههای آزمایش. 302-11-1 تست جعبه سیاه . 312-11-2 تست جعبه سفید . 312-11-3 آزمایش ساختاركنترل. 312-11-4 آزمایش واحد. 312-11- 5 خطاهای متداول محاسبه که اغلب مشاهده میشوند. 322-12- آزمایش یکپارچه سازی . 322-13- آزمایش رگرسیون . 332-14- متدولوژی های مربوط به تست رگرسیون. 352-14-1- اجرای مجدد همه ی تست ها . 352-14-2- انتخاب تست رگرسیون . 362-14-3- کاهش مجموعه تست . 362-14-4- اولویت بندی موارد تست . 362-15- اولویت بندی. 372-15-1- مقدمه ای بر اولویت بندی. 372-15-2 - معیارهای اولویت دهی. 382-15-3- اولویت بندی موارد تست. 392-16- متریک. 392-16-1- مقدمه ای برای متریک. 392-17- متریک های تست نرم افزار. 402-17-1- خواص متریک ها در شرایط ایده آل. 402-18- معیار و متریک در تست نرم افزار. 432-18-1- مراحل انجام کاردر فرایند اندازه گیری. 432-19- متریک های آزمون. 432-20- مزایای استفاده از متریک ها. 442-21- شبکه های بیزی. 452-21-1- استنتاج با استفاده از توزیع توام كامل. 452-21-2- مشكلات استنتاج با توزیع توام كامل و راه حل آن ها 472-21-3- مثالی از شبکه های بیزی. 482-22- مفاهیم شبكه های بیزی. 502-22-1- نمایش توزیع توام كامل. 502-22-2- رابطه های استقلال شرطی در شبكه های بیزی. 522-22-3- نمایش كارآمد توزیع های شرطی. 532-23- یادگیری شبكه های بیزی. 542-24- استنتاج دقیق در شبكه های بیزی. 552-25- استنتاج بوسیله محاسبه تك تك عناصر احتمالی. 552-26- الگوریتم حذف متغیر. 572-27- استنتاج تقریبی در شبكه های بیزی. 582-28- روشهای نمونهگیری مستقیم. 582-28-1- نمونه گیری با رد كردن. 592-28-2- نمونه گیری وزن دار. 602-28-3- نمونه گیری زنجیره ماركوفی. 612-28-4- جمع بندی شبکههای بیزی. 622-29- تحولات انجام شده تا کنون. 63فصل سوم : روش تحقیق-3 انگیزه و هدف ما از ارائه این رویکرد. 663-1- رویکرد پیشنهادی. 683-1-1- روند کلی در رویکرد پیشنهادی. 683-2- محاسبه و استخراج شاخصها برای ماژولها. 703-3 - معیارهای رویکرد پیشنهادی. 703-3-1- اهمیت هر ماژول. 713-3-2- احتمال ابتلا به خطای ماژول. 723-3-3- اثرگذاری خطای ماژول بر دیگر ماژولها. 723-3-4- شدت خطای هر ماژول. 733-4- شاخصهای وزن دهی به ماژول ها. 743-5- ساخت شبکه بیزی. 743-6- ایجاد ساختار گراف. 753-7- محاسبه جداول احتمال شرطی. 763-8- تبدیل اندازهی كیفی صفت هابه مقادیركمی. 793-9-روش اول برای صفت های سه حالته. 793-9-1- مثالی از روش اول برای صفت های سه حالته. 803-10- روش دوم برای صفتهای سه حالته. 813-10-1- مثالی از روش دوم برای صفت های سه حالته. 813-11- تبدیل اندازهی كیفی صفت های غیرهم وزن به مقادیركمی 823-11-1- مثالی از روش تبدیل اندازهی كیفی صفت های غیرهم وزن به مقادیركمی. 833-12- پیاده سازی مدل تست کارآمد نرم افزار با استفاده از نرم افزار Netica. 853-13- پركردن جدول احتمال شرطی با استفاده از كد نویسی 873-14- نمونه هایی از جداول احتمال شرطی فاکتورهای تست و کارآمدی اولویت بندی. 903-15- پیاده سازی رویکرد پیشنهادی در مثال واقعی. 94فصل چهارم : محاسبات و یافته های تحقیق- 4 1- ارزیابی مدل پیشنهادی. 972-4 - متریک (APFD). 974-3- اولویت بندی با کمک تکنیک شبکه های بییزی . 984-4- اولویت بندی با تکنیک اصلی . 1014-5- اولویت بندی با تکنیک تصادفی. 1024-6- مقایسه روش های اولویت بندی با روش پیشنهادی. 103فصل پنجم : نتیجه گیری و پیشنهادات1-5 نتیجه گیری. 1082-5 پیشنهادات آینده. 110 پیوست الف: واژه نامه ی فارسی به انگلیسی. 111پیوست ب: واژه نامه ی انگلیسی به فارسی. 114 منابع و ماخذ. 117 جدول2-1: توزیع یک قلمرو ساده45جدول2-2 : سیر تحولات در مورد اولویت بندی موارد تست63جدول3-1 : سیستمی ساده شامل 10 ماژول و 10 مورد تست67جدول3-2 : سطح شدت خطای هر ماژول74جدول3-3 : تعداد سطرهای جدول احتمال شرطی فاکتورهای تست78جدول3-4 : انتساب مقدار عددی به اندازههای کیفی در صفتهای سه حالته79جدول3-5 : بازههای تبدیل میانگین به اندازههای کیفی در صفتهای سه حالته80جدول3-6 : نمونه سطری از جدول احتمال شرطی فاكتوراحتمال ابتلا به خطای ماژول، سه حالته81جدول3-7 : سطری از جدول احتمال شرطی احتمال ابتلا به خطای ماژول با سه ویژگی فرعی82جدول3-8 : نمونه سطری از جدول احتمال شرطی فاكتوراحتمال ابتلا به خطای ماژول، سه حالته85جدول3-9 : اندازه درصد احتمال حالتها در فاکتورها بدون مشاهده ویژگیهای فرعی، سه حالته87جدول3-10: اندازه ویژگیهای فرعی در یک پروژه نرم افزاری نمونه94جدول4-1: تعداد خطای شناسایی شده توسط موارد تست با توجه به زمان کل هر مورد تست98 فهرست تصاویر و نمودار شكل2-2 : شبکه بیزی قلمرو دستگاه آژیر48شکل3-2 : ارائه مفاهیم ساختاری به دو صورت معمول53شكل4-2 : جواب به درخواست با محاسبه عبارت بهینهتر56شکل5-2 : الگوریتم حذف متغیر57شكل6-2 : الگوریتم نمونهگیری با رد کردن59شكل7-2 : الگوریتم نمونهگیری وزندار61شكل8-2 : الگوریتم نمونهگیری وزندار62شکل3-1 : ماژول های یک سیستم ساده نرم افزاری66شکل3-2 : یک پیاده سازی عمومی برای چارچوب مبتنی بر شبکه های بیزی69شکل3-3 : گراف شبکه بیزی تست کارآمد نرم افزار75شکل3-4 : پیاده سازی مدل تست کارآمد نرم افزار با استفاده ازنرم افزار Netica86شکل3-5 : شبه کد پر کردن جدول احتمال شرطی برای اهمیت ماژول با دو ویژگی فرعی88شکل3-6 : شبه کد پر کردن جدول احتمال شرطی برای تعداد خطاها با سه ویژگی فرعی89شکل3-7 : جدول احتمال شرطی تعداد موارد تست90شکل3-8 : جدول احتمال شرطی تعداد خطاها91شکل3-9 : جدول احتمال شرطی اهمیت ماژول92شکل3-10 : جدول احتمال شرطی کارآمدی نهایی تست نرم افزار93شکل3-11 : پیاده سازیمدلتست کارآمد نرم افزار بروی سیستم مدیریت پرونده های قضایی95شکل4-1 : نمودار نرخ شناسایی خطا با روش BN برای اولویت بندی موارد تست100شکل4-2 : نمودار نرخ شناسایی خطا با روش Orginal برای اولویت بندی موارد تست102شکل4-3 : نمودار نرخ شناسایی خطا با روش Random برای اولویت بندی موارد تست103شکل4-4 : نمودار مقایسه نتایج روش پیشنهادی با دو روش دیگر در نرخ شناسایی خطا104 فصل اولمقدمه و کلیات تحقیقسیستم های نرم افزاری امروزه با فراگیر شدن در علوم مختلف نقش بسیار مهمی را در برطرف نمودن نیازها و خواستههای مشتریان ایفا میکنند و همچنین به عنوان یک جزء اصلی و لاینفک در امور روزمره به حساب میآیند. با گسترش روز افزون تولید سیستم های نرم افزاری همچنان تقاضا برای تولید سیستم های نرم افزاری جدید وجود دارد. بحث مهمبعد از تولید نرم افزارها نگهداری و ارتقاء آنها میباشد. وجود خطا و اشتباه در نرم افزارها میتواند منجر به خسارات زیادی از قبیل هزینههای مالی، زمانی، فیزیکی وحتی در برخی کاربردهای حساس و بحرانی مانندکاربردهای پزشکی، کنترل کننده موشک و کنترل کنندههای ترافیک هوایی خسارت جانی را نیز به بار آورد. از این رو برای اینکه قابلیت اطمینان را در استفاده از سیستم های نرم اقزاری افزایش دهیم باید نرم افزار را مورد تست قرار دهیم. تست نرم افزار در توسعه سیستم های نرم افزاری از جایگاه مهم و با ارزشی برخوردار است. بهخصوص در سیستم های نرم افزاری مقیاس بزرگ و پیچیده امروزی. زیرا فعالیتهای تست هم زمان بر و هم هزینه بر هستند. نرم افزارها برای اینکه ارتقاء یابند میبایست توسعه داده شوند و نسبت به نسخههای اولیه رشد و تکامل یابند. یکی از فعالیتهای مهم و هزینه بر در جهت ارتقاء نرم افزار تست نرم افزار است که انواع متفاوتی از تست برای بخشهای مختلف و در زمانهای مختلف طراحی و ایجاد شدهاند. تست فرآیندی است مخرب که محصول نرم افزاری را مورد حمله قرار میدهد تا اینکه خطا بروز کند. تست نرم افزار شامل تحقیق و بررسی بر روی نرم افزار تولید شده است که این تحقیق و برسی برای پیدا کردن خطاهاانجام میشود. به طور کلی یک سری از سوال و جوابهایی هستند که نرمافزار را با آن امتحان میکنیم در حالی که از برنامه انتظار داریم با توجه به ورودیهایی که با استفاده از سوالات وارد میکنیم، جوابهای صحیحی را به عنوان خروجی به دست دهد.آزمایش نرمافزار حیطه وسیعی از فعالیتهای مربوط به تولید برنامههای رایانهای را دربرمیگیرد که از آزمایش کردن کد برنامه توسط برنامهنویس گرفته تا نشان دادن عملکرد درست یک سیستم اطلاعاتی بزرگ به مشتری.سازمانها یا شرکتهایی که نرم افزارها را توسعه میدهند، محصولی به نام نرم افزار تولید میکنند. ولی چه عامل یا عواملی باعث میشوند که یک نرم افزار از نرم افزار مشابه دیگر متمایز و برجسته شود؟ عوامل متعددی را میتوان نام برد که باعث این برتری و تمایز شود اما یکی از این عوامل میتواند کیفیت محصول نهایی باشد که به بازار عرضه خواهد شد. اما برای رسیدن به این نقطه برتری، باید چگونه عمل کرد و اندیشید؟ یکی از پاسخهابه این سوال بدون شک تست نرم افزار و نحوه انجام آنمیتواند باشد.اهمیتآزمایشنرمافزارواثراتآنبركیفیتنرمافزارنیازبهتأكیدبیشترندارد.Deutch دراینبارهاینگونهبیانمینماید: توسعهسیستمهاینرمافزاریشاملیكسریفعالیتهایتولیدمیباشدكهامكاناشتباهاتانسانیدرآنزیاداست.خطاهادرابتداییكفرآیندومراحلتوسعهبعدیآنظهورمینمایند. بهدلیلعدمتواناییانجامكارهاوبرقراریارتباطبهصورتكامل،توسعهنرمافزارهموارهبافعالیتتضمینكیفیتهمراهاست. آزمایشنرمافزارعنصریحیاتیازتضمینكیفیتنرمافزارمیباشدومرورتقریبیمشخصه،طراحی،وتولیدكدرانشانمیدهد.[1] 1-1 – یكشیوهاستراتژیكبرایآزمایشنرمافزارآزمایش،مجموعهفعالیتهاییاستكهمیتواندازقبلبهصورتسیستماتیكبرنامهریزیوهدایتشوند . بهایندلیل، الگوییبرایآزمایشنرمافزاربایدبرایفرآیندنرمافزارتعریفشود. اینالگوشاملمجموعهمراحلیاستكهمیتوانتكنیكهایخاصطراحینمونههایآزمایشوروشهایآزمایشرادرآنقرارداد.چنداستراتژیآزمایشنرمافزاردراینرابطهپیشنهادشدهاست . همهآنهابرایتوسعهدهندهنرمافزار،الگوییرابهمنظورآزمایشفراهممیکنندوهمگیدارایخصوصیاتزیرهستند:ü آزمایش از سطح مؤلفه شروع میشود به سمت خارج در جهت مجتمع سازی كل سیستم كامپیوتری پیش میرود.ü تكنیك های متفاوت آزمایش، در نقاط زمانی مختلف مناسب می باشند.ü آزمایش توسط توسعه دهنده نرم افزار و برای پروژههای بزرگ توسط گروه مستقل آزمایش، هدایت میشود.ü آزمایش و اشكال زدایی فعالیتهای متفاوتی هستند، اما اشكال زدایی باید با هر استراتژی آزمایش همراه باشد.یك استراتژی برای آزمایش نرم افزار باید آزمایشهای سطح پایینی را هدایت كند كه برای بازبینی صحت پیاده سازی یك قطعه كد كوچك لازم می باشند.همچنین این استراتژی باید آزمایشهای سطح بالایی را سازمان دهی كند كه اكثر توابع سیستم را در رابطه با نیازهای مشتری اعتبار سنجی می نمایند. یك استراتژی باید راهنماییهایی را برای مجری و مجموعه ای از علایم نشان دهنده را برای مدیر فراهم نماید. چون این مراحل استراتژی آزمایش زمانی انجام می شوند كه فشار مربوط به پایان مهلت، شروع به افزایش مینماید، پیشرفت باید قابل اندازه گیری باشد و مشكلات باید تا حد امكان به سادگی برطرف شوند.آزمایش، موارد غیر معمول جالب توجه ای را برای مهندس نرم افزار آشكار مینماید. در ضمن فعالیتهای اولیه مهندسی نرم افزار، مهندس، سعی در ایجاد نرم افزار با استفاده از مفهومی مجرد و بدست آوردن محصولی واضح و كامل دارد و اینك آزمایش باید انجام شود .مهندس تست یكسری نمونههای آزمایش ایجاد می کند كه باید نرم افزار ایجاد شده را با شكست روبرو نماید. در واقع، آزمایش، یك مرحله در فرآیند نرم افزار است كه می تواند به عنوان فرآیندی مخرب به جای سازنده در نظر گرفته شود (حداقل از نظر روانشناسی) به هرحال هدف از آزمایش چیزی متفاوت از آنچه انتظار می رود می باشد. در بسیاری از شرکتها حدود 30 تا 50 درصد از هزینه نرم افزار را صرف تست آن میکنند، با این وجود برخی هنوز هم بر این عقیدهاند که نرم افزارها قبل از انتشار و تحویل به مشتری به درستی تست نمیشوند. چند دلیل باعث این باور میشوند : اول اینکه انجام تست نرم افزار امری است بسیار مشکل. دوم اینکه معمولاَ به خاطر زمانبر بودن و دیگر عوامل از قبیل : هزینهی بالای تست نرم افزار ، فشارهای وارده از سوی بازار ، مشتری و رقبا منجر به این شدهاند تا مدت زمان اختصاص داده شده برای انجام تست بسیار کمتر از دیگر بخشهای فرایند تولید نرم افزار گردد. دلیل دیگر نداشتن برنامه (استفاده از متدولوژی و ابزاری مشخص) برای تست کردن میباشد. با این وجود تمامی شرکتهای تولید کننده نرم افزار با هدف تولید نرم افزاری با کیفیت و افزایش رضایتمندی مشتری، محصول خود را مورد تست قرار میدهند. کیفیت چیزی است که ما در تمامی چرخه تولید نرم افزار از قبیل تولید محصولات نرم افزاری ، فرایندها و خدمات ارائه شده به مشتری یا کاربران به دنبال آن هستیم. [2]