مهندسی فناوری اطلاعات منبع پایان نامه : پایان نامه ارشد مهندسی فناوری اطلاعات: ارائه یک روش تولید خودکار داده های ورودی برای تست جهش by 92 • مارس 1, 2016 پایان نامه مقطع کارشناسی ارشد رشته فناوری اطلاعات وزارت علوم، تحقیقات و فناوری دانشگاه علوم و فنون مازندران پایان نامه مقطع کارشناسی ارشد رشته: مهندسی فناوری اطلاعات عنوان / موضوع: ارائه یک روش تولید خودکار داده های ورودی برای تست جهش استاد راهنما: دکتر بابک شیرازی استاد مشاور: دکتر همایون موتمنی برای رعایت حریم خصوصی نام نگارنده درج نمی گردد تکه هایی از متن به عنوان نمونه : چکیده: ایده ی اصلی تست جهش براساس بهره گیری از نقصها (faults) برای شبیه سازی خطاهایی می باشد که برنامه نویسان انجام میدهند. بروز نقصها ممکن می باشد در دو سطح یکپارچگی و در سطح واحد اتفاق بیافتد که در بعضی موارد ممکن می باشد جستجو و یافتن محل نقص دشوار باشد با تزریق نقصها به صورت مجازی میتوان دادهها ورودی مناسب که میتواند وجود آنها را عیان کند پیدا نمود. انجام فرآیند تست جهش هزینه بر می باشد این هزینهها به گونه کلی از چهار منبع نشات میگیرند که عبارتند از :1- تولید ورودی های تست 2- زمان کامپایل کد جهش یافته و کد اصلی 3- اجرا کد جهش یافته و اصلی 4- مقایسهی نتایج خروجی برنامهی اصلی با برنامهی جهش یافته. در این پایاننامه برای کاهش هزینهی اول با بهره گیری از الگوریتم کلونی زنبور تولید دادههای تست را به صورت خودکار انجام دادیم از طرف دیگر از طریق تکنیکهای تزریق بایت کد جاوا هزینه کامپایل را نیز به صفر رساندیم و برای بالا بردن عملکرد سیستم اجرای تست را به صورت موازی انجام داده ایم. فصل اول: مقدمه و کلیات پژوهش 1-1- مروری بر دغدغه های تست نرم افزار 1-1-1- مقدمه یکی از چالشهای امروز پروژههای نرمافزار، تست می باشد زیرا برخلاف محصولات تولید شده توسط سایر علوم مهندسی، نرمافزار محصولی غیرقابل لمس می باشد از این جهت برای اطمینان از کیفیت، نیاز به صرف هزینه و وقت بیشتر برای تست آن می باشد. تست در حقیقت یکی از اساسیترین روشها برای ارزیابی نرمافزار تحت توسعه می باشد. روشهای سنتی تست نرمافزار، تنها به یافتن بعضی از خطاها [1]بعد از فاز پیادهسازی محدود میگردید و از این جهت ریسک وجود خطا در نرمافزار، بعد از تحویل، افزایش می پیدا نمود و حتی وجود خطاها در نرمافزار گاهی موجب شکست [2]نرمافزار میگردد اما منشاء بخشی از این خطاها در کجاست؟ منشاء بخشی از این خطاها در نقصهایی[3] می باشد که برنامه نویسان به گونه غیر عمدی و بر اثر بی دقتی وارد کد برنامه میکنند مانند: کوچکتر از حد نیاز در نظر گرفتن طول یک آرایه، اشتباه در پرانتز گذاری عبارتها، بهره گیریی نادرست از عملگرهای دودویی و یکانی و … که در صورت شناسایی محل آن در بسیاری از موارد با ایجاد یک تغییر کوچک در کد برنامه قابل اصلاح می باشد اما در صورت عدم اصلاح وجود یک یا چند نقص در برنامه سبب ایجاد یک وضعیت درونی اشتباه در برنامه گردد که در بعضی از موارد با وارد کردن یک ورودی خاص تحریک شده و ممکن می باشد این وضعیت درونی به یک رفتار بیرونی اشتباه تبدیل گردد و حتی در بعضی از موارد موجب شکست برنامه گردد به عنوان مثال اگر بدن بشر را به یک برنامهی کامپیوتری تشبیه کنیم نقصها در حقیقت عوامل بیماری زا هستند که در یک بدن سالم وارد میشوند و آن را تحت تصرف خود درمیآورند، خطاها مانند یک وضعیت درونی غیر عادی در بدن مانند فشار خون بالا، وجود یک نوع باکتری در خون، بی نظمی در نبض بیمار که پزشکان با کنارهم قرار دادن این علائم کوشش میکنند به علت بیماری پی ببرند، از کار افتادگیها در حقیقت علائم درونی هستند که از حالت نهان و درونی خود خارج شده به طوری که توسط بیمار نیز قابل تشخیص و اظهار هستند. حال که توانستیم مفهوم نقص، خطا و شکست را توضیح دهیم، میتوانیم میان سه مفهوم تست، تست شکست و اشکال زدایی، فرق قائل شویم وآن عبارت می باشد از: 1- تست: ارزیابی نرمافزار با بهره گیری از نظاره و مطالعه آن در هنگام اجرا. 2- تست شکست: اجرای برنامه که منجر به شکست آن میگردد. 3- اشکال زدایی: فرآیندی که با در نظر داشتن شکستها محل نقصهای مربوطه را پیدا میکند. برای دانلود فایل ورد متن کامل اینجا کلیک کنید یکی از چالشهای عمده در این بخش یافتن نقصهای برنامه می باشد زیرا به ازای هر نقص تعداد محدودی از ورودیها خروجی برنامه را تغییر میدهند پس یافتن محل نقص همواره کار سادهای نیست با در نظر گرفتن این ایده به سه شرط اساسی میرسیم که وجود آنها برای تبدیل یک نقص به یک شکست ضروری می باشد: – دسترسی: محلهایی از برنامه که در آنها نقص وجود دارند بایستی قابل دسترسی باشد به بیانی دیگر نقص در محل کد مرده [4]واقع نشده باشد. – آلودگی: بعد از اجرای محل نقصدار، برنامه در یک وضعیت اشتباه قرار گیرد. – انتشار: آلودگی ایجاد شده از طریق اجرای بخش نقص دار بایستی در قسمتهای مختلف برنامه انتشار پیدا کند تا آنجا که خروجی برنامه تغییر کند و آن را نادرست کند. همانطور که در علم پزشکی پیشگیری بهتر از درمان می باشد، برای جلوگیری از شکست برنامه بهتر می باشد با بهره گیری از روشهای موجود تا آنجایی که امکان دارد از ورود نقصها به کد برنامه جلوگیری کنیم. این موضوع اولین بار توسط Myers طرح گردید، وی مدعی گردید تست نرمافزار موفق، تستیمی باشد که سبب از کار افتادگی نرمافزار گردد به بیانی دیگر دیدگاه Myers بهره گیری از نقصهای شناخته شده جهت یافتن خطاهای پنهان موجود در برنامه بود به این روش تست، تست نقص میگویند. در این روش به جای آنکه به دنبال خطا در برنامه برویم نشان می دهیم که برنامه بدون نقص می باشد. 2-1-1 بهره گیری از طبیعت پدیدههای طبیعی از گذشته همواره مورد توجه و الهام بخش بشر برای حل مسائل زندگی خود بوده می باشد، یکی از جالبترین آنها اجتماع زنبوران و مورچه ها می باشد که برای حل مسائل خود (به عنوان مثال پیدا کار کردن غذا ) از راهکارهای ساده ای بهره گیری میکنند که نه تنها قادر به حل مسائل خود هستند بلکه ما میتوانیم با نظاره و الگو برداری از رفتار آنها بسیاری از مسائل پیچیدهای که نیاز به راه حلهای پویا دارند را به گونه کارا حل کنیم، اما این الگوهای پیچیدهی رفتاری از کجا ایجاد میگردد؟ پاسخ این سوال بهره گیری از هوش جمعی می باشد، به عنوان مثال تصور کنید قرار می باشد به محلی بروید که از آدرس آن به گونه کامل آگاهی ندارید. یکی از راهکارهای موثر پرسش از کسانی می باشد که در راه با آنها برخورد میکنید در بعضی از موارد ممکن می باشد پاسخهای نادرست دریافت کنید اما شما با در نظر داشتن پیش زمینه ذهنی و هدف از پیش تعریف شدهی خود تا حدی قادر به تشخیص آنها خواهید بود. در حقیقت شما ممکن می باشد در کارهای روزمره خود بارها از هوش جمعی برای یافتن پاسخ معضلات خود بهرهمند شوید. متاسفانه تاکنون تعریف دقیق ریاضی برای هوش جمعی وجود ندارد اما به گونه کلی سیستمهایی که براساس هوش جمعی مسائل خود را حل میکنند در ویژگیهای زیر مشترک هستند: توانایی حل مسائل پیچیده توانایی حل مسائل به صورت توزیع شده کار در محیط پویا عدم نیاز به هر گونه کمک از محیط بیرون در هنگام حل مسائل و بدون نیاز به سیستم کنترلی(مدیریت درونی) اگر به زندگی مورچهها نگاه کنیم، برای حل مسائل خود از چندین روش بهره گیری میکنند که یکی از مهمترین آنها مادهی شیمیایی به نام فرمون می باشد و از خواص این ماده بوی آن می باشد که بعد از گذشت زمان از شدت آن کاسته شده و به تدریج از بین میرود. اما این ویژگی چه کمکی به حل مسائل مورچهها میکند؟ به عنوان مثال مسئلهی یافتن کوتاه ترین مسیر را در نظر بگیرید در حقیقت مورچهها با گذشت زمان یاد گرفتهاند که برای یافتن غذا همواره کوتاهترین مسیر را از کلونی تا غذای خود پیدا کنند. هنگامی که اولین مورچه برای یافتن غذا خارج میگردد یک مسیر را از میان چندین مسیر به صورت تصادفی انتخاب میکند. هر مورچه در مسیری که طی میکند از خود فرمون به جای میگذارد وبعد از یافتن غذا از مسیر پیموده شدهی خود که برروی آن فرمون به جای گذاشته می باشد به کلونی باز میگردد. از آنجایی که تعداد مورچههای زیادی به گونه همزمان برای یافتن غذا از کلونی خارج میشوند نخستین مورچهای که به کلونی باز میگردد به احتمال زیاد مسیر کوتاهتری به نسبت سایر مورچهها پیموده می باشد و بوی فرمون آن ماندگاری بیشتری دارد زیرا در مدت زمان کمتری طی شده می باشد پس آن مسیر توسط سایر مورچهها انتخاب خواهد گردید. 3-1-1- هدف از انجام علیرغم اینکه تست نرمافزار یکی از مهمترین مراحل توسعهی نرمافزار می باشد اما در کشور ما در حد اهمیتش به آن پرداخته نمیگردد و تنها عنوانهای تحقیقاتی به چند مورد خاص در شبکه محدود میگردد از طرف دیگر اغلب مهندسان نرمافزار به دلیل عدم آگاهی و یا هزینهی عملیات تست آن را تنها در سطح یک دیباگ [5] ساده انجام میدهند در حالیکه تست نرمافزار از سطوح مختلفی تشکیل شده که پایینترین سطح آن دیباگ می باشد [1]. از معضلات دیگر این حوزه عدم شفافیت در اظهار اطلاعات و در دسترس نبودن ابزارهای ارائه شده می باشد بطوریکه از نه عنوان مطرح شده در [2] که با زبان جاوا کار میکنند کمتر از نیمی به صورت کد منبع باز در دسترس هستند. در این پایاننامه همت خود را بر آن گذاشتیم که تا حد امکان از این موضوع پنهان مانده برای مهندسین نرمافزار ایرانی پرده برداری کنیم تا موجب آشنایی بیشتر جامعهی علمی و افزایش عنوانهای تحقیقاتی در این زمینه گردد. برای نیل به این هدف تمامی مقالات ذکر گردیده در این پایاننامه با ذکر مثال، ارتباطهای مربوطه و با توضیح بیشتر آورده شده می باشد و کوشش شده تا جایی که امکان دارد به شکلی ساده اظهار گردد. از طرف دیگر با پیادهسازی یک ابزار و در دسترس قرار دادن آن در راه رسیدن به هدف خود که آشنایی بیشتر جامعهی مهندسان ایرانی با تست نرمافزار می باشد گام دوم را برداشتهایم. امید می باشد با پیوستگی گامهای کوچک به این هدف بزرگ دست یابیم. ترتیب فصول این پایاننامه بدین توضیح می باشد در فصل دوم به توضیح مختصری از تاریخچهی تست به خصوص تاریخچهی تست جهش خواهیم پرداخت در فصل سوم به توضیح روشهای ممکن برای پیادهسازی یک ابزار تست و روش پیاده سازی شده در این پایاننامه خواهیم پرداخت، در فصل چهارم یافتههای این پژوهش را در قالب نمودار نشان میدهیم و در فصل پنجم نتیجهگیری خواهیم داشت. 1.Errors 2.Failure [3] Faults [4] Dead code: کدی می باشد که به هر دلیل قابل اجرا یا دسترسی نباشد [5] Debug شما می توانید مطالب مشابه این مطلب را با جستجو در همین سایت بخوانید ***ممکن می باشد هنگام انتقال از فایل اصلی به داخل سایت بعضی متون به هم بریزد یا بعضی نمادها و اشکال درج نشود اما در فایل دانلودی همه چیز مرتب و کامل و با فرمت ورد موجود می باشد*** متن کامل را می توانید دانلود نمائید زیرا فقط تکه هایی از متن پایان نامه در این صفحه درج شده (به گونه نمونه) اما در فایل دانلودی متن کامل پایان نامه با فرمت ورد word که قابل ویرایش و کپی کردن می باشند موجود می باشد تعداد صفحه : 114 قیمت : چهارده هزار و هفتصد تومان شما می توانید تکه های دیگری از این مطلب را در شماره بندی انتهای صفحه بخوانید