دانلود مقاله رایگان

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

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

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

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

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

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

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

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

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

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

استاد مشاور:

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

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

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

چکیده:

ایده ی اصلی تست جهش بر­اساس بهره گیری از نقص­ها (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

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

 

شما می توانید تکه های دیگری از این مطلب را در شماره بندی انتهای صفحه بخوانید              

Comments are closed.