نشتی حافظه درتست نرم افزار موضوعی است که هم یک مشکل کارایی (به دلیل اتلاف حافظه) و هم یک مشکل امنیتی محسوب میگردد (به دلیل مصرف بیرویه حافظه که نهایتا منجر به پرشدن حافظه و پایین آمدن سرور میشود و این معضل در تست نرم افزار بطور مستمر مشخص شود). بررسی این مشکل در برنامهنویسی سیستمهای سطح پایین (تولید شده با زبانهایی همچون C و ++C) از اهمیت خاصی برخوردار است و یکی از مهم ترین مراحل بشمار می آید. چرا که به دلایلی همچون عدم وجود virtual machine در زبانهای سطح پایین و امکان استفاده مستقیم از اشاره گرها (pointer)، تشخیص این مشکل بسیار پیچیده است.
البته مشکل نشتی حافطه در زبانهای سطح بالایی همچون Java و #C نیز که در یک محیط sandbox اجرا میشوند، به دلیل برنامهنویسی نامطلوب میتواند رخ دهد و لذا برنامهنویسان باید دقت کافی در این زمینه را بنمایند.
تست پارتیشن یک تکنیک تست است که هدف از آن یافتن زیرمجموعه هایی از موارد آزمون موجود است که بتواند به اندازه کافی یک سیستم را تست کند. هدف از تست پارتیشن در تست وب سرویس آن است که دامنه ورودی سیستم تحت تست را به زیر دامنه هایی تقسیم نمود. بنابراین انتخاب یا ایجاد تعدادی از موارد آزمون از هر زیر دامنه برای تست کل دامنه کافی خواهد بود. نتایج نشان می دهد که تست پارتیشن می تواند با کاهش تعداد موارد آزمون مورد نیاز برای تست و در نتیجه کاهش تعداد تست ها، منجر به کاهش هزینه های تست شود.
تست وب سرویس: الگوی محاسبات سرویس گرا (SOC) امکان تعامل سیستم های کامپیوتری با یکدیگر را فراهم می سازد. SOC اجازه می دهد اپلیکیشن های توزیع شده، مستقل از بستر پیاده سازی با یکدیگر ترکیب شوند و لذا هزینه ها کاهش پیدا کرده و توسعه سیستم ها نیز راحت تر و سریع تر می گردد. در حال حاضر وب سرویس ها به دلیل عدم وابستگی به پلتفرم یا زبان برنامه نویسی یکی از پذیرفته شده ترین تکنولوژی های مبتنی بر سرویس هستند. در هر حال وب سرویس نیز چالش هایی دارد. برای مثال، تست client-side وب سرویس به دلیل ماهیت پیچیده وب سرویس و عدم دسترسی به کد منبع از تست دیگر نرم افزارهای سنتی سخت تر است. در این مقاله به بررسی تاریخچه تست وب سرویس، نقاط ضعف و قوت استراتژی های تست وب سرویس و شناسایی مسائل برای اقدامات آتی می پردازیم. تست وب سرویس شامل تست عملکردهای اصلی وب سرویس، تست تعامل پذیری وب سرویس، تست کارایی شامل تست بار و فشار، تست امنیت و غیره می باشد.
متدولوژی STEP که حروف اختصاری Systematic Test and Evaluation Process است، یک متدولوژی برای تست سیستماتیک و مبتنی بر استانداردهای IEEE برای افزایش کیفیت نرم افزار میباشد.
متدولوژی (TDD(Test-driven development در تست نرم افزار
تست نفوذ (penetration testing) عبارت است از شبیهسازی حملات واقعی جهت ارزیابی مخاطرات مربوط به نقض امنیتی بالقوه. در تست نفوذ، تسترها نه تنها آسیبپذیریهایی را که میتواند توسط مهاجمان مورد استفاده قرار گیرد، کشف میکنند، بلکه در صورت امکان، آسیبپذیریها را به منظور ارزیابی آنچه که ممکن است مهاجمان بعد از بهرهبرداری موفق به دست بیاورند، مورد استفاده قرار میدهند.
در مواقعی یک خبرنامه در مورد آسیب یک شرکت بزرگ توسط یک حمله سایبری منتشر میشود. اغلب مهاجمان از آخرین و بزرگترین zero-day ها (آسیب پذیریهای وصله نشده توسط ناشران نرم افزاری) استفاده نمیکنند.
در این مقاله قصد داریم نگاه عمیقتری به تست نرم افزار، شیوهها و کاربردهای آن داشته باشیم. اگر بخواهیم از تست نرم افزار تعریفی ساده داشته باشیم میتوان گفت" تست نرم افزار فرآیند اجرای یک برنامه کاربردی با هدف پیدا کردن اشکالات و متعاقبا بهبود کیفیت نرم افزار است". تست نرم افزاربه عنوان یک فرایند کلیدی در تضمین کیفیت نرم افزار سیستمهای نرم افزاری ایفاء نقش میکند. در حال حاضر تست به عنوان یک صنعت در حوزه نرمافزار محسوب میشود. در سالهای اخیر آمارهای شگفت آوری از سوی موسسه (NIST(National Institute of Standards and تست نرم افزارTechnologyدرباره شکست سیستمهای نرم افزاری ارائه شده است. در کشور ایالات متحده، این شکستها سالیانه حدود 59.5 میلیارد دلار به اقتصاد این کشور صدمه میزند. طبق بررسیهای انجام شده با بکارگیری تست نرم افزار در تمام فازهای تولید نرم افزار 22.2 میلیارد دلار از این خسارت را میتوان کاهش داد. طبق آمارهای ارائه شده از سوی موسسه (IDC(International Data Corporation، چهل درصد از بودجه نرم افزارها صرف تست آن میگردد.در کشور ما نیز، با توجه به رشد فناوری اطلاعات و ارتباطات در طی چند سال گذشته و تولید بومی بسیاری از نرم افزارهای مورد نیاز، نیاز به این فرایند بیش از پیش احساس شده و در صورت عدم توجه به آن، کاهش کیفیت سیستمهای ارائه شده، عدم رضایت مشتری و در نهایت از دست دادن بازار را به همراه خواهد داشت.
امروزه بسیاری از کارها در زندگی شخصی، صنعت، امور نظامی و غیره به نرم افزارها سپرده شده است. گاهی یک اشتباه کوچک نرمافزاری میتواند سبب خسارات جبران ناپذیری شود. برای تشریح موضوع به چند نمونه اشاره میگردد.
در سال 1994 خطای محاسبات اعشاری در پردازنده پنتیوم شرکت اینتل، علاوه بر کاهش فروش آن، اعتبار شرکت را تا مدتی خدشهدار کرد.
در سال 1998 مدارگرد مریخ به دلیل یک خطا در محاسبات نرم افزاری، در جهت اشتباهی وارد اتمسفر مریخ شده و منفجر گردید. 327 میلیون دلار صرف این پروژه شده بود.
در سال 1996 ماهواره بر آریان پنج، 38 ثانیه بعد از پرتاب در ارتفاع 3700 متری زمین منفجر شد. علت اصلی این حادثه در اثر سرریز در واحد ممیز شناور اندازهگیری شتاب افقی این ماهواره بر بود. 7 میلیارد دلار و 10 سال زمان برای ساخت این ماهواره بر هزینه شده بود. همچنین باری که این ماهواره بر حمل میکرد، 500 میلیون دلار ارزش داشت.
تنها 26% از پروژه های نرم افزاری دنیا با موفقیت اجرا میشوند. معیار های موفقیت پروژه عبارتنداز:
اتمام به موقع
با بودجه تعیین شده
با تمام قابلیتها و عملکردهای مورد نظر
بدون خطا (با خطای جزئی)
تست نرم افزار بسیاری از پروژههای تولید نرم افزار با شکست مواجه میشوند، هزینه بالایی صرف پروژههای شکست خورده میگردد .
در آمریکا، بیش از 81 میلیارد دلار صرف پروژههای شکست خورده میشود
در انگلیس، بیش از 33 میلیارد دلار صرف پروژههای شکست خورده میشود.