تست عملکرد در مقابل تست واحد: مقایسه ای از تعاریف، اهداف و مزایا
برای اینکه تمایز این دو نوع تست نرم افزار را ببینیم باید تعاربف، اهداف و مزایای آنها رو قبل از اینکه به مقایسه آنها بپردازیم بدونیم.
تعاریف
اول از همه تعریف هر کدوم از نشان می دهد چطور از هم مجزا می شوند.
تست عملکرد چیست؟
یکی از انواع فرآیند تست نرم افزار است. تست های عملکرد، عملکرد end-to-end یک نرم افزار، اپلیکیشن یا سیستم را در مقابل خواسته های عملکردی از پیش تعیین شده چک می کند تا ببیند آیا مطابق انتظار کار می کنند یا خیر. یک تست عملکردی می تواند به طور دستی یا خودکار اجرا شود. تست عملکرد درگیر سیستم های تست black-box است و کاری به source code ندارد.
تست عملکرد یک اصلاح چتر مانند برای انواع تست است از جمله: تست یکپارچگی، تست سیتسم، تست regression، تست پذیرش، تست موله، تست smoke، تست سلامت، تست API، تست UI، تست white-box، تست black-box، تست آلفا، تست بتا، تست production و همچنین تست واحد. هر کدوم از این ها نسبت به اهداف متفاوتی در راستای یک هدف بزرگتر به نام تست عملکرد خدمت می کند. این انواع تست عملکرد می توانند به طور خلاصه به صورت زیر تعریف شوند:
تست یکپارچگی: چک می کند که آیا ماژول های نرم افزاری با یکدیگر به صورت یک سیستم کار می کنند.
تست مولفه: در این تست نرم افزار ، مولفه های نرم افزاری منحصر بفرد به صورت مجزا تست می شوند.
تست سیستم: کل سیستم را بررسی می کند تا ببیند آیا خواسته های مشخص را برآورده می کند و می تواند به مشتریان تحویل شود یا خیر.
تست regression: چک می کند که آیا تغییرات ایجاد شده در کد منجر به باگ یا regression جدیدی می شوند یا خیر.
تست پذیرش: توسط کاربران نهایی یا مشتریان قبل از امضای پروژه انجام می شود
تست سلامت: چک کند آیا تغییرات جدید منجر به باگی در عملکرد فعلی سیستم می شوند و اینکه سیستم هنوز به طور پایدار کار می کند.
تست Smoke: اینکه عملکردهای حیاتی یک اپلیکیشن کار می کنند یا خیر را چک می کند.
تست API: یک API را بررسی می کند و چک می کند از نظر عملکرد، تکیه پذیر بودن، کارایی و امنیت انتظارات را برآورده کند.
تست UI: واسط گرافیکی نرم افزار را بررسی می کند.
تست white-box: تکنیک تست white-box به ساختار داخلی کد یا برنامه توجه می کند تا عملکرد آن را تست کند.
تست black-box: تکنیک تستی است که عملکرد قطعه ای از نرم افزار را بدون داشتن هر گونه دانشی نسبت به ساختار یا کد داخلی آن ارزیابی می کند.
تست آلفا: قبل از انتشار آن در تست بتا در محیط توسعه توسط توسعه دهندگان نرم افزار داخلی اجرا می شود.
تست بتا: توسط کاربران نهایی یا مشتریان بعد از تست آلفا انجام می شود تا در رابطه با محصول قبل از انتشار نهایی فید بک بگیرند.
تست production: بررسی اینکه آیا محصول نرم افزاری جدید می تواند به خوبی در محیط عملیاتی live شود.
تست واحد چیست؟
تست واحد یک نوع از فرآیند تست نرم افزار است که در آن واحد های منحصربفرد نرم افزار، اپلیکیشن یا سیستم به طور مجزا تست می شوند. هدف نهایی تست واحد بررسی سورس کد است تا چک کند واحدها طبق انتظار اجرا می شوند، و تست واحد اغلب درگیر تست whitebox است. تست واحد و تست یکپارچگگی ترکیب شده اند اما آنها در حقیقت مجزا هستند. یک تست واحد می تواند به طور دستی یا خودکار اجرا شود اما معمولا خودکار است.
اهدف
هر دو تست عملکرد و واحد در فرایندهای تست نرم افزار یا اپلیکیشن مهم هستند اما آنها در اهداف کاملا متفاوت هستند.
اهداف تست عملکرد
- این روش تست نرم افزار توسط تست کننده ها در همه سطوح تست در فرآیند توسعه نرم افزار انجام می شوند
- برای بررسی انطابق نرم افزار با خواسته های عملکردی تعریف شده.
- برای چک کردن اینکه آیا عملکرد نرم افزار اپلیکیشن یا سیستم خواسته های کاربر را برآورده می کند
- برای بررسی اینکه همه feature ها طبق انتظار کار می کنند
- برای شناسایی و حل مشکلات مراحل اولیه چرخه توسعه و جلوگیری از موارد ممکن و تضمین کیفیت نرم افزار.
اهداف تست واحد
- تست های واحد اغلب در فرآیند توسعه تویط برنامه نویس ها یا اغب تیم های ارزیابی کیفیت اجرا می شوند. به طور معمول برنامه نویس ها test case ها را می نویسند و آنها را اجرا می کنند تا چک کنند واحد های کد به خوبی عمل می کنند. تست واحد به عنوان اولین سطح تست نرم افزار قبل از انتقال به تست یکپارچگی در نظر گرفته می شود:
- برای بررسی هر واحد تست پذیر نرم افزار اپلیکیشن یا سیستم به طور مجزا
- برای بررسی دقت سورس کد
- برای catch کردن باگ ها و حل آنها در اولین فرصت ممکن در چرخه توسعه
- برای تضمین کیفیت کد
- برای کوتاه کردن چرخه تست و فرآیندهای رقع باگ و در نتیجه صرقه جویی در هزینه های توسعه و نگهداری
- برای توانمند شدن در استفاده مجدد از کد
مزایا
هر دو تست واحد و عملرد نقش مهمی در گردش کار توسعه دارند اما مزایای متفاوتی نیز دارند
مزایای تست عملکرد
- تست واحد به شما اجازه می دهد تا کارایی و عمبکرد نرم افزار اپلیکیشن یا سیستم را بررسی کنید تا کیفیت را قبل از انتشار تضمین کنید. این به شما کمک می کند تا کیفیت خروجی نهایی را بهبود بخشید.
- از آنجای که تست های عملکرد روی جنبه های کاربر تمرکز دارند، تست کننده های عملکرد می توانند سناریوهای تستی ایجاد کنند که به بهترین شکل سناریوهای کاربر-واقعی را توصیف کند.
- با تست های عملکرد تیم مهندسی نرم افزار می تواند نه تنها دیدگاه توسعه دهنده و الزارمات از پیش تعریف شده، بلکه نیازها و انتظارات کاربران را نیز برطرف کند.
مزایای تست واحد
- تست واحد به توسعه دهندگان اجازه می دهد تا عملکرد ارائه شده توسط یک واحد را یاد بگیرند و در ک کنند
- تست واحد توسعه دهندگان را قادر می سازند تا کد را اصلاح کنند و آن را قابل اطمینان تر کرده و فهم آن را ساده تر کنند. همچنین به تضمین عملکرد صحیح واحد/ماژول کمک می کند
- تست های واحد چک کردن بخش های پروژه بدون وابستگی به اینکه سایز بخش ها کامل شده باشند را تسهیل می کند.
تفاوت بین تست عملکرد و تست واحد
ما جنبه های مختلف تست واحد و تست عملکرد را مرور کردیم و به طور واضح آنها قبل تعویض نیستند. اما برای تاکید بر ویژگی های متمایز آنها، بیاید به فاکتورهای متمایزکننده ای که آنها در این مقایسه دقیق متامیز می کنند نگاهی بیندازیم:
- در رابطه با هدف، هدف تست واحد چک کردن واحدهای منحصربه فرد به طور مجزا است در حالیکه تست عملکرد، عمبکرد نرم افزار/اپلیکیشن/ سیستم را بررسی می کند تا مطمئن شود طبق انتظار کار می کند.
- توسعه دهندگان کسانی هستند که تست های واحد را می نویسند در حالیکه تست کنندگان کسانی هستند که تست های عملکردی را انجام می دهند
- تست واحد درگیر تست white-box است. تست عملکردی از سوی دیگر درگیر تست black-box است
- تست واحد اغلب در شروع توسعه انجام می شود. برخلاف تست های واحد ، تست های عملکرد فقط بعد از ساخت عملکرد ها انجام می شوند.
- چون نوشتن و اجرای تست واحد آسانتر و ساده است هزینه آن پایین تر از تست عملکرد است.
- تست های عملکرد می توانند هم به طور دستی و خودکار تست شوند در حالیکه تست واحد معمولا خودکار انجام می شود.
خلاصه
فاکتورها | تست واحد | تست عملکرد |
هدف | تست واحدهای منحصر به فرد به طور مجزا | تست عملکرد نسبت به خواسته های از پیش تعریف شده |
پوشش تست | تعداد خطوط کد | تعداد خواسته های برآورده شده |
تکنیک تست | تست white-box | تست black-box |
Target | واحدها/ماژول های منحصر بفرد | عمبکرد یک نرم افزار/اپلیکیشن/سیستم |
نوشته شده توسط | توسعه دهندگان | تست کنندهای QA و مهندسین تست |
پیچیدگی | انجام پیچیده تر است | انجام ساده و آسان است |
تغییرات | پر تعداد | تغییر زیادی ندارد |
تعداد موارد تست | بیشتر از سایر انواع تست | کمتر از تست واحد و تست یکپارچگی |
هزینه و نگهداری | پایین | بالا |
چه موقع استفاده می شود | در شروع فرآیند توسعه | بعد از سخت featureها |
زبان های برنامه نویسی | همان زبانی که کدنویسی انجام شده | می تواند با زبان برنامه نویسی متفاوت باشد |
خودکار بودن | معمولا خودکار است | هم تست خودکار و هم دستی |
مشکلاتی که پوشش داده می شوند | خطاهای کد و موارد پایه | عملکرد و کارایی |
ابزار | JUnit, NUnit, Mockito, TestNG | Selenium, UFT, SahiPro |
TestNG is a testing framework for the Java programming language
Mockito is an open source testing framework for Java released under the MIT License.
JUnit is a unit testing framework for the Java programming language.
NUnit is an open-source unit testing framework for the .NET Framework and Mono.
Selenium is an open source umbrella project for a range of tools and libraries aimed at supporting browser automation. It provides a playback tool for authoring functional tests across most modern web browsers, without the need to learn a test scripting language
منبع:
https://www.orientsoftware.com/blog/functional-testing-vs-unit-testing/#:~:text=Normally%2C%20the%20developers%20write%20test,application%2C%20or%20system%20in%20isolation.