
آموزش توسعه تست محور Test First Development در سی شارپ سری دوم
آموزش توسعه تست محور Test First Development در سی شارپ سری دوم یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی آموزش توسعه ی نرم افزار تست محور است که با نام اصلی Test First Development - Part 2 از شرکت Pluralsight منتشر شده است.
Test Driven Development چیست؟
Test-Driven Development یا TDD تکنیکی برای توسعه نرم افزار های می باشد. این روش به صورت بالا به پایین انجام می شود یعنی اول یک سری mock ساخته شده، کلیات پروژه به صورت نمونه اولیه پیاده سازی می شود و بعد از تایید شدن عملکرد برنامه کد های اصلی با mock ها جایگزین می شود. تست ها به صورت Test Case نوشته می شوند و در نهایت بعد از نوشته شدن کد ریفکتورینگ صورت می گیرد. این سیکل را Red-Green-Refactor می گویند.
TDD در واقع متدی برای طراحی نرم افزار است نه تست آن البته تست نرم افزار توسط TDD به صورت خیلی شیک انجام می شود. فرض کنید که یک Class دارید که انتظار دارید یک Object از نوع User برای شما ایجاد کند و در کل برنامه با این Object کار خواهید کرد. حال شما تغییری در پایگاه داده خود ایجاد می کنید که باعث می شود متد هایی از آین Object را دیگر نداشته باشیم. بنابراین جاهایی از برنامه که انتظار دارند این متدها وجود داشته باشند از کار خواهد افتاد ولی اگر از روش TDD استفاده کنیم و برای هر قسمت تست نوشته باشیم قبل از اینکه بعد از تغییرات ما همه سیستم از کار بیفتد ما با استفاده از تست ها میتوانیم متوجه تغییرات در جاهای مختلف سیستم بشویم. ضمناً سری اول این آموزش تحت عنوان آموزش توسعه تست محور Test First Development در سی شارپ سری اول پیش از این بر روی سایت منتشر شده است.
تست نرم افزار چیست؟
تست نرم افزار یک فرایند، برای ارزیابی عملکرد یک برنامه نرم افزاری است که هدف آن یافتن ان است که آیا نرم افزار توسعه یافته نیازهای مشخص شده را برآورده می کند یا خیر. در واقع تست نرم افزار، برای شناسایی نقص ها و برای اطمینان از بی عیب بودن محصول برای تولید یک محصول با کیفیت می باشد. انواع تست نرم افزار روش هایی مانند: تست کردن دستی و تست کردن به روش اتوماسیون، تست کردن به روش testing methods و تست کردن به روش approache ها و تست کردن به روش black-box می باشند.
تفاوت TDD، ATDD و BDD در توسعه نرم افزار
در توسعه نرمافزار، روشهای مختلفی برای استفاده از تستها در فرایند ساخت محصول وجود دارد. Test-Driven Development یا TDD معمولاً بر نوشتن تستهای کوچک برای هدایت پیادهسازی تمرکز میکند، در حالی که Acceptance Test-Driven Development یا ATDD از معیارهای پذیرش برای روشن کردن انتظارات از قابلیت موردنظر کمک میگیرد. Behavior-Driven Development یا BDD نیز بر توصیف رفتار سیستم با زبانی قابل فهم برای افراد فنی و غیرفنی تأکید دارد. شناخت تفاوت این رویکردها به انتخاب روش مناسب برای هر پروژه کمک میکند.
این سه رویکرد در هدف کلی بهبود کیفیت و شفافتر کردن رفتار مورد انتظار نرمافزار اشتراک دارند، اما در سطح تمرکز و شیوه بیان تستها تفاوتهایی دارند. TDD میتواند تصمیمهای پیادهسازی را هدایت کند، ATDD به توافق درباره معیارهای پذیرش کمک میکند و BDD ارتباط میان نیاز کسبوکار و رفتار سیستم را پررنگتر میسازد. درک این تفاوتها برای برنامهنویسانی مفید است که میخواهند فراتر از تستنویسی صرف، نقش آزمونها را در فرایند توسعه بهتر بشناسند.
Acceptance Test-Driven Development چیست؟
Acceptance Test-Driven Development رویکردی است که در آن معیارهای پذیرش یک قابلیت پیش از تکمیل پیادهسازی روشن میشوند. این معیارها مشخص میکنند که نرمافزار برای برآورده کردن انتظارهای تعریفشده باید چه رفتاری داشته باشد. بهجای آنکه موفقیت یک قابلیت فقط بر اساس برداشت شخصی توسعهدهنده سنجیده شود، تیم میتواند از شرایط مشخص برای ارزیابی نتیجه استفاده کند. این شیوه به ایجاد درک مشترک درباره هدف هر قابلیت و شرایط قابل قبول بودن آن کمک میکند.

توجه به Acceptance Test بهویژه زمانی مفید است که مشتری، تحلیلگر و تیم فنی باید درباره معنای دقیق یک نیازمندی توافق داشته باشند. معیارهای روشن میتوانند ابهام را کاهش دهند و مبنایی برای بررسی نتیجه نهایی فراهم کنند. در این دوره با مفاهیم ATDD و بررسی بیشتر آن آشنا میشوید و میتوانید نقش تستهای پذیرش را در توسعه نرمافزار بهتر درک کنید. این رویکرد مکمل تستهای سطح پایینتر است و جایگزین همه انواع آزمون نمیشود.
آشنایی با Behavior-Driven Development
Behavior-Driven Development یا BDD رویکردی برای توسعه نرمافزار است که رفتار مورد انتظار سیستم را در مرکز توجه قرار میدهد. در این روش، توصیف نیازها و سناریوها باید تا حد امکان برای اعضای مختلف تیم قابل فهم باشد؛ بنابراین ارتباط میان زبان کسبوکار و جزئیات فنی اهمیت پیدا میکند. تمرکز بر رفتار به تیم کمک میکند درباره آنچه نرمافزار باید انجام دهد، به توافق برسد و از برداشتهای متفاوت درباره یک قابلیت جلوگیری کند.

در BDD، سناریوهای رفتاری میتوانند مبنایی برای گفتوگو درباره نیازمندیها و بررسی عملکرد نرمافزار باشند. چنین سناریوهایی کمک میکنند شرایط مختلف استفاده از یک قابلیت مشخص شود و انتظارات از سیستم شفافتر بیان شوند. این دوره به معرفی BDD و بررسی عمیقتر مفاهیم آن میپردازد. یادگیری این رویکرد برای برنامهنویسانی مناسب است که میخواهند تعامل مؤثرتری با سایر اعضای تیم داشته باشند و تستها را به نیازهای واقعی کاربران مرتبط کنند.
این آموزش توسعه تست محور برای چه کسانی مناسب است؟
این دوره برای برنامهنویسان مبتدی و افرادی مناسب است که با مفاهیم اولیه توسعه نرمافزار آشنا هستند و میخواهند نقش تستها را در فرایند توسعه بهتر بشناسند. اگر پیشتر تستها را فقط پس از پایان کدنویسی اجرا میکردید، آشنایی با TDD، ATDD و BDD میتواند دیدگاه شما را نسبت به زمان و هدف تستنویسی تغییر دهد. این مفاهیم نشان میدهند که آزمونها میتوانند در روشن کردن نیازمندیها و هدایت ساخت نرمافزار نیز نقش داشته باشند.
همچنین این آموزش برای توسعهدهندگانی مفید است که میخواهند درباره روشهای همکاری میان اعضای فنی و غیرفنی تیم دانش بیشتری کسب کنند. آشنایی با تستهای پذیرش و سناریوهای رفتاری به درک بهتر انتظارات از قابلیتهای نرمافزار کمک میکند. مطالب این دوره میتوانند پایهای برای مطالعه بیشتر درباره شیوههای تستنویسی و بهبود فرایند توسعه باشند، بهویژه برای کسانی که قصد دارند از آزمونها بهصورت هدفمندتری در پروژههای C# استفاده کنند.
سرفصل مطالب آموزش ویدئویی Test First Development در سی شارپ سری دوم
فصل اول: Test First Development سری دوم- مقدمه
- بررسی Agile Testing Quadrant
- بررسی Testing Pyramid
- بررسی استراتژی های تست نرم افزار
- تفکیک کردن ارتباطات
- بیان کردن تمایلات
- بررسی یک مکالمه معمول
- ایجاد کردن سناریوها
- بررسی سطوح سناریو
- از تمایلات به نیازمندی ها
- استفاده کردن از Executable Specification ها
- بررسی اولین تلاش
- انتشار نتایج تست ها
- بررسی AAA GWT Context Specficiation
- جمع بندی
- مقدمه
- مکان ATDD کجاست؟
- بررسی ATDD در یک Iterative Development Model
- بررسی Build Automation در ATDD
- معرفی Gherkin
- معرفی SpecFlow
- بررسی جزئیات SpecFlow
- پیادهسازی مراحل مربوط به سناریو
- آخرین نکات در رابطه با SpecFlow
- جمعبندی
- مقدمه
- معرفی StoryQ
- تولید Documentation
- پیاده سازی Story
- ایجاد کردن ATDD سفارشی
- بررسی Context Chaining
- جمع بندی
- مقدمه
- بررسی اصول BDD
- بیان کردن Variantها در BDD
- ایجاد کردن و پیادهسازی BDD
- پیاده سازی Machine Specifications
- بررسی Testing Styleها
- کاهش دادن Class Coupling
- مقایسه State Testing و Interaction Testing
- بررسی Data Layer Substitution
- Refactore کردن به یک Command
- استفاده کردن از Command
- جمع بندی
- مقدمه
- جابجا کردن Business Logic
- بررسی State مربوط به Code
- استفاده کردن از Factory
- تست کردن یک Abstract Class
- بررسی Code Coverage
- جمع بندی







