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

تست نرم افزار را می توان به صورتهای زیر معنا کرد:
– تلاشهایی در جهت عیب یابی و رفع آن، نه تلاش در جهت اثبات کامل صحت نرم افزار، زیرا این قضیه با ماهیت تست تفاوت دارد.
– تست نرمافزار یا آزمایش نرمافزار، تحقیق برروی کیفیت یک محصول یا سرویس نرمافزاری و ارایه اطلاعات ناشی از آن به مشتریها است. این تحقیق جستجوی نرمافزار مزبور برای یافتن خطاها را نیز دربرمیگیرد ولی به آن محدود نمیشود.
– تستها همیشه شامل سوال و جوابهایی هستند که نرمافزار را با آن امتحان میکنیم در حالی که از برنامه انتظار داریم با توجه به ورودیهایی که با استفاده از سوالات وارد میکنیم، جوابهای صحیحی را به عنوان خروجی به دست دهد.
– تست نرمافزار از وظایف توسعه دهندگان نرمافزار است و نه از وظایف تحویل گیرندگان آن.
– دایکسترا (Edsgar W.Dijkstra) در تعریف تست می گوید: تست فقط میتواند وجود خطاها را نشان دهد نه عدم وجود آنها را !
– تست نرم افزار به طور رسمی جزئی از بازبینی و اعتبارسنجی نرم افزار میباشد، که این دو واژه به صورت زیر تعریف و با هم مقایسه میشوند.
وارسی: آیا محصول را به درستی میسازیم؟
اعتبارسنجی: آیا محصول درستی را میسازیم؟
وارسی بررسی میکند که آیا نرم افزار از مشخصاتش پیروی میکند یا خیر. اعتبارسنجی باید تضمین کند که نرم افزار انتظارات مشتری را برآورده میسازد یا نه. توجه کنید که آنچه در مشخصات میآید ممکن است دقیقا خواستههای مشتری را برآورده نسازد.
در واقع هدف فرآیند تست در یک جمله ” ایجاد اعتماد نسبت به سیستم ” است. اما چطور میتوان نسبت به سیستم ایجاد اعتماد نمود؟ عوامل مختلفی در این امر دخیل هستند اما نقش تست پررنگتر می باشد. به همین دلیل تست دو هدف اصلی را دنبال میکند:
۱- تست اعتبارسنجی: موفقیت آن در درست کارکردن سیستم است.
۲- تست نقص: موفقیت آن در نمایان سازی خطاهایی است که موجب کارکرد نادرست سیستم می شود.

چه کسی تست میکند؟
در صنعت IT، شرکتهای بزرگ، تیمی برای بررسی نرم افزارهای تولیدی در چارچوب الزامات و فعالیتهای شرکت دارند که این تیم، تیم تست میباشد.
در اغلب موارد تستر در یکی از بخشهای زیر قرار میگیرد:
– بخش تست نرم افزار
– بخش توسعه نرم افزار
شرکتها طراحیهای متفاوت و وظایف و نقشهای متفاوتی برای اشخاصی که تست نرم افزار انجام میدهند، قائل میشوند. این نقشها عبارتند از : تستر نرم افزار، تضمین کیفیت نرم افزار( QA) ، تحلیلگر و …
چه زمانی تست شروع میشود؟
در طول چرخه عمر توسعه نرم افزار (Software Development Life Cycle) که به آن SDLC گفته میشود، تست آغاز شده و تا استقرار نرم افزار به طول میانجامد. با این حال تمامی این تستها بستگی به مدل توسعهای دارد که شرکتها انجام میدهند. به طور مثال در مدل آبشاری، تست در مرحله تولید نرم افزار انجام میشود اما در مدل افزایشی، تست در پایان هر افزایش یا تغییر، تکرار میشود و در پایان تولید نرم افزار هم دوباره تست انجام میشود.
در هر مرحله از SDLC ، تجزیه و تحلیل و تاییدیههای مورد نیاز نیز برای تست در نظر گرفته میشود. بررسی طراحی در مرحله طراحی محصول نیز به قصد بهبود طراحی در حوزه تست نیز در نظر گرفته میشود. انجام تست توسط یک توسعه دهنده پس از اتمام کد نیز به عنوان تست واحد (Unit Test) طبقه بندی میشود.
انجام تست در طول SDLC مزایای زیر را در بر دارد:
۱- کاهش زمان تولید
۲- کاهش هزینه ها
۳- کاهش زمان دوباره کاریها
۴- کاهش خطاهای نرم افزاری
۵- افزایش بازدهی
۶- افزایش کیفیت نرم افزار
۷- تحویل به موقع پروژه به کارفرما
۸- افزایش رضایت مشتری

چه زمانی تست پایان مییابد؟
بر خلاف آنکه میدانیم چه زمانی تست را آغاز کنیم، تعیین زمان پایان تست بسیار دشوار است. تست فرآیندی بی پایان میباشد و تعیین زمانی برای توقف آن بسیار دشوار است و نمیتوان با اطمینان گفت که نرم افزار تولیدی ۱۰۰% تست شده است.
مواردی که نبایستی برای تست درنظر گرفته شود:
۱- تعیین مهلت تست
۲- اطمینان از کامل بودن تست
۳- پس از اتمام تست فانکشنال و تست پوشش کد، نبایستی نتیجه را به نقطه خاصی سوق دهیم.
۴- اگر در سطح خاصی نرخ خطا کمتر بوده و بدون باگ باشد این سطح از اولویت بالاتری شناخته شود.
محصولات نرم افزاری برای کشف و رفع باگها وهمچنین تعیین کیفیت نیاز به تست دارند. روند تست نرم افزار گاهی میتواند به اندازه توسعه نرم افزار انرژی برده و بااهمیت باشد. تست نرم افزار شامل فرآیند اجراهای متعدد برنامه با هدف یافتن باگهای نرم افزاری است اما محدود به آن نمی باشد، تضمین اینکه تاچه حد نیازمندیهای موجود را برآورده میکند و آیا با انتظارات مشتری سازگار است یا خیر نیز توسط فرآیند تست مشخص میشود.
گرفته شده از Testology