موضوع : ارائه یک روش تولید خودکار داده های ورودی برای تست جهش
رشته : مهندسی فناوری اطلاعات
تعداد صفحات :114
چکیده
ایده ی اصلی تست جهش براساس استفاده از نقصها (faults) برای شبیه سازی خطاهایی است که برنامه نویسان انجام میدهند. بروز نقصها ممکن است در دو سطح یکپارچگی و در سطح واحد اتفاق بیافتد که در بعضی موارد ممکن است جستجو و یافتن محل نقص دشوار باشد با تزریق نقصها به صورت مجازی میتوان دادهها ورودی مناسب که میتواند وجود آنها را آشکار کند پیدا کرد.
انجام فرآیند تست جهش هزینه بر است این هزینهها به طور کلی از چهار منبع نشات میگیرند که عبارتند از :1- تولید ورودیهای تست 2- زمان کامپایل کد جهش یافته و کد اصلی 3- اجرا کد جهش یافته و اصلی 4- مقایسهی نتایج خروجی برنامهی اصلی با برنامهی جهش یافته. در این پایان نامه برای کاهش هزینهی اول با استفاده از الگوریتم کلونی زنبور تولید دادههای تست را به صورت خودکار انجام دادیم از طرف دیگر از طریق تکنیکهای تزریق بایت کد جاوا هزینه کامپایل را نیز به صفر رساندیم و برای بالا بردن عملکرد سیستم اجرای تست را به صورت موازی انجام دادهایم.
1-1-1 مقدمه
یکی از چالشهای امروز پروژههای نرمافزار، تست است زیرا برخلاف محصولات تولید شده توسط سایر علوم مهندسی، نرمافزار محصولی غیرقابل لمس است از این جهت برای اطمینان از کیفیت، نیاز به صرف هزینه و وقت بیشتر برای تست آن است. تست در حقیقت یکی از اساسیترین روشها برای ارزیابی نرمافزار تحت توسعه است. روشهای سنتی تست نرمافزار، تنها به یافتن بعضی از خطاها [1]بعد از فاز پیادهسازی محدود میشد و از این جهت ریسک وجود خطا در نرمافزار، بعد از تحویل، افزایش می یافت و حتی وجود خطاها در نرمافزار گاهی موجب شکست [2]نرمافزار میشود اما منشاء بخشی از این خطاها در کجاست؟ منشاء بخشی از این خطاها در نقصهایی[3] است که برنامه نویسان به طور غیر عمدی و بر اثر بی دقتی وارد کد برنامه میکنند مانند: کوچکتر از حد نیاز در نظر گرفتن طول یک آرایه، اشتباه در پرانتز گذاری عبارتها، استفادهی نادرست از عملگرهای دودویی و یکانی و … که در صورت شناسایی محل آن در بسیاری از موارد با ایجاد یک تغییر کوچک در کد برنامه قابل اصلاح است اما در صورت عدم اصلاح وجود یک یا چند نقص در برنامه سبب ایجاد یک وضعیت درونی اشتباه در برنامه شود که در برخی از موارد با وارد کردن یک ورودی خاص تحریک شده و ممکن است این وضعیت درونی به یک رفتار بیرونی اشتباه تبدیل شود و حتی در برخی از موارد موجب شکست برنامه شود به عنوان مثال اگر بدن انسان را به یک برنامهی کامپیوتری تشبیه کنیم نقصها در حقیقت عوامل بیماری زا هستند که در یک بدن سالم وارد میشوند و آن را تحت تصرف خود درمیآورند، خطاها مانند یک وضعیت درونی غیر عادی در بدن مانند فشار خون بالا، وجود یک نوع باکتری در خون، بی نظمی در نبض بیمار که پزشکان با کنارهم قرار دادن این علائم تلاش میکنند به علت بیماری پی ببرند، از کار افتادگیها در حقیقت علائم درونی هستند که از حالت نهان و درونی خود خارج شده به طوری که توسط بیمار نیز قابل تشخیص و بیان هستند.
حال که توانستیم مفهوم نقص، خطا و شکست را شرح دهیم، میتوانیم میان سه مفهوم تست، تست شکست و اشکال زدایی، تمایز قائل شویم وآن عبارت است از:
تست: ارزیابی نرمافزار با استفاده از مشاهده و بررسی آن در هنگام اجرا.
تست شکست: اجرای برنامه که منجر به شکست آن میشود.
اشکال زدایی: فرآیندی که با توجه به شکستها محل نقصهای مربوطه را پیدا میکند.
یکی از چالشهای عمده در این بخش یافتن نقصهای برنامه است زیرا به ازای هر نقص تعداد محدودی از ورودیها خروجی برنامه را تغییر میدهند بنابراین پیدا کردن محل نقص همواره کار سادهای نیست با در نظر گرفتن این ایده به سه شرط اساسی میرسیم که وجود آنها برای تبدیل یک نقص به یک شکست ضروری است:
1.Errors
2.Failure
[3] Faults
فهرست مطالب
عنوان
1 فصل اول مقدمه و کلیات تحقیق
1-1 مروری بر دغدغه های تست نرم افزار
1-1-1 مقدمه
1-1-2 بهره گیری از طبیعت
1-1-3 هدف از انجام
2 فصل دوم ادبیات و پیشینه تحقیق
2-1 تست جهش
2-1-1 تئوری و نظریات
2-1-2 متدلوژی
2-1-3 عملگرها
2-1-4 تکینکهای کاهش هزینه
2-1-5 تولید جهش کمتر
2-1-6 تکنیکهای کاهش هزینه در زمان اجرای برنامه
2-1-7 جهشهای برابر
2-1-8 خودکار سازی تست
2-2 نتیجه گیری
3 فصل سوم روش تحقیق
3-1 شرح روشهای مشابه
3-1-1 روش مبتنی بر CBT
3-1-2 روش اجرای سمبلیک
3-1-3 ترکیب روش اجرای پویای سمبلیک (DSE) با اسکیما
3-1-4 روشهای مبتنی بر جستجو
3-2 شرح ابزار ارائه شده
3-2-1 ابزارهای ارائه شدهی مبتنی بر جاوا
3-2-2 تولید کنندهی جهش ها
3-2-3 تولید کنندهی ورودیهای تست
3-2-4 الگوریتم کلونی زنبور
3-2-5 کلاس تولید کنندهی موارد تست
3-2-6 اجرا کنندهی تست
3-2-7 دستیاران
3-3 نتیجه گیری
4 فصل چهارم
محاسبات و یافته های تحقیق
4-1 تاثیر تعداد نخها در از بین رفتن جهشها
4-2 بررسی اثر تعداد نخها در معیار پوشش
4-3 نتایج بدست آمده از تست سه برنامه
5 فصل پنجم نتیجه گیری و پیشنهادات
6 پیوست
6-1 الگوریتم کلونی مورچه
6-2 K-means
6-3 Agglomerative
6-4 منابع