- تست واحد در مقابل تست ادغام در مقابل تست عملکردی
- تست واحد چیست؟
- تست یکپارچه سازی چیست. ?
- تست واحد در مقابل تست ادغام
- تست عملکردی
- نتیجهگیری
- مطالعه توصیه شده
مقایسه دقیق تست واحد، ادغام و عملکرد:
برای هر برنامه نرم افزاری، هم تست واحد و هم تست یکپارچه سازی، بسیار مهم است زیرا هر یک از آنها از فرآیند منحصر به فرد برای آزمایش یک برنامه نرم افزاری.
اما هر یک یا حتی هر دو نمی توانند در هیچ نقطه ای جایگزین تست عملکردی شوند.
تست واحد در مقابل تست ادغام در مقابل تست عملکردی
آزمایش واحد به معنای آزمایش واحدهای جداگانه یک برنامه کاربردی به صورت مجزا (بدون هیچ گونه تعامل با وابستگی ها) است. تأیید کنید که کد کارها را به درستی انجام میدهد.
تست یکپارچهسازی به معنای بررسی اینکه آیا ماژولهای مختلف هنگام ترکیب با هم بهعنوان یک گروه خوب کار میکنند یا خیر.
آزمایش عملکردی به معنای آزمایش بخشی از عملکرد در سیستم (ممکن است با وابستگی ها تعامل داشته باشد) تا تأیید شود که کد کارها را درست انجام می دهد.
تست های عملکردی مربوط به تست های یکپارچه سازی هستند، اما به آزمایش هایی اشاره می کنند که کل عملکرد برنامه را با همه کدهای در حال اجرا با هم بررسی کنید، تقریباً یک آزمایش یکپارچه سازی فوق العاده.
آزمایش واحد بررسی یک جزء واحد از سیستم را در نظر می گیرد در حالی که آزمایش عملکرد، بررسی عملکرد یک برنامه کاربردی در برابر آنچه در نظر گرفته شده است را در نظر می گیرد. عملکردی که در مشخصات مورد نیاز سیستم توضیح داده شده است. از سوی دیگر، تست یکپارچه سازی بررسی را در نظر می گیردماژول های یکپارچه در سیستم
و مهمتر از همه، برای بهینهسازی بازگشت سرمایه (ROI)، پایه کد شما باید تا حد امکان تست واحد، تستهای یکپارچهسازی کمتر و کمترین تعداد تستهای عملکردی داشته باشد.
این به بهترین شکل در هرم آزمایشی زیر نشان داده شده است:
نوشتن تستهای واحد آسانتر و اجرا سریعتر هستند. زمان و تلاش برای پیادهسازی و نگهداری آزمایشها از آزمایش واحد به آزمایش عملکردی همانطور که در هرم بالا نشان داده شده است افزایش مییابد.
مثال:
اجازه دهید این سه نوع آزمایش را با یک مثال سادهتر درک کنیم.
مثلا . برای یک تلفن همراه کاربردی، قطعات اصلی مورد نیاز «باتری» و «سیم کارت» هستند.
مثال تست واحد – باتری از نظر عمر، ظرفیت و سایر پارامترها بررسی می شود. سیم کارت برای فعال شدن آن بررسی می شود.
مثال تست یکپارچه سازی - باتری و سیم کارت یکپارچه شده اند، یعنی برای راه اندازی تلفن همراه مونتاژ شده اند.
عملکردی مثال آزمایشی – عملکرد تلفن همراه از نظر ویژگیها و میزان مصرف باتری و همچنین امکانات سیمکارت بررسی میشود.
ما نمونهای را در این مورد مشاهده کردهایم. شرایط عادی.
اکنون، اجازه دهید یک مثال فنی از یک صفحه ورود به سیستم را در نظر بگیریم:
تقریباً هر برنامه وب به آن نیاز دارد کاربران/مشتریان برای ورود به سیستم. برای این کار، هر برنامه بایدیک صفحه "ورود" داشته باشید که دارای این عناصر است:
- حساب/نام کاربری
- گذرواژه
- دکمه ورود/ورود به سیستم
برای تست واحد، موارد زیر ممکن است موارد آزمایشی باشند:
- طول فیلد – فیلدهای نام کاربری و رمز عبور.
- مقادیر فیلد ورودی باید معتبر باشند.
- دکمه ورود فقط پس از وارد کردن مقادیر معتبر (قالب و طولی) در هر دو فیلد فعال میشود.
برای تست یکپارچهسازی، موارد زیر ممکن است موارد آزمایشی باشند:
- کاربر پس از وارد کردن مقادیر معتبر و فشار دادن دکمه ورود، پیام خوشامدگویی را می بیند.
- کاربر باید پس از ورود معتبر و کلیک کردن، به صفحه خوش آمدگویی یا صفحه اصلی هدایت شود. دکمه ورود را فشار دهید.
اکنون، پس از انجام آزمایش واحد و ادغام، اجازه دهید موارد آزمایشی اضافی را که برای آزمایش عملکردی در نظر گرفته شده است، ببینیم:
- رفتار مورد انتظار بررسی میشود، یعنی آیا کاربر میتواند پس از وارد کردن مقادیر نام کاربری و رمز عبور معتبر با کلیک بر روی دکمه ورود به سیستم وارد شود.
- آیا پیام خوشآمدگویی وجود دارد که پس از ورود موفقیتآمیز ظاهر شود؟
- آیا پیام خطایی وجود دارد که باید در یک ورود نامعتبر ظاهر شود؟
- آیا کوکی های ذخیره شده سایت برای فیلدهای ورود وجود دارد؟
- آیا یک کاربر غیرفعال می تواند وارد سیستم شود؟
- آیا پیوند "رمز عبور فراموش شده" برای کاربرانی که رمز عبور خود را فراموش کرده اند وجود دارد؟
این موارد بسیار بیشتر است که بهذهن یک تستر عملکردی در حین انجام تست عملکردی. اما یک توسعهدهنده نمیتواند همه موارد را در حین ساختن کیسهای تست واحد و ادغام انجام دهد.
بنابراین، سناریوهای زیادی وجود دارد که حتی پس از آزمایش واحد و ادغام هنوز آزمایش نمیشوند.
اکنون زمان آن رسیده است که تست های واحد، ادغام و عملکرد را یک به یک بررسی کنیم.
تست واحد چیست؟
همانطور که از نام آن پیداست، این سطح شامل آزمایش یک "واحد" است.
در اینجا واحد می تواند کوچکترین بخش یک برنامه کاربردی باشد که قابل آزمایش است، خواه کوچکترین تابع، روش و غیره باشد. توسعه دهندگان نرم افزار کسانی هستند که موارد تست واحد را می نویسند. هدف در اینجا مطابقت با الزامات و رفتار مورد انتظار واحد است.
در زیر چند نکته مهم در مورد تست واحد و مزایای آن آورده شده است:
- آزمایش واحد قبل از تست یکپارچه سازی توسط توسعه دهندگان نرم افزار با استفاده از تکنیک های تست جعبه سفید انجام می شود.
- تست واحد نه تنها رفتار مثبت یعنی خروجی صحیح را در صورت ورودی معتبر بررسی می کند، بلکه خرابی هایی را که با ورودی نامعتبر رخ می دهد نیز بررسی می کند.
- یافتن مسائل/اشکالات در مراحل اولیه بسیار مفید است و هزینه های کلی پروژه را کاهش می دهد. از آنجایی که تست واحد قبل از ادغام کد انجام می شود، مسائلی که در این مرحله یافت می شوند را می توان به راحتی حل کرد و تاثیر آنها نیز بسیار کمتر است.
- یک تست واحد قطعات کوچک کد یا فردی را آزمایش می کند.عملکردها به طوری که مسائل/خطاهای یافت شده در این موارد تست مستقل هستند و بر سایر موارد تست تأثیر نمیگذارند.
- یک مزیت مهم دیگر این است که موارد تست واحد ساده و آزمایش کد را آسانتر میکنند. بنابراین، حل مشکلات در مرحله بعد نیز آسان تر می شود زیرا فقط آخرین تغییر در کد باید آزمایش شود.
- تست واحد باعث صرفه جویی در زمان و هزینه می شود و قابل استفاده مجدد و نگهداری آسان است.
JUnit (چارچوب جاوا)، PHPUnit (PHP Framework)، NUnit (Network Framework) و غیره ابزارهای تست واحد محبوبی هستند که برای زبان های مختلف استفاده می شوند.
تست یکپارچه سازی چیست. ?
آزمایش ادغام، آزمایش یکپارچهسازی بخشهای مختلف سیستم با یکدیگر است. دو بخش یا ماژول مختلف سیستم ابتدا یکپارچه شده و سپس تست یکپارچه سازی انجام می شود.
هدف از تست یکپارچه سازی بررسی عملکرد، قابلیت اطمینان و عملکرد سیستم است. زمانی که سیستم یکپارچه شود.
تست یکپارچه سازی روی ماژول هایی انجام می شود که ابتدا واحد تست شده اند و سپس تست یکپارچه سازی مشخص می کند که آیا ترکیب ماژول ها خروجی مورد نظر را می دهد یا خیر.
تست یکپارچه سازی می تواند توسط آزمایشکنندگان مستقل یا توسعهدهندگان نیز انجام میشود.
3 نوع مختلف از روشهای تست ادغام وجود دارد. اجازه دهید در مورد هر یک از آنها به طور خلاصه بحث کنیم:
الف) رویکرد یکپارچه سازی بیگ بنگ
در این رویکرد، همه ماژول ها یا واحدها یکپارچه شده و به عنوان یک کل آزمایش می شوند. این معمولاً زمانی انجام میشود که کل سیستم برای آزمایش یکپارچهسازی در یک نقطه از زمان آماده باشد.
لطفاً این رویکرد تست یکپارچهسازی را با تست سیستم اشتباه نگیرید، فقط یکپارچهسازی ماژولها یا واحدها آزمایش میشود و نه کل سیستم همانطور که در آزمایش سیستم انجام می شود.
مزیت اصلی رویکرد انفجار بزرگ مزیت این است که همه چیز یکپارچه در یک زمان آزمایش می شود.
یک اصلی عیب این است که تشخیص خرابی ها دشوار می شود.
مثال: در شکل زیر، واحد 1 تا واحد 6 با استفاده از رویکرد انفجار بزرگ ادغام شده و آزمایش شده است.
ب) رویکرد از بالا به پایین
ادغام واحدها/ماژول ها از سطوح بالا به پایین مرحله به مرحله آزمایش می شود.
واحد اول به صورت جداگانه با نوشتن STUBS تست میشود. پس از این، سطوح پایینتر یکی یکی ادغام میشوند تا اینکه آخرین سطح کنار هم قرار میگیرد و آزمایش میشود.
رویکرد از بالا به پایین یک روش بسیار ارگانیک برای ادغام است زیرا با چگونگی اتفاقات واقعی سازگار است. محیط.
تنها نگرانی با این رویکرد این است که عملکرد اصلی در پایان آزمایش میشود.
ج) پایین- رویکرد بالا
واحدها/ماژولها از پایین به بالا، مرحله به مرحله آزمایش میشوند تا زمانی که تمام سطوح واحدها/ماژولها یکپارچه شوند.و به صورت یک واحد تست شد. برنامه های محرک به نام DRIVERS در این رویکرد استفاده می شود. تشخیص مسائل یا خطاها در سطوح پایینتر آسانتر است.
عیب اصلی مضرات این رویکرد این است که مسائل سطح بالاتر تنها در پایان زمانی قابل شناسایی هستند که همه واحدها دارای ادغام شده است.
تست واحد در مقابل تست ادغام
با بحث کافی در مورد تست واحد و تست یکپارچه سازی، اجازه دهید به سرعت تفاوت های بین این دو را بررسی کنیم در جدول زیر:
Unit Testing | Integration Testing |
---|---|
تست یک جزء از کل سیستم یعنی یک واحد را به صورت مجزا آزمایش می کند. | آزمایش اجزای سیستم که با هم کار می کنند، یعنی همکاری چند واحد را آزمایش می کند. |
اجرای سریعتر | قابل اجرا کند |
بدون وابستگی خارجی. هر گونه وابستگی خارجی مورد تمسخر یا حذف قرار می گیرد. | به تعامل با وابستگی های خارجی (مانند پایگاه داده، سخت افزار و غیره) نیاز دارد |
ساده | پیچیده |
انجام شده توسط توسعه دهنده | انجام شده توسط تستر |
این یک نوع تست جعبه سفید است | این یک نوع تست جعبه سیاه است |
در مرحله اولیه آزمایش انجام می شود و سپس می تواند در هر زمان انجام شود | باید پس از تست واحد و قبل از تست سیستم انجام شود |
ارزانتعمیر و نگهداری | نگهداری گران قیمت |
از مشخصات ماژول شروع می شود | از مشخصات رابط شروع می شود |
واحد آزمایش دامنه باریکی دارد زیرا فقط بررسی می کند که آیا هر قطعه کوچک کد کاری را که در نظر گرفته شده است انجام می دهد یا خیر. | از آنجایی که کل برنامه را پوشش می دهد دامنه وسیع تری دارد |
نتیجه آزمایش واحد، مشاهده دقیق کد است | نتیجه یکپارچه سازی آزمایش نمایان بودن جزئیات ساختار یکپارچه سازی است |
فقط مسائل مربوط به عملکرد ماژول های جداگانه را کشف کنید. خطاهای یکپارچه سازی یا مشکلات کل سیستم را آشکار نمی کند. | اشکالات زمانی که ماژول های مختلف با یکدیگر تعامل می کنند و سیستم کلی را تشکیل می دهند، کشف کنید |
تست عملکردی
یک تکنیک تست جعبه سیاه، که در آن عملکرد برنامه برای تولید خروجی مورد نظر در ارائه یک ورودی خاص آزمایش میشود، "تست عملکردی" نامیده میشود.
در فرآیندهای تست نرمافزار ما، ما این کار را با نوشتن موارد آزمایشی مطابق با الزامات و سناریوها انجام دهید. برای هر عملکردی، تعداد موارد تست نوشته شده میتواند از یک تا چند مورد متفاوت باشد.
نتیجهگیری
همه این سه نوع تست با هم مرتبط هستند.
برای رسیدن به پوشش کامل، آن برای اطمینان از اینکه "واحدها" باید تست های واحد برای مسیرها/خطوط کد، تست های عملکردی و یکپارچه سازی داشته باشد.به طور منسجمی با هم کار کنید.
امیدواریم این مقاله به شما ایده روشنی در مورد تست واحد، یکپارچه سازی و عملکردی همراه با تفاوت های آنها داده باشد، اگرچه این اشکال تست بسیار بیشتر است!