Sanity Testing و Smoke Testing موضوعاتی هستند که در حوزه تست نرمافزار افراد روی آنها دچار بیشترین سوتفاهم میشوند. مطالب زیادی روی این موضوعات وجود دارد، اما بسیاری از آنها گیجکننده هستند. مقاله زیر تلاش میکند تا به این سردرگمی پاسخ دهد.
تفاوت های کلیدی بین Smoke Testing و Sanity Testing را میتوان با کمک نمودار زیر متوجه شد:
برای درک نمودار فوق، ابتدا اجازه دهید، این موارد را بفهمیم که: ۱- یک Build نرمافزاری چیست؟ ۲- Smoke Testing چیست؟ ۳- Sanity Testing چیست؟
یک Build نرمافزاری چیست؟
اگر شما در حال ایجاد یک برنامه کامپیوتری ساده هستید که تنها از یک فایل Source Code تشکیل شده است، فقط باید یک فایل را کامپایل کرده و آنرا به منظور تولید یک فایل قابل اجرا(Executable یا فایل exe)، لینک نمایید. این فرآیند بسیار ساده است.
معمولا چنین موردی در پروژههای واقعی رخ نمیدهد. یک پروژه نرمافزاری معمولا شامل صدها یا حتی هزاران فایل Source Code است. ایجاد یک برنامه قابل اجرا از این فایلهای Source Code یک کار پیچیده و وقتگیر است.
به همین دلیل شما نیاز دارید از یک نرمافزار “Build” برای ایجاد یک برنامه اجرایی و یک فرآیند که “Software Build”(ساخت نرمافزار) نام دارد، استفاده کنید.
Smoke Testing چیست؟
تست دود نوعی تست نرمافزار است که پس از ساخت نرم افزار انجام میشود و مقصود آن حصول اطمینان از این موضوع است که Functionalityهای مهم برنامه به خوبی کار کنند. این نوع تست “قبل از اینکه” هر نوع تست دقیق Functional یا رگرسیونی روی Software Build انجام شود، اجرا میگردد. در اینجا هدف این است که یک برنامه بد شکست خودره را Reject کنیم تا تیم QA برای نصب و تست اپلیکیشن چنین نرمافزاری وقت تلف نکند.
در تست دود، Test Caseها انتخاب میشوند تا مهمترین Functionalityها یا کامپوننتهای سیستمی را پوشش دهند. در اینجا هدف این نیست که یک تست جامع انجام دهیم، بلکه باید تأیید کنیم که قابلیتهای حیاتی سیستم درست کار میکنند.
به عنوان مثال، یک تست دود معمول اینچنین خواهد بود: تأیید کنید که برنامه با موفقیت لانچ میشود، بررسی کنید که آیا GUI طراحی شده Responsive است یا خیر… و غیره
Sanity Testing چیست؟
Sanity Testing نوعی تست نرم افزار است که پس از دریافت Software Build(با تغییر کوچک در Functionality یا کد) انجام میگیرد، تا بدین ترتیب از رفع باگها و عدم بروز مشکلات جدید در خلال این تغییرات، اطمینان حاصل شود. در اینجا هدف این است که تعیین کنیم که آیا Functionality پیشنهادی تقریبا مطابق انتظار فعالیت میکند یا خیر. اگر Sanity Testing شکست خورده و Fail شود، Build صورت گرفته Reject میشود تا بدین ترتیب زمان و هزینه جهت انجام تست دقیقتر تلف نشود.
در اینجا مقصود این نیست که Functionality جدید را کاملا بررسی کنیم، بلکه تعیین این موضوع که آیا توسعهدهنده در هنگام تولید نرمافزار مشغول تولید معیارهای معقول است یا خیر، برای ما اهمیت دارد. به عنوان مثال، اگر ماشین حساب علمی شما نتیجه ۲ + ۲ = ۵ ارائه دهد، دیگر تست Functionalityهای پیشرفته مانند sin 30 یا cos 50 انجام نمیشوند.
Sanity Testing و Smoke Testing: تفاوتهای کلیدی
Smoke Testing | Sanity Testing |
---|---|
Smoke Testing به منظور حصول اطمینان از این موضوع انجام میشود که Functionalityهای حیاتی برنامه به خوبی کار میکنند | تست Sanity برای بررسی Functionalityهای جدید یا باگهای رفع شده انجام میشود |
هدف از این تست، بررسی "ثبات" سیستم برای ادامه تست دقیقتر است | هدف تست این است که "معقول بودن" سیستم را برای انجام تست دقیقتر تائید نماید |
این تست توسط توسعهدهندگان یا تسترها انجام میشود | Sanity Testing معمولا توسط تسترها انجام میشود |
تست دود معمولا مستند یا اسکریپت شده(Scripted Testing) است | Sanity Testing معمولا مستند نبوده و اسکریپت شده(Scripted Testing) نیست |
تست دود یک زیر مجموعه از تست پذیرش(Acceptance Testing) است | Sanity Testing زیرمجموعهای از تست رگرسیون است |
تست دود کل سیستم را End-to-End(از آغاز تا پایان) به کار میاندازد | Sanity Testing فقط بخشهای خاصی از سیستم را به کار میگیرد |
تست دو یک چکاپ عمومی سلامتیست | Sanity Testing مانند یک چکاپ تخصصی سلامت است |
نکاتی که باید در نظر داشته باشید
- هر دو نوع تست یعنی Sanity Testing و Smoke Testing، راههایی هستند که با تصمیمگری سریع در این مورد که آیا نرمافزار برای تست دقیقتر بیش از حد نادرست است یا خیر، از اتلاف زمان و زحمت جلوگیری میکنند.
- Sanity Testing با عنوان تستر تست پذیرش نیز نامیده میشود.
- تست دود روی یک Build خاص که به عنوان یک Build Verification Test نیز شناخته میشود، انجام میشود.
- یکی از بهترین شیوههای صنعتی، این است که Build روزانه و Smoke Test را در پروژههای نرمافزاری انجام داده و اداره کنید.
- هر دو نوع تست یعنی Sanity Testing و Smoke Testing، میتوانند به صورت دستی یا با استفاده از ابزار اتوماسیون اجرا شوند. هنگامی که ابزارهای خودکارسازی استفاده میشوند، تستها اغلب توسط همان فرآیندی ایجاد میشوند که خود Build را ایجاد میکنند.
- طبق نیازهای تست، ممکن است مجبور شوید تستهای Sanity و Smoke را در Build نرمافزار انجام دهید. در چنین مواردی، ابتدا تستهای دود را اجرا نموده و سپس با تست Sanity پیش بروید. در صنعت، Test Caseها برای تست Sanity معمولا با تستهای دود ترکیب میشوند تا بدین ترتیب اجرای تست را تسریع نمایند. از این رو اشتباه گرفتن این دو اصطلاح یک موضوع شایع است.
در بخشهای آتی بیشتر در مورد تست دود صحبت خواهیم کرد.
این مطلب بخشی از دوره آموزشی رایگان تست نرمافزار بود، که میتوانید تمامی مطالب این دوره رایگان را در اینجا مشاهده نمایید.