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

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

1. تست واحد (Unit testing)

2. تست یکپارچگی (Integration Testing)

3. تست سیستم (System Testing)

4. تست پذیرش (Acceptance Testing)




تست واحد (Unit testing) :
یکی از مراحل اولیه و اصلی تست یک سیستم، تست واحد می‌باشد که هریک از واحدها یا ماژول‌های تشکیل دهنده یک برنامه را به‌طور مستقل مورد تست قرار می‌دهد. تست واحد نوعی تست جعبه سفید است که برنامه‌نویس ساختار داخلی برنامه را می‌شناسد و به دنبال آن‌ است که بداند انجام تست چه تاثیری روی عملکرد داخلی آن می‌گذارد. معمولا تست واحد، توسط خود برنامه‌نویسان و به موازات توسعه سیستم انجام می‌شود. این تست بر روی ارزیابی بخش‌های کوچک عملیاتی تمرکز دارد.

هدف از انجام این تست اطمینان از درستی عملکرد واحدهایی است که پس از توسعه در قسمت‌های مختلف سیستم مورد استفاده قرار خواهند گرفت. به عبارتی می‌توان گفت که آیا واحد مورد نظر به تنهایی کاری را که باید انجام بدهد، می‌دهد یا خیر؟

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



تست سطح یکپارچگی (Integration Testing):
تست واحد را برای هر کدام از واحدها به صورت جداگانه انجام دادیم و از صحت عملکرد آنها مطمئن شدیم. همه واحدها به تنهایی به طور صحیح وظایف خود را انجام می‌دهند، آیا نیاز است که درستی عملکرد واحد ها در زمانی که کنار هم قرار می گیرند نیز تست شود؟ ما نیاز داریم تا مطمئن شویم که آیا واحدها در کنار هم کار می‌کنند، به درستی فراخوانی می‌شوند و داده‌های درستی را در زمان مناسبی از طریق واسط‌های آنها عبور می‌دهند.

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

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



تست سیستم (System Testing):
تست یکپارچگی را برای نرم‌افزار مورد نظر انجام دادیم و مطمئن شدیم که تمام قطعات در کنارهم می‌توانند قرار گیرند و بدون هیچ مشکلی وظایفشان را انجام دهند. در اینجا نرم افزار طراحی شده به تنهایی درست عمل می کند و بخش های مختلف می توانند کنار یکدیگر بدون خطا فعالیت نمایند. نرم‌افزار خود جزئی از یک سیستم بزرگتر است و نیاز است که با عناصر دیگر این سیستم مانند سخت افزارها ارتباط برقرار کند و با آنها یکپارچه شود. پس نیاز داریم تا مطمئن شویم که سیستم به عنوان یک واحد به طور کامل عمل خواهد کرد و نیازمندی‌های سیستم را برآورده می‌کند. این سطح از تست آخرین سطحی است که توسط توسعه‌دهندگان انجام می شود تا قبل از تحویل نرم‌افزار به کاربرنهایی برای تست از عملکرد آن مطمئن شوند.

بنابراین تست سیستمی نشان‌ می‌دهد که سیستم کلیه نیازمندی‌های مد نظر را برآورده کرده است. یک تست سیستمی زمانی‌ مفید خواهد بود که خصوصیات و مشخصات سطح سیستم برای آن وجود داشته باشد. برای این منظور استفاده از مستندات تهیه شده برای اهداف سیستم لازم و مفید به نظر می‌رسد.




 تست پذیرش (Acceptance Testing):
نرم‌افزار به‌طور کامل توسط توسعه‌دهندگان در تمام سطوح تست، با موفقیت تست شد، اما آیا نرم‌افزار واقعا به‌طور کامل کار می‌کند؟ آیا تمام نیازهای فعلی کاربر نهایی را برآورده می‌کند؟ بنابراین تستی نیاز داریم که توسط کاربران نهایی، مشتریان و نه توسعه‌دهندگان صورت می‌گیرد و هدف آن است که کاربر مشخص کند عملیاتی که برنامه انجام می‌دهد نیازمندی‌های آن‌ها را برآورده می‌کند یا خیر.

تست پذیرش دارای انواع مختلفی است که می‌توان به موارد زیر اشاره کرد:
۱- تست آلفا: تست آلفا در سایت توسعه دهنده نرم‌افزار و در اغلب موارد توسط کارمندان داخلی و در بعضی از موارد توسط مشتری انجام می‌گیرد.
۲- تست بتا: تست بتا در سایت مشتریان و توسط مشتریان که از سیستم استفاده خواهند کرد صورت می‌گیرد و مشکلات مشاهده شده را به توسعه‌دهندگان گزارش می‌کنند.

تست پذیرش دو هدف اصلی دارد. اول اطمینان از اینکه سیستم پیاده‌سازی شده نیازمندی‌های نرم‌افزاری را برآورده می‌کند. دوم اطمینان از اینکه سیستم نرم‌افزاری می‌تواند در دنیای واقعی، که از افراد متعدد با توانایی‌‌ها، ویژگی‌ها، شرایط و فشارکاری و زمانی مختلفی تشکیل شده است، به خوبی عمل کند.

گرفته شده از Testology

آموزش برنامه نویسی سی شارپ، آموزش ASP.NET MVC، آموزش طراحی صفحات وب، آموزش برنامه نویسی موبایل (Xamarin) - از مقدماتی تا پیشرفته در سپیدآریا