تست واحد (Unit Test)
منظور از تست واحد، تستهایی هستند كه در سطح مولفههای پیاده سازی شده توسط تولید كنندگان سیستم جهت بررسی عملكرد و كارایی آن مولفهها صورت میگیرد. در زبانهای شیگرایی همچون جاوا، منظور از مولفه همان كلاسها هستند.
در SDLC ، STLC و V Model؛ تست واحد اولین سطح تست است که قبل از تست یکپارچه سازی انجام میشود. تست واحد تکنیکی برای آزمایش WhiteBox است که معمولاً توسط توسعه دهنده انجام می شود. اگرچه در دنیای عملی، به دلیل کمبود زمان یا عدم تمایل توسعه دهندگان به آزمایشات سطوح برنامه، گاها مهندسان QA نیز تست واحد را انجام میدهند.
چرا تست واحد باید انجام پذیرد؟
توسعه دهندگان نرم افزار گاهی اوقات سعی در صرفه جویی در وقت میکنند و تست واحد را در سطح حداقل انجام می دهند. این در حالیست که تست واحد ناکافی، منجر به هزینه بالای رفع نقص در هنگام تست سیستم ، یکپارچه سازی و حتی تست پذیرش بعد از ساخت برنامه میشود. اگر تست واحد مناسب در اوایل فرایند توسعه انجام شود، نهایتا در وقت و هزینه صرفه جویی خواهد شد.
دلایل اصلی انجام تست واحد در مهندسی نرم افزار عبارت است از:
تست واحد به رفع اشکالات در اوایل چرخه توسعه و صرفه جویی در هزینه کمک می کند.
تست واحد به توسعه دهندگان کمک می کند تا پایه کد تست را درک کنند و این باعث می شود که بتوانند به سرعت تغییرات را انجام دهند.
تست های واحد خوب، به عنوان مستندات پروژه عمل می کنند
تست های واحد به استفاده مجدد از کد کمک می کند. هم کد و هم تست های خود را به پروژه جدید منتقل کنید. بعد از تغییرات کد، مجددا تست های واحد را اجرا نمایید.
چگونه تست واحد انجام دهیم?
به منظور انجام تست واحد، توسعه دهندگان بخشی از کد (قطعه کد) را برای آزمایش عملکرد خاص در نرم افزار میسنجند. توسعه دهندگان میتوانند این قطعه کدها را برای آزمایش دقیقتر جدا کنند که این امر وابستگی های غیرضروری بین عملکرد مورد آزمایش و سایر واحدها را نشان می دهد تا وابستگی ها از بین بروند. توسعه دهندگان عموماً از یک چارچوب برای توسعه موارد آزمایشی خودکار برای تست واحد استفاده می کنند. مثلا در زبان جاوا از JUnit بعنوان چارچوب تست واحد استفاده میشود. تست واحد بر دو نوع است:
دستی
خودکار
تست واحد معمولاً خودکار است اما هنوز هم ممکن است به صورت دستی انجام شود. یک رویکرد دستی برای تست واحد ممکن است از یک سند گام به گام آموزشی استفاده کند.
رویکرد خودکار تست واحد:
یک توسعه دهنده برای آزمایش، فقط عملکرد بخشی از کد را در برنامه می نویسد. آنها بعداً اظهار نظر کرده و سرانجام هنگام اجرای برنامه ، کد آزمون را حذف می کنند.
یک توسعه دهنده میتواند عملکرد را برای تست دقیق تر آن جدا کند. این یک روش دقیق تر تست واحد است که شامل کپی و چسباندن کد در محیط تست خود از محیط اصلی آن است. جداسازی کد به کشف وابستگی های غیرضروری بین کد مورد آزمایش و سایر واحدها یا فضای داده در محصول کمک می کند. سپس می توان این وابستگی ها را از بین برد.
یک کدنویس به طور کلی از یک UnitTest Framework برای توسعه موارد آزمایشی خودکار استفاده می کند. با استفاده از یک چارچوب خودکارسازی، توسعه دهنده برای بررسی درستی کد، معیارها را برای تست کدنویسی میکند. در حین اجرای موارد آزمایشی، چارچوب موارد ناموفق را ثبت میکند. بسیاری از چارچوبها به طور خودکار این موارد آزمایشی ناموفق را علامتگذاری و گزارش میکنند. بسته به شدت خرابی، چارچوب ممکن است آزمایش بعدی را متوقف سازد.
مزیت های تست واحد
توسعه دهندگانی که می خواهند بدانند چه عملکردی توسط یک واحد ارائه میشود و اینکه چگونه می توان از آن استفاده نمود، میتوانند با استفاده از تستهای واحد، درک درستی از API مربوطه پیدا کنند.
تست واحد تست واحد به برنامه نویس امکان میدهد که کد را دیرتر بازسازی نمایند و اطمینان حاصل کنند که ماژولهای برنامه همچنان به درستی کار می کند (تست رگرسیون). روش کار این است که موارد آزمایشی را برای همه توابع و روشها بنویسیم تا هر زمان که تغییری باعث ایجاد خطا شد، به سرعت شناسایی و برطرف گردد.
با توجه به ماهیت ماژولار تست واحد، میتوانیم قسمتهایی از پروژه را بدون انتظار برای تکمیل سایر بخشها آزمایش کنیم.
معایب تست واحد
از تست واحد نمی توان انتظار داشت که هر خطایی را در یک برنامه ارائه کند. ارزیابی همه مسیرهای اجرایی برنامه، حتی در پیش پا افتاده ترین برنامه ها، امکان پذیر نیست.
تست واحد براساس ماهیت خود بر روی یک واحد کد متمرکز است. از این رو نمی تواند خطاهای یکپارچه سازی یا خطاهای سطح گسترده سیستم را پوشش دهد.
توصیه می شود از تست واحد همراه با سایر فعالیت های آزمایش استفاده شود.
شرکت مهندس پیشگان آزمون افزار یاس خدمات زیر را در حوزه تست واحد ارائه می دهد:
آموزش مفاهیم و چارچوب های تست واحد
ارائه مشاوره در حوزهتست واحد و تست API
ارائه راهکارهای مکمل تست واحد، همچون روشهای تحلیل و مرور کد
تهیه و آموزش ابزارهای تست واحد همچون JTest برای Java و dotTest برای.NET
نویسنده : شرکت مهندس پیشگان آزمون افزار یاس