
آموزش تست تایید (Approval Testing) در دات نت
آموزش ویدئویی تست تایید (Approval Testing) در دات نت یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی انجام تست تایید و یا Approval Testing در دات نت است که با نام اصلی Approval Testing in .NET از شرکت Pluralsight منتشر شده است.
تست تایید یا Approval Testing
تست تایید یا Approval Testing یک تست نرم افزار است که تمرکز خود را بر روی ثبت کردن و ذخیره نمودن رفتار نرم افزار شما دارد. پس از انجام این کار تغییراتی که در رفتار نرم افزار رخ می دهند می توانند در دسترس تیم توسعه نرم افزار قرار بگیرند تا آنها نیز بر اساس نیازمندی ها واکنش مناسبی را لحاظ نماید. تست تایید و یا Approval Testing می تواند در روش تست واحد و یا unit testing و همچنین تست عملکرد یا functional testing مورد استفاده قرار می گیرد. اساس تست تایید و یا Approval Testing بسیار ساده است. به بیان ساده شما تست هایتان را تعریف می کنید و یک نتیجه مرجع و یا reference result که می تواند نمایان گر ایده دلخواه شما باشد را نیز تنظیم می نماییم. پس از اجرا کردن تست و استفاده از ابزار های مختلف تمامی تفاوت های بین reference result و نتایح واقعی و یا actual result ها نشان داده خواهند شد. پس از انجام این کار شما می توانید در رابطه با تفاوت رخ داده تصمیم گیری کنید.
به عبارت دیگر می توانید تفاوت را تعریف کرده و یا اصطلاحا approve کنید. چرا که چیزی را در کدتان تغییر دادید می توانید تفاوت را ignore کرده یعنی از آن چشم پوشی نمایید و یا نهایتا می توانید تست را به عنوان یک تست شکست خورده یا fail شده لحاظ کنید. یکی از کاربرد های تست تایید و یا Approval Testing حل کردن چالش هایی در تست نرم افزار است که در آن خروجی یک قابلیت بسیار پیچیده تر از یک عدد ساده است. یکی دیگر از کاربرد های تست تایید و یا Approval Testing در کار کردن با کد های موروثی یا legacy code ها است که برنامه نویس فعلی وظیفه نگهدارس آن را به عهده دارد. به عبارت دیگر با استفاده از تست تایید می توان مطمئن شد که یک تغییر در یک module تک عوارض جانبی نامطلوبی را در قسمت های دیگر برنامه منجر نمی شود. دیگر نام های تست تایید و یا Approval Testing شامل Golden Master Testing و یا Characterisation Testing و یا حتی Snapshot Testing است. یکی از مشکلات استفاده کردن از Approval Testing این است که نتایح تست می بایست توسط یک انسان بررسی شوند و همین موضوع باعث می شود تا Approval Testing مناسب انجام روش هایی از قبیل continuous testing و یا delivery نباشد. در این روش ها برنامه می بایست به صورت دوره ای تست و پس از آن build و نهایتا deploy شود. البته می توان با استفاده از ابزار هایی عملیات approve و ignore کردن را خودکار کرد.
مزایای Approval Testing در توسعه نرمافزارهای دات نت
در فرایند توسعه نرمافزار، تغییر دادن کدها ممکن است باعث ایجاد تغییرات ناخواسته در خروجی برنامه شود؛ تغییراتی که همیشه با بررسی دستی قابل شناسایی نیستند. Approval Testing روشی برای ثبت خروجی مورد انتظار و مقایسه آن با نتایج اجرای بعدی است. این رویکرد به توسعهدهندگان دات نت کمک میکند تغییرات رفتاری برنامه را بهتر تشخیص دهند و پیش از انتشار نسخههای جدید، درباره درست بودن تفاوتهای مشاهدهشده تصمیم بگیرند. به همین دلیل، این روش میتواند مکمل مناسبی برای سایر شیوههای تست نرمافزار باشد.

یکی از مزیتهای این روش، امکان بررسی خروجیهایی است که ساختار پیچیدهای دارند یا ارزیابی دستی آنها دشوار است. به جای نوشتن تعداد زیادی assertion برای تکتک جزئیات یک خروجی، میتوان نتیجه را ثبت کرد و در اجراهای بعدی با نسخه تأییدشده مقایسه کرد. این قابلیت در پروژههایی که خروجی برنامه بهتدریج تغییر میکند، به توسعهدهندگان کمک میکند تفاوتهای مهم را از تغییرات مورد انتظار جدا کنند و با اطمینان بیشتری کدهای موجود را توسعه دهند.
بررسی Object و Array در تستهای نرمافزاری
در برنامههای دات نت، بسیاری از دادهها به شکل Object و Array تولید یا پردازش میشوند. بررسی این ساختارها با تستهای معمولی گاهی به نوشتن assertionهای متعدد نیاز دارد، بهخصوص زمانی که تعداد زیادی ویژگی یا مقدار در نتیجه نهایی وجود داشته باشد. Approval Testing امکان ثبت و مقایسه خروجی این ساختارها را فراهم میکند و به توسعهدهندگان اجازه میدهد تغییرات موجود در دادهها را به شکلی منظم بررسی کنند. این رویکرد برای ارزیابی نتایج پیچیده و تشخیص تفاوتهای ناخواسته کاربرد دارد.

برای استفاده مؤثر از این روش، باید بدانید کدام بخش از خروجی اهمیت دارد و تغییرات آن چگونه باید ارزیابی شوند. ابزارهای Reporter نیز میتوانند نمایش تفاوت میان نتیجه فعلی و نسخه تأییدشده را سادهتر کنند تا بررسی تغییرات با وضوح بیشتری انجام شود. در این آموزش، بررسی Objectها و Arrayها در کنار استفاده از Reporterها مطرح میشود تا با شیوههای مقایسه خروجی و تحلیل تفاوتها در محیط دات نت آشنا شوید و بتوانید تستهای قابلفهمتری برای کدهای خود بنویسید.
استفاده از Approval Testing برای Refactoring کدهای قدیمی
Refactoring به معنای بهبود ساختار داخلی کد بدون تغییر عمدی در رفتار قابل مشاهده آن است. هنگام بازآرایی کدهای قدیمی، ممکن است وابستگیهای پیچیده یا مستندات ناکافی باعث شوند تشخیص رفتار واقعی سیستم دشوار باشد. Approval Testing میتواند با ثبت خروجی فعلی برنامه، یک نقطه مرجع برای مقایسه فراهم کند. در نتیجه، توسعهدهنده هنگام تغییر ساختار کد میتواند رفتار جدید را با رفتار ثبتشده مقایسه کند و بخشهایی را که دچار تغییر شدهاند، راحتتر شناسایی کند.
این شیوه بهویژه زمانی مفید است که کدهای موجود تستهای کافی ندارند یا نوشتن تستهای جزئی برای تمام رفتارهای آنها زمانبر است. البته تأیید خروجی فعلی بهتنهایی تضمین نمیکند که رفتار موجود از نظر کسبوکار صحیح باشد؛ بنابراین، نتایج ثبتشده باید با شناخت مناسبی از عملکرد مورد انتظار برنامه بررسی شوند. در این آموزش، ارتباط Approval Testها با Refactoring کدهای Legacy بررسی میشود تا بتوانید از این روش برای شناخت بهتر رفتار سیستم و کاهش ریسک تغییرات ساختاری استفاده کنید.
سرفصل مطالب آموزش ویدئویی تست تایید (Approval Testing) در دات نت
فصل اول: مقدمه دوره آموزشی
- مقدمه دوره آموزشی
- مقایسه Assert های سنتی و Approval Test ها
- چرا باید از Approval Test ها استفاده کنیم؟
- بررسی فایل های Received و Approved
- نصب کردن و بررسی Testing Framework ها
- شروع به کار با یک مثال ساده
- جمع بندی
فصل دوم: بررسی کردن Object ها و Array ها
- مقدمه
- بررسی کردن Custom Object ها
- کار کردن با Intermediate State ها
- ریفکتور کردن یک تست برای آرایه به یک Approval Test
- بررسی کردن هر عنصر در یک آرایه و اضافه کردن Context
- بررسی کردن مفهوم Approval Testing Circle
- جمع بندی
فصل سوم: استفاده کردن از Reporter ها
- مقدمه
- بررسی کلی Reporter ها
- بررسی File Reporter
- بررسی Clipboard Reporter
- کار با عکس ها و بررسی Image Diff
- تعریف کردن Reporter ها در فایل Config
- استفاده کردن از Reporter Attribute
- بررسی دقیق تر Diff Reporter
- ایجاد کردن یک Reporter سفارشی
- جمع بندی
فصل چهارم: تست کردن Application View ها
- مقدمه
- بررسی کلی تست کردن View ها
- تست کردن View ها در WPF
- تست کردن View ها در Windows Form ها
- بررسی کلی تست کردن View ها در ASP.NET MVC
- تست کردن View ها در ASP.NET MVC
- تست کردن View ها در ASP.NET MVC با استفاده از Seam ها
- یک روش جایگزین برای تست کردن Razor View ها
- استفاده از فایل های Approved به عنوان تخته وایت برد های مجازی
- جمع بندی
فصل پنجم: ریفکتور کردن Legace Code ها به همراه Approval Test ها
- مقدمه
- بررسی کلی Characterization Test ها
- ایجاد کردن اولین Characterization Test ها
- تولید کردن خودکار ترکیب های مختلفی از Test Data ها
- انجام ریفکتوری به روشی ایمن
- استفاده از Logging برای Approval ها
- جمع بندی







