جدول (۳-۱) نمونه ای از موارد آزمون و خطاهای شناساییشده و هزینه و پوشش ۷۹
جدول(۳-۲) ترتیب انتخاب موارد آزمون و اجرای آزمون رگرسیون۷۹
جدول( ۳-۳) نمونهی از خطا و دشواری خطا۸۰
فصل ۱: مقدمه
۱-۱- هدف
در فاز توسعه و نگهداری نرمافزار بـرای رفـع خطاهـای موجـود در نرمافزار و همچنین پیادهسازی تغییراتی که در برنامـه ایجادشده است، متناوبا نرمافزار اصلاح میشود و تغییراتـی در آن داده میشود. پس از هر تغییر در نرمافزار، برای بررسی اینکه رفتار بر روی قسمتهای بلا تغییر تاثیری نداشته باشد و همچنین بـرای اعتبارسـنجی مجدد، آزمونهای فعلـی را تکرار میکنند. درعینحال اعتبارسنجی قسمتهای تغییریافته نرمافزار هر بار نیازمند طراحی تعدادی آزمونهای جدید است که بهاینترتیب حجم آزمونهای نرمافزار مرتباً رو به افـزایش اسـت. بنـابراین، ایـن فـاز ضروری در توسعه محصول نـرم افـزاری کـه بـرای آشکارسـازی عیـوب نرمافزار و مشــخص کــردن ســطح کیفــی آن بــا توجــه بــه یکســری خصوصیات منتخب، انجام میشود [۱]، بسـیاری از هزینههای توسـعه نرمافزار (بین ۳۰ تا ۵۰ درصـد) را بـه خـود اختصـاص میدهند. ایـن آزمونهای مکرر در مرحله نگهداری نرمافزار در حال تکامل و اصـلاح که با ایجاد هر تغییر در کد نرمافزار، برای اطمینان از عدم تأثیرپذیری نامطلوبِ بخشهای اصلاحنشده کد از تغییرات صورت میگیرد آزمون رگرسیون نرمافزار[۱] نامیده میشود.
به دلیل محدودیت زمـان و منـابعِ در دسـترس بـرای گـروه آزمـون در دنیای واقعی، آزمون کامل اغلب غیرعملی است [۲،۱]. روشهای گونـاگونی برای حل مشکل هزینه زیاد آزمون رگرسیون ارائهشده اسـت. در بـین این روشها، سه روش عمده که بر پایـه اسـتفاده مجـدد از مخـزن آزمـون اســتوارند عبارتاند از: ” آزمــون رگرسیون انتخابی “، ”کاهش مجموعه آزمون“ و ”اولویتدهی موارد آزمون[۲]“ [۲]. روش آزمــون رگرسیون انتخابی از اطلاعات درباره برنامه، برنامه اصلاحشده و موارد آزمونی که برای زیرمجموعه آزمون انتخاب میشود، استفاده میکند. تکنیکهای انتخاب آزمون معمولاً کد منبع برنامه را استفاده میکنند برای تعیین اینکه کدام مورد آزمون بهتر است در طول مرحله آزمون رگرسیون اجرا شود [۳]. یکی از اهداف مهم انتخاب موارد آزمون افزایش نرخ قابلیت تشخیص خطا هست. روش اولویتدهی موارد آزمون تلاش میکند بـا ترتیـب دهـی اجـرای مـوارد آزمون بر اساس یک معیار شایستگی به بهبود آزمـون رگرسـیون نـرم افزاری بپردازد بهگونهای که مهمترینها ابتدا اجرا شوند. یکی از اهداف عمده [۴] در اولویتدهی موارد آزمون این اسـت کـه بـا اجـرای مـوارد آزمونی که تعداد بیشتری از خطاها را اجرا میکنند، متوسـط کشـف خطا را در طول اجرای آزمون تا جای ممکن افـزایش داد تـا بـا کشـف سریعتر این خطاها امکان بازخورد سریعتر بـه گروه توسـعه نرمافزار و ارسال آن برای ویرایش و تصحیح خطا میسر شود. با این کار میتوان مطمئن بود که در صورت توقف و ناتمام ماندن جریان آزمون در هرجا، مؤثرترین آزمونها انجامگرفته و حداکثر خطاهای موجود کشفشدهاند. هدف ما بهبود در این روشهاست.
۱-۲- انگیزه
آزمــون رگرسیون انتخابی را برای افزایش سرعت انجام فاز آزمون استفاده میکنند، در این روش بر اساس معیارهای که از قبل تعیینشده است از میان مجموعه آزمون تعدادی را انتخاب میکنند. آزمــون رگرسیون انتخابی به دنبال حداقل کردن دنباله آزمون است که اکثراً آگاه از اصلاحات است. انتخاب مورد آزمون فقط روی نسخه جاری استفاده میشود اما روی قسمتی از برنامه تمرکز میکند که اصلاحشده است [۵].
مسئله اولویتدهی موارد آزمون در حقیقت تعیـین جایگشـتی از کلیـه موارد آزمون موجود در رشته آزمون است، بهگونهای که ایـن ترتیـبِ اجرا، آشکارکننده حـداکثر خطاهـای ممکـن باشـد؛ بنابراین مسـئله اولویتدهی موارد آزمون در حقیقت یک مسئله جستجو اسـت کـه در مراجع این مسئله و پیچیـدگی آن را معـادل بـا مسـئله کولهپشتی میدانند کـه NP-hard بـوده و بـدون راهحل قطعـی اسـت. لـذا راهحلهای موجود برای مسئله اولویتدهی موارد آزمون الزاماً مکاشـفه ای هستند و از طرفی هیچیک جواب بهینه محسوب نمیشوند [۲].
در سال ۱۹۹۷ نخستین تعریف رسمی از مسـئله انتخاب و اولویتدهی مـوارد آزمون و نیز متریک APFD[3] که درصد میانگین خطاهای کشفشده در اجرای مجموعه آزمون است، برای ارزیابی روشهای انتخاب و اولویتدهی آزمون ازلحاظ احتمال کشف زودتر خطاها ارائه شد [۲]؛ اما این متریک دو محدودیت دارد، اول آنکه دشواری خطاها را یکسان در نظر میگیرد و دوم اینکه هزینه هر مورد آزمون را یکسان در نظر میگیرد؛ بنابراین معیار APFDc[4] درصد میانگین خطاهای کشفشده در هزینه معرفی شد تا این محدودیت را از بین ببرند.
۱-۳- مروری بر روشهای ارائهشده
در اغلب روشهای اولویتدهی موجود، دید محدودشده ای وجـود دارد و مدلی کـه محققـان در مطالعـات تجربیشان بـرای آزمـون رگرسـیون استفاده کردهاند، آن را بهصورت یک آزمـون ”یکدفعه ای “در نظـر گرفتهاند درحالیکه مدل مناسب برای آزمـون رگرسـیون کـه نشـانگر خصوصیات آن باشد، آزمونی ”مداوم “ و ”درازمدت“ است و بهطور سلسله وار بعد از هر تغییر در نرمافزار اجـرا میشود، بهگونهای کـه کارایی هر کدام از آنها بر آزمونهای بعدی مؤثر است.
در همین راستا در [۶] نخستین بار بحـث ”حافظهدار کـردن“ آزمـون رگرســیون و اســتفاده از اطلاعــات پیشــینه کــارایی مــوارد آزمــون، در اولویتدهی مجموعه آزمون مطرح گردید. روش مکاشفهای ارائهشده در [۶] درواقع ترکیبی است از ”روش انتخابِ مبتنی بر پیشینه در آزمـون “و سپس اولویتدهی موارد آزمون. بهاینترتیب کـه در هـر رگرسیون گام از پیشینه اجرای موارد آزمون، برای انتخابهای بعدی موارد آزمـون استفاده میشود و در هر مرحله زیرمجموعه ای از مجموعـه آزمـون اولیه (بدون کاهش دائمی آن) را برای اولویتدهی و اجرا بر روی نسخه جدید نرمافزار انتخاب میکند. نشـان دادهشده اسـت کـه [۶] چنـین مکاشفه ای میتواند باگذشت اجراهای طولانی، هزینه را کـاهش داده و کارایی آزمون رگرسیون را در محیطهای توسعه محـدودیت دار کـاهش دهد.
مشکل روش پیشینه محورِ جاری در این است کـه در اطلاعـات پیشـینه اجرای موارد آزمون، تنها اثر ”اخیراَ “ اجراشدن نشدن مورد آزمون و یا آشکارسازی خطا یا عدم آن در اجرای قبل، آنهم ”بهصورت صـفر و یک “ در رابطه بازگشتی احتمال انتخاب موارد آزمون در نظـر گرفتهشده است. درحالیکه برای اولویتدهی کـارای پیشـینه محـور، هـم کارایی کشف خطا در طول اجراها بایـد در نظـر گرفتـه شـود و هـم از اولویتدهی پایین و منسوخ شدن دائمی یکسری از آزمونها بایسـتی جلوگیری شود.
فضل علیزاده و همکاران در [۷] یک روش اولویتدهی مبتنی بر پیشینه را پیشنهاد کردند. این روش سه نوع اطلاعات پیشینه در مورد موارد آزمون مانند تعداد اجراها و تعداد زمانهای کشف خطا را در یک رابطه ترکیب کرده است. آنها به هر یک از این معیارها ضریب ثابتی میدهند، بنابراین هر معیار روی احتمال انتخاب تأثیر ثابتی دارد، سپس احتمال انتخاب محاسبه میشود و موارد آزمون بهصورت نزولی ازنظر احتمال انتخاب زمانبندی میشوند.
خلیلیان و همکاران در [۸] رابطه ی برای اولویتدهی مورد آزمون ارائه دادند که از اطلاعات پیشینه استفاده میکند. ایده این روش این است که هر بخش از رابطه اولویتدهی باید تأثیر خاصی روی اولویت مورد آزمون داشته باشد و این تأثیرات ممکن است در طول آزمون رگرسیون متوالی تغییر کنند. آنها رابطه ی ارائه دادند که از ضرایب متغیر بهبودیافته استفاده میکند، این متغیرها بر اساس دسترسی به پیشینه داده کارا هستند، پیشینه اطلاعات کارایی در هر مورد آزمون بر اساس همه مراحل آزمون است نهفقط در آزمون مرحله قبل. آنها معتقدند که بر اساس دادههای پیشینه و شرایط هر مرحله آزمون، هر نوع از اطلاعات باید تأثیر مناسبی روی تعیین احتمال هر مورد آزمون داشته باشند، تأثیر میتواند خیلی ناچیز و یا خیلی زیاد باشد.
۱-۴- نوآوری بر روشهای ارائهشده
در روش پیشنهادی در این پایاننامه، به ارائه راه حلی برای انتخاب و اولویتدهی مبتنی بر پیشینه موارد آزمون در هر گام اجرا، از سابقه کارایی موارد آزمون در کشـف خطـا و نیـز سـالمندی مـوارد آزمـون استفاده میشود به گونهی که در هر بار اجرای آزمون رگرسیون موارد آزمون جدید انتخاب و اولویتدهی شوند. از طرفی هر مورد آزمون هزینه و دشواری مخصوص به خود را دارد که در هیچیک از روشهای ارائهشده به آن نپرداختهاند؛ بنابراین در این پایاننامه با استفاده از روش فرا ابتکاری ژنتیک مناسبترین زیرمجموعه از موارد آزمون از طریق روشهای مبتنی بر پیشینه انتخاب میشود و با تابع برازندگی مناسب اولویتدهی میشود تا درنهایت معیار APFDc افزایش یابد.
۱-۵- رئوس مطالب سایر فصلها
این فصل به انگیزه و هدف از این تحقیق پرداخته است. در فصل دوم، مفاهیم و مطالعات صورت گرفته در این تحقیق بررسی و مرور میگردد. در فصل سوم، روش اجرای تحقیق بررسی و مرور میگردد. فصل چهارم نتایج روش پیشنهادی و برتری آن در قیاس با سایر کارها مطرح میکند و مورد ارزیابی قرار میدهد. درنهایت فصل پنجم، به جمعبندی و ارائه پیشنهادهای آینده میپردازد.
در ادامه ساختار پایاننامه بهصورت زیر تهیهشده است:
فصل ۲ اصول و مبانی نظری و پیشینه تحقیق: در این فصل به معرفی مفاهیم پایه انتخاب و اولویتدهی موارد آزمون و همچنین بررسی تحقیقات دیگر محققان خواهیم پرداخت
فصل ۳ روش پیشنهادی: در این فصل به توضیح روشهای پیشنهادشده در پایاننامه میپردازیم.
فصل ۴ نتایج و تفسیر آنها: در این فصل به نتایج شبیهسازی و مقایسه آنها با روشهای پیشین پرداخته میشود.
فصل ۵ جمعبندی و پیشنهادها: در این فصل، خصوصیات روش پیشنهادی را جمعبندی و کارهای قابل انجام در آینده را معرفی میکنیم.
فصل ۲: اصول و مبانی نظری و پیشینه تحقیق
۲-۱- مقدمه
توسعه سیستمهای نرمافزاری شامل فعالیتهای تولیدی است که احتمال خطا در آن زیاد است. خطاها ممکن است در ابتداییترین مراحل فرایند پیش آید و بهاینترتیب، اهداف بهطور نادرست یا ناقص مشخص شوند. آزمودن نرمافزار یک عنصر حیاتی از تضمین کیفیت است و بیانگر بازبینی نهایی مشخصات، طراحی و تولید کد است.
هنگامیکه کد منبع تولید شد، نرمافزار باید آزموده شود تا هر تعدادی از خطاها را که امکان داشته باشد، قبل از تحویل به مشتری کشف کرد. هدف، طراحی موارد آزمون است که احتمال یافتن خطا را بالا ببرند.
آزمون، از بسیاری جهات یک فرایند فردگرایانه است و تعداد انواع متفاوت آزمونها بسته به تعداد روشهای متفاوت توسعه، متغیر است. سالها تنها دفاع در برابر خطاهای برنامهنویسی، دقت در طراحی و هوش و فراست خود برنامهنویس بود. اکنون در دوره ای به سر میبریم که در آن تکنیکهای مدرن طراحی به کاهش دادن تعداد خطاهای اولیه ای که ذاتا در کد وجود دارند، کمک میکند. بهطور مشابه روشهای متفاوت آزمون رفتهرفته بهصورت چند روش و فلسفه متمایز درآمده است. این روشها و فلسفهها را راهبرد مینامند.
دریکی از راهبردهای آزمون نرمافزار، روشهای طراحی موارد آزمون، در مراحلی با طرحریزی مناسب باهم تلفیقشده منجر به ساخت موفقیتآمیز نرمافزار میشوند. این راهبرد، نقشه راهنمایی فراهم میآورد که مراحل اجرای آزمون، زمان برنامهریزی و میزان کار، زمان و منابع لازم را توصیف میکند؛ بنابراین هر راهبرد آزمونی باید برنامهریزی آزمون، طراحی موارد آزمون، اجرای آزمون و جمعآوری و ارزیابی دادههای حاصل را باهم مرتبط کند. راهبرد آزمون نرمافزار باید آنقدر انعطافپذیر باشد که روش آزمون سفارشی را ارتقا بخشد. درعینحال، باید بهقدر کافی محکم باشد که برنامهریزی منطقی و پیگیری مدیریتی را بهموازات پیشرفت پروژه ارتقا بخشد.
در این فصل در بخش اول به مبانی و مفاهیم مربوط به آزمون میپردازیم و انواع روشهای موجود آن را برمیشماریم. در بخش دوم کارهای پیشین در رابطه با انتخاب و اولویتدهی موارد آزمون را بررسی میکنیم.
۲-۲- تعاریف اصول و مبانی نظری
آزمون یک بخش مهم و اجباری از توسعه نرمافزار است. آزمون تکنیکی برای ارزیابی کیفیت محصول و همچنین برای بهبود غیرمستقیم، با شناسایی نواقص و مشکلات است [۹][Abran, 2001 #9].
در مبحث کیفیت نرمافزارها رویکرد درست کیفیت نرمافزار، اجتناب است: بدیهی است که اجتناب از مشکل بهتر از تعمیر آن است. آزمون باید بهعنوان یک روش ابتدایی برای بررسی این باشد که آیا اجتناب مؤثر است و همچنین برای شناسایی ناهمسانیها در بعضی موارد ممکن است بعد از یک آزمون کامل و موفق هنوز نرمافزار شامل خطا باشد. اصلاح خطای نرمافزار بعد از انتشار آن در فاز نگهداری انجام میشود.
اخیرا آزمون نرمافزار به سمت گرایشهای سازندهتر تکامل پیداکرده است. آزمون دیگر فقط بهعنوان فعالیتی که باید بعد از اتمام فاز کد نویسی و باهدف محدود تشخیص خطا انجام شود، دیده نمیشود. آزمون نرمافزار امروزه بهعنوان فعالیتی که شامل همه فرایند توسعه است مطرح میشود و بخش مهمی از ساختار محصول است [۹]. درواقع برنامهریزی برای آزمون باید از مراحل اولیه تحلیل نیازمندی آغاز شود. فعالیتهای برنامهریزی و طراحی آزمون ورودیهای مفید برای طراح را جهت مشخص کردن ضعفهای بالقوه انتخاب میکند.
دانلود متن کامل این پایان نامه در سایت abisho.ir |