آموزش تست یکپارچه سازی Integration Testing در ASP.NET Core
آموزش تست یکپارچه سازی Integration Testing در ASP.NET Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی بهترین نکات مربوط به تست یکپارچه سازی (Integration Testing) در ASP.NET Core است که با نام اصلی Integration Testing ASP.NET Core Applications - Best Practices از شرکت Pluralsight منتشر شده است.
فریم ورک ASP.NET Core چیست؟
فریم ورک ASP.NET Core یک فریم ورک برنامهنویسی متنباز و چند پلتفرمی برای توسعه برنامههای وب است که توسط شرکت مایکروسافت توسعه داده شده است. این فریم ورک امکان توسعه برنامههای وب پویا، امن و قابل مقیاسپذیر را با استفاده از زبانهای برنامهنویسی مختلف مانند سی شارپ و ویژوال بیسیک را فراهم میکند.

ASP.NET Core توانایی اجرای برنامههای وب را بر روی پلتفرمهای مختلف از جمله ویندوز، لینوکس و macOS به کمک سرورهای وب مختلف مانند IIS و Apache و Kestrel را داراست. این فریم ورک به توسعهدهندگان اجازه میدهد که برنامههای وب خود را به راحتی و با عملکرد بهینه ایجاد کنند و در کلیدیترین بخشهای توسعه برنامههای وب از جمله مسائل امنیتی و مدیریت منابع بهبود یابند.
تست یکپارچه سازی (Integration Testing) چیست؟
تست یکپارچه سازی و یا Integration Testing که گاهاً یکپارچه سازی و تست نامیده می شود و به اختصار I&T نامیده می شود. یک مرحله در تست کردن نرم افزار است که در آن module های نرم افزار به صورت تک با هم ترکیب می شوند و به صورت گروهی تست می شوند. تست یکپارچه سازی برای ارزیابی انطباق یک سیستم و یا اجزای تشکیل دهنده آن با Functionality های مشخص شده انجام می شود.
تست یکپارچه سازی بعد از تست واحد و قبل از تست اعتبار سنجی رخ می دهد. تست یکپارچه سازی module های ورودی خود را که Unit Test شده اند در گروه های بزرگتر گروه بندی می کند. تست های تعریف شده در یک برنامه تست یکپارچه را روی آن گروه ها اعمال می کند و در نهایت به عنوان خروجی، سیستم یکپارچه شده را به system testing تحویل می دهد.
سرفصل آموزش تست یکپارچه سازی Integration Testing در ASP.NET Core
فصل اول: مقدمه دوره آموزشی- مقدمه دوره آموزشی
- مقدمه دوره آموزشی
- اجرا کردن برنامه این دوره آموزشی
- معرفی Integration Test ها
- پیاده سازی Integration Test ها در ASP.NET Core
- ایجاد کردن اولین پروژه Integration Test
- نوشتن اولین Integration Test
- اجرای Integration Test ها
- WebApplicationFactory چیست؟
- جمع بندی
- مقدمه
- تست کردن Endpoint های مربوط به GET Request ها
- بهبود Assertion ها برای محتوی JSON
- ایجاد کردن و پیکربندی کردن Test client
- ساده سازی Response Assertion ها
- تست کردن Response Header ها
- جمع بندی
- مقدمه
- معرفی Test Driven development
- استفاده کردن از Test Driven development
- تعریف کردن Test boundary ها و فیک کردن dependancy ها
- جایگزین کردن سرویس ها در Test client
- جمع بندی
- مقدمه
- ایجاد کردن یک WebApplicationFactory سفارشی
- تست کردن Model Binding و Input validation برای POST request ها
- تست کردن چندین شرط با استفاده از theory ها در xUnit
- تست کردن Response های مربوط به POST request ها
- تست کردن Success Responce ها
- تست کردن Side-effect ها
- تست کردن Middleware
- تست کردن Exception ها
- جمع بندی
- مقدمه
- مقایسه UI Application ها و API ها
- بررسی پروژه Integration Test
- تست کردن وجود یک پیج مورد نظر
- تست کردن محتوی HTML با AngleSharp
- تست کردن محتوی Dynamic page
- جمع بندی
- مقدمه
- پیکربندی کردن Redict ها به Authentication Test
- تست کردن Authorization requirement ها
- پیکر بندی کردن Entity Framework برای In memory Testing
- تست کردن صفحات و Controller هایی که از Etinty Framework استفاده می کنند.
- Seed کردن Database برای تست ها
- ریفکتوری کردن Test code برای افزایش Reusability
- جلوگیری کردن از تست های شکننده
- تست کردن POST request ها به همراه هندل کردن Antiforgery Token ها
- جمع بندی
طراحی تستهای یکپارچهسازی برای بررسی رفتار واقعی ASP.NET Core
در برنامههای ASP.NET Core، بررسی یک متد یا کلاس بهتنهایی همیشه نشان نمیدهد که اجزای مختلف برنامه در کنار هم درست کار میکنند. تست یکپارچهسازی برای ارزیابی تعامل میان بخشهایی مانند مسیریابی، Middlewareها، کنترلکنندهها و سایر اجزای برنامه به کار میرود. این نوع تست میتواند مشخص کند آیا درخواست ورودی از مسیر مورد انتظار عبور میکند و آیا پاسخ نهایی با قرارداد برنامه سازگار است. تمرکز بر رفتار ترکیبی اجزا، به شناسایی مشکلاتی کمک میکند که ممکن است در تستهای محدود به یک واحد از کد آشکار نشوند.
هنگام طراحی تست یکپارچهسازی، باید مشخص کنید کدام رفتار برنامه نیاز به بررسی دارد و چه شرایطی برای اجرای قابلاعتماد تست لازم است. برای مثال، یک تست میتواند ارسال درخواست به یک Endpoint و بررسی کد وضعیت یا محتوای پاسخ را هدف قرار دهد. چنین بررسیهایی به شما کمک میکنند تغییرات در کد برنامه را ارزیابی کنید و متوجه شوید آیا رفتار مورد انتظار همچنان برقرار است یا نه. این رویکرد در پروژههایی که Endpointهای متعدد و وابستگیهای مختلف دارند اهمیت بیشتری پیدا میکند، زیرا تعامل اجزا بخشی از رفتار واقعی سیستم را تشکیل میدهد.
تشخیص خطاهای تعامل میان اجزای برنامه با تستهای تکرارپذیر
یکی از چالشهای تست یکپارچهسازی این است که نتیجه آزمایش باید قابلاعتماد و تکرارپذیر باشد. اگر تست به وضعیت باقیمانده از اجرای قبلی یا دادههای نامشخص وابسته باشد، ممکن است در یک اجرا موفق و در اجرای دیگر ناموفق شود. طراحی مناسب سناریوهای تست به شما کمک میکند شرایط شروع، درخواست مورد بررسی و نتیجه مورد انتظار را مشخص کنید. این دقت باعث میشود هنگام بروز خطا، بتوانید تشخیص دهید مشکل از منطق Endpoint، نحوه تعامل اجزا یا شرایط آمادهسازی تست ناشی شده است.
برای ارزیابی یک اپلیکیشن وب، صرفاً بررسی اینکه سرور اجرا میشود کافی نیست؛ لازم است رفتار مسیرهای مهم برنامه نیز تحت شرایط تعریفشده آزمایش شود. تستهای یکپارچهسازی میتوانند درخواستهای ورودی و پاسخهای خروجی را بررسی کنند و اطمینان بیشتری درباره سازگاری اجزای درگیر فراهم آورند. در فرایند توسعه، این تستها بهویژه هنگام تغییر Middlewareها، تنظیمات مسیریابی یا منطق پاسخدهی ارزشمندند، زیرا تغییر یک بخش ممکن است بر رفتار بخش دیگری اثر بگذارد. استفاده از سناریوهای مشخص و قابلتکرار، روند بررسی رگرسیونها را منظمتر میکند و تشخیص تغییرات ناخواسته را آسانتر میسازد.

