در این مقاله، در مورد مفاهیم و تفاوت های smoke test و sanity test در فرآیند تست نرمافزار، توضیح داده میشود.
زمانی که نرم افزار از لحاظ کارکرد در وضعیت پایدار و مطلوبی نیست و وظایف اصلی و حیاتی خود را طبق انتظار انجام نمیدهد، اجرا کردن تست هایی که بصورت جامع، عملکرد و همهی ویژگی های آن را پوشش میدهد، کاری بیهوده است. به کمک تست اسموک (smoke test) ، وضعیت کلی و استاندارهای اصلی ابتدا بررسی میشوند و بر اساس گزارش های آن، گام بعدی تست نرم افزار برداشته می شود.
.به این تست همچنین “Build Verification Testing“ یا “Confidence Testing” هم میگویند. این تست به عنوان مقدمهی تست های Functional و یا Regression شناخته شده و بررسی میکند که آیا برنامه آمادگی لازم جهت تست جامع و کامل را دارد یا خیر.
تست smoke بصورت اتوماتیک پیاده سازی میشود زیرا معمولا روندی مشخص و ثابت را طی میکند. ( تست کیس های اصلی برنامه که شامل فیچرهای مهم سیستم هستند، از قبل مشخص شده اند و کمتر دچار تغییرات میشوند)
هدف تست smoke، مشخص کردن مشکلات اولیه و اصلی برنامه است، بنابراین فیچر ها و قابلیت های جدید نرمافزار را بررسی نمیکند بلکه تمرکزش بر روی مشخصات و قابلیت های حیاتی و مهم سیستم است!
چهت آشنایی با چالش ها و خدمات تست smoke، صفحه ی مربوطه را مطالعه کنید.
برای نمونه، یک سوپرمارکت اینترنتی را درنظر بگیرید که هر کاربری میتواند محصول مورد نیازش را سفارش دهد.
این سامانه در کنار خرید محصول، خدمات دیگری هم به کاربران خود ارائه میدهد و فیچر و ویژگی های زیادی به مرور به آن اضافه شده است. اما مهم ترین ویژگی آن، قابلیت سفارش و خرید محصول است. برای تست smoke، یک سناریو خرید محصول طراحی میکنیم و این تست را بعد از هر build که در اختیار تیم QA قرار میگیرد، اجرا میکنیم تا مطمئن شویم مهم ترین قابلیت سامانه، دچار مشکل نشده است. اگر این مرحله با موفقیت سپری شد، نرم افزار آماده اجرای تست کیس های بیشتر در آزمایش های دیگر میشود.
تست سناریو در این مثال به شکل زیر است:
از طرفی زمانی که تغییراتی در یک نرم افزار صورت میگیرد، ابتدا باید تضمین شود که تغییرات صورت گرفته مطابق با انتظار عمل میکنند یا خیر. سپس بعد از این مرحله نرم افزار آمادهی آزمایش بصورت عمیق تر و جامع تر میشود.
پیشن نیاز این امر، پایدار بودن نرم افزار (Stable) است، به عبارتی قبل از اجرای تست سلامت (sanity test)، نرم افزار باید تست smoke را با موفقیت طی کرده باشد. در غیر این صورت، تست sanity کاری بیهوده خواهد بود.
منظور از stable builds این است که تست های Smoke و دیگر تست ها مانند Regression را پشت سر گذاشته است.
این تست معمولا بصورت دستی (manual) صورت میگیرد زیرا روند تکراری و از قبل مشخص شده ای ندارد. در غیراین صورت، میتوان با درنظرگرفتن شرایطی خاص و یا ادغام با تست regression، بصورت اتوماتیک هم پیادهسازی کرد.همچنین از تست sanity در مواقعی که نیاز است نرمافزار بعد از اعمال تغییرات، سریع عرضه شود، میتوان استفاده کرد. این تست کمک میکند که در کوتاه ترین زمان، عملکرد نرم افزار و نواحی تحت تاثیر آن، آزمایش شود .
تست sanity، را میتوان بخشی از تست regression درنظر گرفت که بصورت سطحی تر، عملکرد نرم افزار را در شرایطی که فرصت کمی برای آزمودن جامع وجود دارد، بررسی میکند.
هدف از sanity test این است که عملکرد کلی تغییرات جدید نرم افزار را بررسی کند تا مشخص شود که توسعه دهندگان در حین تولید نرم افزار،استانداردهای اصلی را رعایت کرده اند.
چهت آشنایی با چالش ها و خدمات تست sanity، صفحه ی مربوطه را مطالعه کنید.