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