آموزش تست نرم افزار در ASP.NET Core MVC
آموزش تست نرم افزار در ASP.NET Core MVC یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی مباحث بنیادی تست نرم افزار در ASP.NET Core MVC است که با نام اصلی ASP.NET Core MVC Testing Fundamentals از شرکت Pluralsight منتشر شده است.
تست نرم افزار (Testing) چیست؟
تست کردن فرآیند ارزیابی یک سیستم یا اجزای آن با قصد پیدا کردن آن است که آیا نیازمندی های مشخص شده توسط آن سیستم برآورده می شود یا خیر. به بیان ساده، تست کردن فرآیند اجرای یک سیستم برای شناسایی هر شکاف، خطا یا نیازمندی های از دست رفته در مقایسه با نیازمندی های واقعی است.

بر اساس استاندارد ANSI / IEEE 1059، تست کردن را می توان به صورت زیر تعریف کرد: فرآیند تجزیه و تحلیل یک نرم افزار با هدف شناسایی تفاوت های احتمالی بین شرایط موجود و شرایط مورد الزام (به عبارت دیگر، نقص ها، خطاها، اشکالات) و در اصل ارزیابی ویژگی های نرم افزار است.
ASP.NET Core چیست؟
ASP.NET Core 1.0، که پیشتر با نام ASP.NET 5 معرفی شده بود، بازنویسی کامل ASP.NET است که با ایدهی کاملا ماژولار بودن، تهیه شده است و از طریق آن، قابلیت به روز رسانی منظم و توزیع آسان از طریق NuGet، میسر خواهد شد. به علاوه در آن، بسیاری از الگوهای برنامه نویسی شیءگرا مانند Dependency Injection، به صورت built-in و از ابتدا پشتیبانی میشوند. ASP.NET Core 1.0 مدل برنامه نویسی ASP.NET MVC و Web API را به صورت یکپارچه ارائه میدهد و دیگر خبری از ارائهی مجزای این ها نخواهد بود و دقیقا بر مبنای مفاهیم برنامه نویسی این دو بنا شده است.

محصول پیشرفته دیگری با عنوان آموزش معماری نرم افزارهای ASP.NET Core MVC برای تست پذیری نیز بر روی وبسایت منتشر شده است که می توانید از آن استفاده کنید.
تست واحد در ASP.NET Core MVC با xUnit.NET
تست واحد یا Unit Testing روشی برای بررسی رفتار بخشهای کوچک و مستقل برنامه است. در برنامههای ASP.NET Core MVC، این بخشها میتوانند شامل کلاسهای Model، منطق اعتبارسنجی یا اجزایی باشند که مسئول انجام وظایف مشخصی هستند. نوشتن تست برای این قسمتها کمک میکند رفتار مورد انتظار برنامه بهصورت قابلتکرار بررسی شود و تغییرات بعدی، احتمال ایجاد خطا در بخشهای قبلی را کاهش دهند. تستهای واحد همچنین امکان شناسایی سریعتر مشکلات را فراهم میکنند، زیرا محدوده بررسی آنها معمولاً به یک بخش مشخص از کد محدود است.
xUnit.NET یکی از فریمورکهای مورد استفاده برای نوشتن و اجرای تست در پروژههای .NET است. با استفاده از آن میتوان شرایط مختلف را تعریف کرد و نتیجه اجرای کد را با خروجی مورد انتظار مقایسه کرد. در این دوره، تست کردن کلاسهای Model با xUnit.NET بررسی میشود تا با اصول اولیه ارزیابی رفتار این اجزا آشنا شوید. این مهارت برای توسعهدهندگانی که میخواهند کیفیت کد خود را بهتر کنترل کنند و تغییرات برنامه را با اطمینان بیشتری انجام دهند، اهمیت زیادی دارد.
استفاده از Mock در تست نرمافزارهای MVC
در بسیاری از برنامههای ASP.NET Core MVC، یک کلاس برای انجام وظیفه خود به اجزای دیگری وابسته است. برای مثال، یک Controller ممکن است برای دریافت اطلاعات یا ذخیره دادهها از یک سرویس استفاده کند. هنگام تست چنین کلاسی، اجرای واقعی تمام وابستگیها همیشه ضروری نیست و گاهی کنترل رفتار آنها میتواند آزمایش را سادهتر کند. Mock Object ها نمونههایی شبیهسازیشده از وابستگیها هستند که امکان تعیین رفتار مورد انتظار و بررسی نحوه تعامل کد با آنها را فراهم میکنند.
استفاده از Mock در تست به شما کمک میکند یک بخش از برنامه را بدون نیاز به اجرای واقعی تمام اجزای وابسته بررسی کنید. برای نمونه، میتوان رفتار یک سرویس را طوری تنظیم کرد که داده مشخصی برگرداند یا نتیجهای معین ایجاد کند و سپس واکنش Controller را سنجید. در این آموزش، ایجاد و استفاده از Mock ها بهجای Dependency ها بررسی میشود. یادگیری این روش به درک بهتر Dependency ها و جداسازی اجزای برنامه کمک میکند و زمینه مناسبی برای نوشتن تستهای قابلکنترلتر در پروژههای MVC فراهم میسازد.
Integration Testing در ASP.NET Core MVC
Integration Testing یا تست یکپارچگی برای بررسی همکاری میان چند جزء نرمافزار به کار میرود. برخلاف تست واحد که معمولاً روی یک بخش مستقل تمرکز دارد، تست یکپارچگی رفتار اجزای مرتبط را در کنار یکدیگر ارزیابی میکند. در برنامههای ASP.NET Core MVC، این نوع تست میتواند برای بررسی تعامل میان بخشهای مختلف برنامه و اطمینان از عملکرد صحیح مسیرهای ارتباطی میان آنها استفاده شود. چنین تستهایی به شناسایی مشکلاتی کمک میکنند که ممکن است هنگام بررسی جداگانه کلاسها و اجزای نرمافزار آشکار نشوند.
در این دوره، نوشتن Integration Test برای ASP.NET Core MVC در کنار مباحث تست واحد و Mock بررسی میشود. آشنایی با این روش به شما کمک میکند تفاوت میان آزمایش یک کلاس و بررسی همکاری چند بخش از برنامه را بهتر درک کنید. تست یکپارچگی میتواند رفتار برنامه را در شرایطی نزدیکتر به نحوه تعامل اجزای واقعی ارزیابی کند و مکمل مناسبی برای تستهای واحد باشد. درک جایگاه هر دو نوع تست به توسعهدهندگان کمک میکند راهبرد متناسبتری برای بررسی کیفیت و صحت عملکرد برنامههای MVC انتخاب کنند.
تست خودکار رابط کاربری با Selenium
تست خودکار رابط کاربری برای بررسی رفتار برنامه از دید کاربر به کار میرود. در این روش، بهجای بررسی صرف کلاسها یا منطق داخلی برنامه، تعاملاتی مانند باز کردن صفحه، وارد کردن اطلاعات و انجام عملیات مختلف شبیهسازی میشوند. Selenium ابزاری شناختهشده برای خودکارسازی تعامل با مرورگرهای وب است و میتواند در اجرای سناریوهای آزمایشی رابط کاربری مورد استفاده قرار گیرد. این رویکرد به تیمهای توسعه کمک میکند رفتار قابل مشاهده برنامه را بهصورت تکرارپذیر بررسی کنند و مشکلات احتمالی در جریان استفاده از آن را شناسایی کنند.
در آموزش ASP.NET Core MVC Testing Fundamentals، پیادهسازی Automated Functional UI Testing با استفاده از Selenium یکی از موضوعات اصلی است. این بخش در کنار تست کلاسهای Model، استفاده از Mock و تست یکپارچگی، دید جامعتری از روشهای آزمایش برنامههای MVC ایجاد میکند. آشنایی با Selenium به شما کمک میکند جایگاه تستهای مبتنی بر مرورگر را در فرایند بررسی نرمافزار بشناسید و تفاوت آنها را با تستهای سطح پایینتر درک کنید. این آموزش برای توسعهدهندگانی مناسب است که میخواهند مهارت خود را در تست برنامههای ASP.NET Core MVC گسترش دهند.
سرفصل مطالب آموزش ویدئویی تست نرم افزار در ASP.NET Core MVC
فصل اول: معرفی دوره آموزشی- معرفی دوره آموزشی
- مقدمه
- مزایای کیفیت نرم افزار
- چرا باید از تست خودکار و یا Automated Testing استفاده کنیم
- بررسی Automated Testing کاربرد مناسب
- ایجاد کردن یک سیستم تست متعادل
- بررسی هرم تست
- بررسی مطالب دوره آموزشی
- معرفی برنامه این دوره آموزشی
- جمع بندی
- مقدمه
- بررسی کلی فریم ورک xUnit.NET
- بررسی تغییرات برنامه
- اضافه کردن کلاس FrequentFlyerNumberValidator
- ایجاد کردن اولین تست
- اضافه کردن تست های دیگر برای کلاس FrequentFlyerNumberValidator
- اضافه کردن کلاس CreditCardApplicationEvaluator
- تست کردن کلاس CreditCardApplicationEvaluator
- اجرا کردن تست ها با ابزار Command Line
- جمع بندی
- مقدمه
- تفکیک کردن قسمتهای مختلف برنامه با استفاده از Mock Object ها
- انجام عملیات Mocking در .NET Core با استفاده از Moq
- اضافه کردن یک وابستگی و یا Dependency به CreditCardApplicationEvaluator
- تنظیم کردن تست های مربوط به CreditCardApplicationEvaluator
- نوشتن کد مربوط به CreditCardApplicationEvaluator
- اضافه کردن Mock Dependency ها با استفاده از Moq
- ریفکتور کردن تست های موجود برای استفاده از Mock Object ها
- جمع بندی
- مقدمه
- بررسی کلی مکانیزم تست کردن Controller ها
- نوشتن اولین تست برای Controller
- تست کردن Invalid Model State
- استفاده از Mock Object ها در تست های نوشته شده برای Controller ها
- تست کردن مقادیر Return شده از Action Method ها
- تست کردن API Value Controller ها
- جمع بندی
- مقدمه
- نوشتن Integration Test ها در ASP.NET Core MVC با استفاده از TestServer
- ایجاد کردن یک پروژه برای نوشتن Integration Test در ASP.NET Core MVC
- تست کردن عملیات HTTP GET
- استفاده کردن از In-memory Server از Entity Framework Core
- تست کردن عملیات HTTP POST
- کار کردن با Anti Forgery Token ها در Integration Test ها
- ریفکتور کردن تست برای استفاده از TestServer Class Fixture
- تست کردن API Value Controller ها
- جمع بندی
- مقدمه
- بررسی Selenium
- شروع به کار
- نوشتن اولین تست
- تست کردن Validation Error ها
- تست کردن جریان برنامه
- بهبود شرایط کدهای مربوط به تست ها با استفاده از Page Object Model
- جمع بندی

