پایان نامه ارشد مهندسی فناوری اطلاعات: ارائه یک روش تولید خودکار داده های ورودی برای تست جهش

دانلود متن کامل پایان نامه با فرمت ورد

پایان نامه مقطع کارشناسی ارشد رشته فناوری اطلاعات

وزارت علوم، تحقیقات و فناوری

دانشگاه علوم و فنون مازندران

پایان نامه مقطع کارشناسی ارشد

رشته: مهندسی فناوری اطلاعات

عنوان / موضوع:

ارائه یک روش تولید خودکار داده های ورودی برای تست جهش

استاد راهنما:

دکتر بابک شیرازی

استاد مشاور:

دکتر همایون موتمنی

برای رعایت حریم خصوصی نام نگارنده درج نمی شود

تکه هایی از متن به عنوان نمونه :

چکیده:

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

انجام فرآیند تست جهش هزینه بر است این هزینه­ها به طور کلی از چهار منبع نشات می­گیرند که عبارتند از :1- تولید ورودی ­های تست 2- زمان کامپایل کد جهش یافته و کد اصلی 3- اجرا کد جهش یافته و اصلی 4- مقایسه­ی نتایج خروجی برنامه­ی اصلی با برنامه­ی جهش یافته. در این پایان نامه برای کاهش هزینه­ی اول با استفاده از الگوریتم کلونی زنبور تولید داده­های تست را به صورت خودکار انجام دادیم از طرف دیگر از طریق تکنیک­های تزریق بایت کد جاوا هزینه کامپایل را نیز به صفر رساندیم و برای بالا بردن عملکرد سیستم اجرای تست را به صورت موازی انجام داده ­ایم.

فصل اول: مقدمه و کلیات تحقیق

1-1- مروری بر دغدغه های تست نرم افزار

1-1-1- مقدمه

یکی از چالش­های امروز پروژه­های نرم­افزار، تست است زیرا برخلاف محصولات تولید شده توسط سایر علوم مهندسی، نرم­افزار محصولی غیرقابل لمس است از این جهت برای اطمینان از کیفیت، نیاز به صرف هزینه و وقت بیشتر برای تست آن است. تست در حقیقت یکی از اساسی­ترین روش­ها برای ارزیابی نرم­افزار تحت توسعه است. روش­های سنتی تست نرم­افزار، تنها به یافتن بعضی از خطاها [1]بعد از فاز پیاده­سازی محدود می­شد و از این جهت ریسک وجود خطا در نرم­افزار، بعد از تحویل، افزایش می یافت و حتی وجود خطاها در نرم­افزار گاهی موجب شکست [2]نرم­افزار می­شود اما منشاء بخشی از این خطاها در کجاست؟ منشاء بخشی از این خطاها در نقص­هایی[3] است که برنامه نویسان به طور غیر عمدی و بر اثر بی دقتی وارد کد برنامه می­کنند مانند: کوچکتر از حد نیاز در نظر گرفتن طول یک آرایه، اشتباه در پرانتز گذاری عبارت­ها، استفاده­ی نادرست از عملگرهای دودویی و یکانی و … که در صورت شناسایی محل آن در بسیاری از موارد با ایجاد یک تغییر کوچک در کد برنامه قابل اصلاح است اما در صورت عدم اصلاح وجود یک یا چند نقص در برنامه سبب ایجاد یک وضعیت درونی اشتباه در برنامه ­شود که در برخی از موارد با وارد کردن یک ورودی خاص تحریک شده و ممکن است این وضعیت درونی به یک رفتار بیرونی اشتباه تبدیل شود و حتی در برخی از موارد موجب شکست برنامه شود به عنوان مثال اگر بدن انسان را به یک برنامه­ی کامپیوتری تشبیه کنیم نقص­ها در حقیقت عوامل بیماری زا هستند که در یک بدن سالم وارد می­شوند و آن­ را تحت تصرف خود درمی­آورند، خطاها مانند یک وضعیت درونی غیر عادی در بدن مانند فشار خون بالا، وجود یک نوع باکتری در خون، بی نظمی در نبض بیمار که پزشکان با کنارهم قرار دادن این علائم تلاش می­کنند به علت بیماری پی ببرند، از کار افتادگی­ها در حقیقت علائم درونی هستند که از حالت نهان و درونی خود خارج شده به طوری که توسط بیمار نیز قابل تشخیص و بیان هستند.

حال که توانستیم مفهوم نقص، خطا و شکست را شرح دهیم، می­توانیم میان سه مفهوم تست، تست شکست و اشکال زدایی، تمایز قائل شویم وآن عبارت است از:

1- تست: ارزیابی نرم­افزار با استفاده از مشاهده و بررسی آن در هنگام اجرا.

2- تست شکست: اجرای برنامه که منجر به شکست آن می­شود.

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

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

– دسترسی: محل­هایی از برنامه که در آن­ها نقص وجود دارند باید قابل دسترسی باشد به عبارت دیگر نقص در محل کد مرده [4]واقع نشده باشد.

– آلودگی: بعد از اجرای محل نقص­دار، برنامه در یک وضعیت اشتباه قرار گیرد.

– انتشار: آلودگی ایجاد شده از طریق اجرای بخش نقص دار باید در قسمت­های مختلف برنامه انتشار پیدا کند تا آنجا که خروجی برنامه تغییر کند و آن­ را نادرست کند.

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

2-1-1  بهره گیری از طبیعت

پدیده­های طبیعی از گذشته همواره مورد توجه و الهام بخش انسان برای حل مسائل زندگی خود بوده است، یکی از جالب­ترین آن­ها اجتماع زنبوران و مورچه ­ها است که برای حل مسائل خود (به عنوان مثال پیدا کار کردن غذا ) از راه­کارهای ساده ­ای استفاده می­کنند که نه تنها قادر به حل مسائل خود هستند بلکه ما می­توانیم با مشاهده­ و الگو برداری از رفتار آن­ها بسیاری از مسائل پیچیده­ای که نیاز به راه حل­های پویا دارند را به طور کارا حل کنیم، اما این الگوهای پیچیده­ی رفتاری از کجا ایجاد می­شود؟ پاسخ این سوال استفاده از هوش جمعی ­است، به عنوان مثال تصور کنید قرار است به محلی بروید که از آدرس آن به طور کامل آگاهی ندارید. یکی از راه­کارهای موثر پرسش از کسانی است که در راه با آن­ها برخورد می­کنید در برخی از موارد ممکن است پاسخ­های نادرست دریافت کنید اما شما با توجه به پیش زمینه ذهنی و هدف از پیش تعریف شده­ی خود تا حدی قادر به تشخیص آن­ها خواهید بود. در حقیقت شما ممکن است در کارهای روزمره خود بارها از هوش جمعی برای یافتن پاسخ مشکلات خود بهره­مند شوید. متاسفانه تاکنون تعریف دقیق ریاضی برای هوش جمعی وجود ندارد اما به طور کلی سیستم­هایی که براساس هوش جمعی مسائل خود را حل می­کنند در ویژگی­های زیر مشترک هستند:

  1. توانایی حل مسائل پیچیده
  2. توانایی حل مسائل به صورت توزیع شده
  3. کار در محیط پویا
  4. عدم نیاز به هر گونه کمک از محیط بیرون در هنگام حل مسائل
  5. و بدون نیاز به سیستم کنترلی(مدیریت درونی)

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

3-1-1- هدف از انجام

علی­رغم اینکه تست نرم­افزار یکی از مهمترین مراحل توسعه­ی نرم­افزار است اما در کشور ما در حد اهمیتش به آن پرداخته نمی­شود و تنها عنوان­های تحقیقاتی به چند مورد خاص در شبکه محدود می­شود از طرف دیگر اغلب مهندسان نرم­افزار به دلیل عدم آگاهی و یا هزینه­ی عملیات تست آن را تنها در سطح یک دیباگ [5] ساده­ انجام می­دهند در حالیکه تست نرم­افزار از سطوح مختلفی تشکیل شده که پایین­ترین سطح آن دیباگ است [1]. از مشکلات دیگر این حوزه عدم شفافیت در بیان اطلاعات و در دسترس نبودن ابزار­های ارائه شده است بطوریکه از نه عنوان مطرح شده در [2] که با زبان جاوا کار می­کنند کمتر از نیمی به صورت کد منبع باز در دسترس هستند. در این پایان نامه همت خود را بر آن گذاشتیم که تا حد امکان از این موضوع پنهان مانده برای مهندسین نرم­افزار ایرانی پرده برداری کنیم تا موجب آشنایی بیشتر جامعه­ی علمی و افزایش عنوان­های تحقیقاتی در این زمینه شود. برای نیل به این هدف تمامی مقالات ذکر شده در این پایان نامه با ذکر مثال، رابطه­های مربوطه و با شرح بیشتر آورده شده است و سعی شده تا جایی که امکان دارد به شکلی ساده بیان شود. از طرف دیگر با پیاده­سازی یک ابزار و در دسترس قرار دادن آن در راه رسیدن به هدف خود که آشنایی بیشتر جامعه­ی مهندسان ایرانی با تست نرم­افزار است گام دوم را برداشته­ایم. امید است با پیوستگی گام­های کوچک به این هدف بزرگ دست یابیم.

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

1.Errors

2.Failure

[3] Faults

[4] Dead code: کدی است که به هر دلیل قابل اجرا یا دسترسی نباشد

[5] Debug

***ممکن است هنگام انتقال از فایل اصلی به داخل سایت بعضی متون به هم بریزد یا بعضی نمادها و اشکال درج نشود ولی در فایل دانلودی همه چیز مرتب و کامل و با فرمت ورد موجود است***

متن کامل را می توانید دانلود نمائید

چون فقط تکه هایی از متن پایان نامه در این صفحه درج شده (به طور نمونه)

ولی در فایل دانلودی متن کامل پایان نامه

 با فرمت ورد word که قابل ویرایش و کپی کردن می باشند

موجود است

تعداد صفحه : 114

قیمت : چهارده هزار تومان

 

بلافاصله پس از پرداخت ، لینک دانلود به شما نشان داده می شود

و به ایمیل شما ارسال می شود.

پشتیبانی سایت :        09124404335        info@arshadha.ir

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

شماره کارت :  6037997263131360 بانک ملی به نام محمد علی رودسرابی

11

مطالب مشابه را هم ببینید

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