برای همین تست های مختلف تعریف و طراحی شده اند که به تیم های نرم افزاری کمک می کنند نرم افزاری های کم اشکال یا بی اشکالی را تولید نمایند. در اینجا به بررسی روش های مختلف تست نرم افزار می پردازیم.در این مقاله با تست های اصلی که در فرآیند تست یک محصول نرم افزاری استفاده می شود آشنا خواهیم شد.
به طور کلی در فرآیند تست و ارزیابی نرمافزارها، تست های مختلفی انجام می شود که هر یک از آنها در مرحله خاصی استفاده می گردند. تست نرمافزار عموماً در چهار مرحله اصلی صورت میگیرد. لازم به ذکر است که این مراحل به ترتیب انجام می شوند ،این چهار مرحله به ترتیب شامل :
1. تست واحد (Unit testing)
2. تست یکپارچگی (Integration Testing)
3. تست سیستم (System Testing)
4. تست پذیرش (Acceptance Testing)
تست واحد (Unit testing) :
یکی از مراحل اولیه و اصلی تست یک سیستم نرم افزاری، تست واحد میباشد که هریک از واحدها و یا ماژولهای تشکیل دهنده یک برنامه را به طور مستقل مورد تست قرار میدهد. در واقع تست واحد نوعی بررسی جعبه سفید است که برنامهنویس ساختار داخلی برنامه را میشناسد و تلاش می کند تا بداند انجام تست چه تاثیری روی عملکرد داخلی آن میگذارد. معمولا تست واحد، توسط خود برنامهنویس ها و به موازات توسعه سیستم انجام می گردد. این تست بر روی ارزیابی بخشهای کوچک عملیاتی تمرکز دارد.
هدف اصلی از انجام این تست اطمینان از درستی عملکرد واحدهایی می باشد که پس از توسعه در قسمتهای مختلف یک سیستم مورد استفاده قرار خواهند گرفت. به عبارتی میتوان گفت که آیا واحد مورد نظر به تنهایی وظیفه خود را انجام می دهد یا خیر؟
برای انجام این تست برنامه نویس باید استانداردهایی را رعایت نماید که متدهای نوشته شده توسط وی به تنهایی و بدون وابستگی خاصی قابل انجام باشد. به طور مثال در بدنه متد خود از کنترلی مقدار نگرفته باشد و همه مقادیر مورد نیاز به صورت پارامتریک به متد مورد نظر ارسال شده باشد.
تست سطح یکپارچگی (Integration Testing):
تست واحد را برای هر کدام از واحدها به صورت جداگانه انجام دادیم و از صحت عملکرد آنها مطمئن شدیم. همه واحدها به تنهایی به طور صحیح وظایف خود را انجام میدهند، آیا نیاز است که درستی عملکرد واحد ها در زمانی که کنار هم قرار می گیرند نیز تست شود؟ ما نیاز داریم تا مطمئن شویم که آیا واحدها در کنار هم کار میکنند، به درستی فراخوانی میشوند و دادههای درستی را در زمان مناسبی از طریق واسطهای آنها عبور میدهند.
تست یکپارچگی (مجتمع سازی) مهمترین سطح از تست است که روی تعامل بین اجزا، ماژولها و اشیایی که با هم کار میکنند، تمرکز دارد. تست یکپارچگی در واقع سطحی از تست است که اطمینان میدهد بخشهای مختلف سیستم به درستی باهم تعامل دارند و دادهها و اطلاعات بین آنها درست پاس میشوند.
هدف از تست یکپارچگی سیستم آن است که مطمئن شویم اجزای مختلف سیستم در کنار یکدیگر بهخوبی کار میکنند و تعاملات، ارتباطات و رد و بدل کردن دادهها در بین ماژولهای مختلف سیستم بهدرستی انجام میشود و در نتیجه کل سیستم عملکرد صحیحی دارد.
تست سیستم (System Testing):
تست یکپارچگی را برای نرمافزار مورد نظر انجام دادیم و مطمئن شدیم که تمام قطعات در کنارهم میتوانند قرار گیرند و بدون هیچ مشکلی وظایفشان را انجام دهند. در اینجا نرم افزار طراحی شده به تنهایی درست عمل می کند و بخش های مختلف می توانند کنار یکدیگر بدون خطا فعالیت نمایند. نرمافزار خود جزئی از یک سیستم بزرگتر است و نیاز است که با عناصر دیگر این سیستم مانند سخت افزارها ارتباط برقرار کند و با آنها یکپارچه شود. پس نیاز داریم تا مطمئن شویم که سیستم به عنوان یک واحد به طور کامل عمل خواهد کرد و نیازمندیهای سیستم را برآورده میکند. این سطح از تست آخرین سطحی است که توسط توسعهدهندگان انجام می شود تا قبل از تحویل نرمافزار به کاربرنهایی برای تست از عملکرد آن مطمئن شوند.
بنابراین تست سیستمی نشان میدهد که سیستم کلیه نیازمندیهای مد نظر را برآورده کرده است. یک تست سیستمی زمانی مفید خواهد بود که خصوصیات و مشخصات سطح سیستم برای آن وجود داشته باشد. برای این منظور استفاده از مستندات تهیه شده برای اهداف سیستم لازم و مفید به نظر میرسد.
تست پذیرش (Acceptance Testing):
نرمافزار بهطور کامل توسط توسعهدهندگان در تمام سطوح تست، با موفقیت تست شد، اما آیا نرمافزار واقعا بهطور کامل کار میکند؟ آیا تمام نیازهای فعلی کاربر نهایی را برآورده میکند؟ بنابراین تستی نیاز داریم که توسط کاربران نهایی، مشتریان و نه توسعهدهندگان صورت میگیرد و هدف آن است که کاربر مشخص کند عملیاتی که برنامه انجام میدهد نیازمندیهای آنها را برآورده میکند یا خیر.
تست پذیرش دارای انواع مختلفی است که میتوان به موارد زیر اشاره کرد:
۱- تست آلفا: تست آلفا در سایت توسعه دهنده نرمافزار و در اغلب موارد توسط کارمندان داخلی و در بعضی از موارد توسط مشتری انجام میگیرد.
۲- تست بتا: تست بتا در سایت مشتریان و توسط مشتریان که از سیستم استفاده خواهند کرد صورت میگیرد و مشکلات مشاهده شده را به توسعهدهندگان گزارش میکنند.
تست پذیرش دو هدف اصلی دارد. اول اطمینان از اینکه سیستم پیادهسازی شده نیازمندیهای نرمافزاری را برآورده میکند. دوم اطمینان از اینکه سیستم نرمافزاری میتواند در دنیای واقعی، که از افراد متعدد با تواناییها، ویژگیها، شرایط و فشارکاری و زمانی مختلفی تشکیل شده است، به خوبی عمل کند.