بخشی از مقاله

چکیده

تست نرم افزار فعالیت بسیار هزینه بری میباشد بهطوری که گاهی 40 درصد از هزینه نهایی توسعه نرم افزار را به خود اختصاص میدهد. در این شرایط به نظر می رسد که اتوماتیک سازی راه حل کلیدی برای بهبود بهره وری و اثربخشی فرآیند تست میباشد. در این راستا ابزار اتوماتیک تست در تسریع اجرای آزمون به تیم ارزیابی بسیار کمک میکند؛ اما اولویت بندی مورد آزمون با استفاده از اطلاعات پوشش کد به تیم تست کمک میکند تا سرعت تشخیص خطاها در طول آزمایش را بهطور چشم گیری بهبود بخشد.

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

مقدمه

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

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

درواقع برای اینکه مطمئن شویم تغییراتی که در یک بخش از نرمافزار اعمالشده روی سایر بخشها اثرات جانبی3 نداشته و معایبی4 را به وجود نیاورده است لازم است تا تستهای کامل شده قبلی را اجرا نموده و چگونگی عملکرد جدید برنامه بررسی گردد تا اطمینان حاصل گردد که مشکلات قبلی نرمافزار بر روی سایر بخشها تأثیر نامطلوبی نگذاشته باشد. بااینحال، تست نرمافزار فعالیت بسیار هزینه بری میباشد بهطوری که گاهی 40 درصد از هزینه نهایی توسعه نرم افزار را به خود اختصاص میدهد . در این شرایط به نظر می رسد که اتوماتیک سازی راه حل کلیدی برای بهبود بهرهوری و اثربخشی فرایند تست میباشد.[1]

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

[2] در این راستا ابزار اتوماتیک تست در تسریع اجرای آزمون به تیم ارزیابی بسیار کمک میکند. اما اولویتبندی مورد آزمون با استفاده از اطلاعات پوشش کد به تیم تست کمک میکند تا سرعت تشخیص خطاها در طول آزمایش را بهطور چشمگیری بهبود بخشد. تیم تست کننده مجبور است تا زیرمجموعهای از موارد آزمون را از بین مجموعه آزمون اصلی انتخاب کند.  این مساله چالشی بزرگ در انتخاب موارد آزمون میباشد.

[3] این مجموعه منتخب برای تست میبایست تمامی عملکردها را تحت پوشش قرار دهد و پوشش تابعی مناسبی بر روی کدهای موجود داشته باشد تا بتواند خطاهای بالقوه موجود را بهخوبی تشخیص دهد. به دلیل فشردگی زمانبندی تست نرمافزار تیم تست قادر به اجرای تمام موارد آزمون در مجموعه رگرسیون موجود نیست. تعیین توالی و اولویت در بین مورد آزمون بر اساس برخی از معیارهای موردنظر، تیم تست را در دستیابی به اهداف موردنظر و درعینحال کاهش چرخه تست یاری خواهد رساند.

هیچ ابزار تجاری در دسترسی برای کمک به تست کننده نرمافزار در مورد انتخاب آزمون وجود ندارد. ابزارهای اتوماتیک آزمون فقط در کاهش زمان اجرا عمل میکنند و در انتخاب و یا اولویتبندی 5 فاقد کارآیی هستند. این امر منجر به این خواهد شد که نتایج حاصل از تست توسط تست کنندههای متفاوت دارای اختلافهای زیادی با یکدیگر باشند. کیفیت آزمون در رگرسیون میتواند با انتخاب مناسب مجموعه تست و اولویتبندی آن بر اساس برخی از معیارهای خاص به شرح زیر افزایش یابد.

انتخاب آزمون رگرسیون: تست کننده میبایست قادر به درک تأثیر تغییرات در برنامههای کاربردی باشد که این امر نیاز به ایجاد تعاملاتی با تیم تحلیل گر کسبوکار و تیم توسعه نرم افزار میباشد. بخش تغییریافته کد محل تمرکز اصلی در آزمایش رگرسیون است. جدول قابلیت ردیابی6 موارد تستی را بیان میکند که بخش تغییریافته کد را بهخوبی پوشش میدهد و این موارد بر روی قسمت تغییریافته اجرا می گردند. این امر کمک میکند تا تست کننده مجموعه آزمون رگرسیون را بهصورت دستی آماده کند.[4]

تست نرمافزار تست برای مهندس نرم افزار امری غیرعادی تلقی میشود. طی مراحل اولیه تعریف توسعه، مهندس می کوشد تا نرم افزار را از یک مفهوم اختراعی به یک محصول عینی تبدیل کند. اکنون نوبت به تست می رسد. مهندس، داده های تست را بهمنظور تخریب نرمافزار ساختهشده، طراحی میکند. در حقیقت، تست، تنها مرحله ای از فرآیند نرمافزار است که بیشتر ویرانگر - حداقل ازنظر روانشناختی - به نظر می رسد تا سازنده. مهندسان نرمافزار، فطرتاً افرادی سازنده هستند. تست، مستلزم آن است که سازنده دید پیشداوری خود، مبنی بر درستی نرمافزار را دور بریزد و بر تناقض جالبی که از کشف خطاها عارض میشود، غلبه کند. این وضعیت را در ادامه شرح میدهیم.[5]

تست خودکار نرمافزار تعیین خودکار محدودهای از نرم افزار که احتمال وجود خطا 7در آن بالاست : با توجه به توضیحات ارائهشده، مشخص است که نمیتوان کورکورانه وارد حوزه خودکارسازی تست نرم افزار شد. بهعبارتدیگر نمیتوان تست تمام بخش های یک برنامه که مشتمل بر میلیون ها خط می باشد را با هزینه معقولی خودکار نمود. بنابراین باید نقاطی از برنامه که با احتمال بیشتری میتوانند حامل خطا باشند را مشخص کرد و بهمنظور تست خودکار، این قسمت ها را موردتوجه قرارداد. لازم به ذکر است که تشخیص این نقاط نیز باید بهصورت خودکار انجام شود. مقالات متعددی در این زمینه ارائهشده است.

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

تنها راه بررسی کیفیت داده های تست این است که ببینیم تا چه مقدار میتوانند خطاها را کشف کنند. به این منظور می توان خطاهایی را بهصورت دستی در برنامه ایجاد نمود و با اجرای مجموعه تست بررسی کرد که آیا این دادهها میتوانند خطای ایجادشده را کشف کنند یا خیر. ایجاد خطا بهصورت دستی با توجه به اینکه زمانبر است و نمی تواند در حد انتظار، تصادفی باشد، آنچنان قابلقبول نیست. بهاینترتیب از روش هایی مانند برنامهنویسی ژنتیک9 استفاده می کنیم تا از برنامه اصلی بهصورتکاملاً تصادفی، برنامه هایی حامل خطا تولید کرده و در آزمون داده های تست مورداستفاده قرار دهیم. در بخشی جداگانه به تشریح این روش میپردازیم.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید