
آموزش تست واحد (Unit Testing) در دات نت (NET.)
آموزش تست واحد (Unit Testing) در دات نت (NET.) یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی انجام تست واحد (Unit Testing) در دات نت و ویژوال استودیو 2019 است که با نام اصلی Testing .NET Code in Visual Studio 2019 از شرکت Pluralsight منتشر شده است.
تست واحد (Unit Testing) چیست؟
تست واحد یا همان Unit Testing، یکی از اصولیترین روشهای تست نرمافزاری است که در فرآیند توسعه نرمافزار مورد استفاده قرار میگیرد. در این روش، قطعات کوچک کد، معمولاً توابع، متدها و کلاسها بهطور مستقل و جداگانه تست میشوند. هدف از تست واحد، تأیید صحت کارکرد و قابلیت اطمینان بودن هر قطعه کد است.

با استفاده از تست واحد، میتوان اشکالات و خطاهای احتمالی را در مراحل اولیه فرآیند توسعه کشف کرده و اطمینان حاصل کرد که تغییرات جدید به بخشهای دیگر نرمافزار تأثیر منفی نمیگذارند. همچنین، این روش به توسعهدهندگان کمک میکند تا کدهای ماژولار و قابل نگهداریتری ایجاد کنند و در نتیجه به بهبود کیفیت و عملکرد کلی نرمافزار کمک میکند. تست واحد یکی از مفاهیم اصولی توسعه نرمافزار Agile و Test-Driven Development (TDD) میباشد و از اهمیت بالایی برخوردار است.
مزایای تست نرم افزار
یکی از مهمترین مزیتهای تست نرمافزار، اطمینان حاصل کردن از کارکرد صحیح نرمافزار و عدم وجود خطاهای حیاتی است. این مزیت به توسعهدهندگان اجازه میدهد که از مسائل پیچیدهتری مانند بهبود کیفیت نرمافزار، افزایش قابلیت اطمینان و کاهش هزینههای ناشی از خطاها، بهرهمند شوند. همچنین، تست نرمافزار به محیطهای پویا و متغیر نرمافزار اجازه میدهد تا در صورت وجود تغییرات و بهروزرسانیها، به درستی عمل کند و از پایداری و کارایی بالایی برخوردار باشند. با اجرای تستها در مراحل زودهنگام توسعه، احتمال کشف و رفع اشکالات بهطور موثر و کارآمد افزایش مییابد که بهصورت کلی منجر به کاهش هزینهها و زمان توسعه میشود. علاوه بر این، تست نرمافزار موجب افزایش اعتماد مشتریان به نرمافزار میشود و رضایت آنها را افزایش میدهد.

نوشتن Unit Test در Visual Studio با Moq و سناریوهای واقعی
آموزش Testing .NET Code in Visual Studio 2019 تست واحد را در قالب سناریوی Wired Brain Coffee بررسی میکند؛ نمونهای که امکان میدهد آزمونها را در ارتباط با یک مسئله مشخص دنبال کنید. پس از ایجاد پروژه تست، با نوشتن و اجرای Unit Testها آشنا میشوید و یاد میگیرید چگونه رفتار مورد انتظار برنامه را بررسی کنید. در بخشی از آموزش، وضعیت موجودی فنجانهای قهوه و عبور نکردن آن از یک مقدار مشخص بهعنوان سناریوی آزمایش مطرح میشود. چنین مثالی نشان میدهد چگونه میتوان قواعد کسبوکار را به شرطهای قابل بررسی تبدیل کرد و نتیجه اجرای آنها را سنجید.
یکی از ابزارهای مورد بررسی Moq است که برای ساخت بدلهای آزمایشی از وابستگیها استفاده میشود. این روش کمک میکند هنگام آزمودن یک بخش از کد، رفتار وابستگیهای آن را کنترل کنید و آزمون را تا حد امکان مستقل از سرویسهای واقعی نگه دارید. آموزش همچنین دسترسی به Internal Memberها برای تست را بررسی میکند؛ موضوعی که در آزمایش بخشهایی از کد با سطح دسترسی محدود اهمیت پیدا میکند. با کنار هم قرار گرفتن این مباحث، میتوانید ساختار یک پروژه تست را بهتر بشناسید و برای بررسی رفتار کلاسها و منطق برنامه، آزمونهایی هدفمندتر بنویسید.
مقایسه MSTest، NUnit و xUnit و بررسی Code Coverage
در پروژههای .NET میتوان از چارچوبهای مختلفی برای نوشتن تست استفاده کرد و انتخاب میان آنها به نیازهای پروژه و شیوه کار تیم بستگی دارد. این آموزش MSTest، NUnit و xUnit را در کنار یکدیگر مطرح میکند و به این پرسش میپردازد که کدام Test Framework برای سناریوی موردنظر مناسبتر است. بررسی عملی Test Adapter مربوط به MSTest نیز با نحوه شناسایی و اجرای تستها در محیط توسعه ارتباط دارد. همچنین اجرای آزمونها با میانبرها و استفاده از CodeLens در Visual Studio نشان میدهد چگونه میتوان فرایند اجرای تست را در جریان معمول توسعه کد در دسترس نگه داشت.
بخش Data Driven Test به نوشتن آزمونهایی میپردازد که با دادههای ورودی متفاوت اجرا میشوند. این رویکرد برای بررسی یک منطق واحد در چند حالت مختلف کاربرد دارد و نیاز به تکرار چندین تست مشابه را کاهش میدهد. در ادامه، تجزیه و تحلیل Code Coverage و استفاده از Live Unit Testing بررسی میشوند. Code Coverage اطلاعاتی درباره بخشهایی از کد که هنگام اجرای تستها پوشش داده شدهاند ارائه میکند، در حالی که Live Unit Testing بازخورد اجرای آزمونها را هنگام تغییر کد در محیط توسعه فراهم میسازد. این قابلیتها در کنار هم به شناسایی بخشهای کمتر آزمودهشده و مشاهده سریعتر اثر تغییرات کمک میکنند.
سرفصل مطالب آموزش ویدیویی تست واحد (Unit Testing) در دات نت (NET.)
فصل اول: مقدمه
- مقدمه دوره آموزشی
فصل دوم: ایجاد کردن اولین پروژه تست
- مقدمه
- بررسی سناریوی Wired Brain Coffee
- بررسی کردن کد برنامه
- ایجاد کردن یک پروژه تست
- ایجاد کردن یک کلاس OrderCreationServiceTests
- بررسی مباحث دوره آموزشی
فصل سوم: نوشتن و اجرا کردن Unit Test ها
- مقدمه
- پیاده سازی کردن اولین روش Test Method
- استفاده کردن از Moq برای Fake کردن Dependencie ها
- راه اندازی کردن و Initialize کردن تست ها
- چک کردن اینکه آیا Stock مربوط به Coffee Cup ها از یک مقدار خاص تجاوز کرده باشد
- انجام Assertion بر روی Exception ها
- ابزار مدیریت سفارش فنجان قهوه را راه اندازی کنید
- اجرا کردن ابزار Coffee Cup Order Admin Tool
- استفاده کردن از ابزار .NET Core و .NET Framework
- ایجاد کردن و استفاده کردن از Playlist ها
- اجرا کردن تست ها با Shotcut ها و CodeLens
- جمع بندی
فصل چهارم: پیاده سازی کردن Data Driven Test ها
- مقدمه
- تست کردن و محاسبه کردن Discount Percentage
- یک تست مبتنی بر داده (Data Driven Test)
- تست کردن Discount برای Premium Customer ها
- دسترسی پیدا کردن و تست کردن Internal Member ها
- اجرا کردن ابزار Coffee Cup Order Admin Tool
- جمع بندی
فصل پنجم: تست کردن با MSTest، NUnit یا xUnit
- مقدمه
- از کدام یک از Test Framework باید استفاده کنید؟
- درک هرچه بهتر Test Adapter ها
- بررسی عملی Test Adapter مربوط به MSTest
- نوشتن تست با NUnit
- نوشتن تست ها با xUnit
- جمع بندی
فصل ششم: تجزیه و تحلیل کردن Code Coverage
- مقدمه
- اجرا کردن تجزیه و تحلیل پوشش تست (Code Coverage Analysis)
- بهبود دادن Code Coverage کد با تست های بیشتر
- خروج گرفتن (Export) و ورودی گرفتن (Import) از نتایج Code Coverage Results
- لحاظ نکردن کد در Code Coverage Analysis
- پیکربندی کردن Code Coverage Analysis با استفاده کردن از فایل Runsettings
- جمع بندی
فصل هفتم: استفاده کردن از Live Unit Testing
- مقدمه
- بررسی کردن Live Unit Testing
- نوشتن تست ها با Live Unit Testing
- لحاظ نکردن تست ها در Live Unit Testing
- لحاظ نکردن تست ها به روش برنامه نویسی
- پیکربندی Live Unit Testing
- جمع بندی







