در پست قبلی در مورد اهمیت و ارزش تست در توسعه نرم افزار صحبت کردیم حالا می خواهیم انواع تست رو بر اساس هرم تست معرفی کنیم.
هرم بالا انواع سطوح تست و اهمیت و هزینه و سرعت هر سطح را بیان میکند
تست واحد (unit test) : تست یک بخش کوچک از کد (تابع)بدون در نظر گرفتن وابستگی (فراخوانی دیتابیس ،فراخوانی وب سرویس و...) های اون قطعه کد ،یعنی اگر وابستگی در تکه کد ما وجود داره تست ما شامل اون وابستگی نمیشه و ما اون رو درنتیجه تست حساب نمی کنیم و رفتارشون رو در تست تقلید میکنیم (نشان دهنده ایزوله بودن تست واحد). همانطور که در هرم تست مشاهده می کنید تست واحد در انتهای هرم قرار دارد که نشان دهنده بالا بودن تعداد آنها در یک نرم افزار می باشد.این تست ها توسط توسعه دهنده سیستم ایجاد شده و سرعت انجام تست بالا می باشد و در صورت شکست نقطه وقوع شکست تست براحتی قابل مشاهده هست.تست پذیر بودن یک معماری در نوشتن تست های واحد بیشتر به چشم می آید و کمک زیادی به عملیات mocking میکند
تست یکپارچگی (Integration Test یا Api Test): در این نوع تست اون بخش از کد رو که بصورت ایزوله تست کردیم و وابستگی های اون رو mock کردیم اینبار باید بصورت واقعی و بدون mock کردن تست کنیم . این تست نسبت به تست واحد کندتر هستش و یک یا چند تست واحد رو شامل میشه.این تست در درجه دوم اهمیت از نظر هرم تست می باشد و همانند تست واحد توسط توسعه دهنده سیستم نوشته می شود.
تست مورد کاربری (GUI Test یا End To End Test): در این نوع تست یک UseCase را از ابتدا تا انتها تست میکنیم. این تست ها نسبت به موارد بالا کند تر و همچنین هزینه نگهداری آنها بسیار بالا تر می باشد.در این تست با ابزارهای مخصوص تمام اکشن های کاربر برای انجام یک سناریو توسط نرم افزار ضبط می شود و بعد نرم افزار بصورت خودکار این مراحل را اجرا می کند نرم افزار هایی که در تین زمینه معروف هستند عبارتند از selenium, Coded UI , Ranorex