آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش تست نرم افزار BDD & TDD

پیشنیاز : سابقه برنامه نویسی با #C
تاریخ شروع طول دوره ساعت برگزاری نام استاد هزینه (تومان) وضعیت
1397/07/06 36 ساعت جمعه ها ساعت 13:15 تا 16:15 مهندس هادی احمدی 1,400,000 درحال برگزاری
1397/12/16 36 ساعت پنجشنبه ها ساعت 13:15 تا 16:15 مهندس هادی احمدی 1,400,000 ثبت نام

توجه: از دانشجویان عزیز تقاضا میگردد جهت قطعی کردن ثبت نام با آموزشگاه تماس بگیرند.

امروزه توسعه ی تست محور (TDD) یکی از الزامی ترین مهارت ها برای تیم های توسعه ی نرم افزار می باشد. TDD می تواند منجر به تولید نرم افزارهایی با باگ کمتر و با طراحی بهتر شود. توسعه ی رفتار محور (BDD) که از دل TDD ظهور کرده است، نه تنها بر روی تولید محصول با کیفیت، بلکه بر روی محصول مطابق با نیازهای کاربر جهت ایجاد ارزش تجاری هم تمرکز میکند.

مخاطبین :
  • آن دسته از تیم هایی که به دنبال اصلاح و ارتقای چرخه ی تولید خود توسط تکنیک ها و فرآیند های BDD می باشند.
  • آن دسته از برنامه نویسانی که به دنبال یادگیری تست نویسی در 3 حوزه ی Unit، Integration و Acceptance می باشند.
  • آن دسته از برنامه نویسانی که به دنبال یادگیری طراحی تست پذیر و همچنین Best Practice های نوشتن تست بوده تا بتوانند تست های قابل نگهداری و قابل خواندن بنویسند.
اهداف دوره :

در این دوره دانشجو با مفاهیم پایه ای تست، انواع تست و استراتژی ها و رویکرد های مختلف آن آشنا میشود. طراحی تست پذیر را می آموزد و قادرخواهد بود کدهای تست پذیر بنویسد. چرخه و فرآیند BDD و TDD را فرا میگیرد و می تواند از آنها برای تولید محصولی با کیفیت که نیازهای کاربران را به درستی پاسخ می دهد، استفاده کند.

یکی از مشکلات بزرگ پروژه های دارای تست، هزینه نگه داری تست هاست که ناشی از طراحی بد تست ها، عدم رعایت اصول در نوشتن تست ها و وابستگی بیش از حد تست ها به کد های اصلی نرم افزار است. در این دوره آموزشی دانشجو با اصول طراحی تست ها و اصول نوشتن آنها آشنا می شود و می تواند تست های قابل نگهداری تولید کند.

پیش نیاز ها :
  • سابقه برنامه نویسی با زبان C#

مدت زمان : 9 جلسه – 36 ساعت

سرفصل

آشنایی با تست نرم افزار

  • آشنایی با تست نرم افزار، مزایا و هدف از آن
  • آشنایی با مفاهیم اولیه تست (Test Plan, Test Suite, SUT, …)
  • اصول و استراتژی های مختلف Test Automation
  • آشنایی با سطوح و انواع مختلف تست
    • آشنایی با سطوح و انواع مختلف تست
    • Integration Test
    • Acceptance Test
    • Load Test
    • Stress Test
    • Smoke Test
    • Regression Testing
  • بررسی هرم تست
  • بررسی و مقایسه رویکرد های مختلف (TDD , ATDD , BDD, …)

طراحی تست ها

  • طراحی تست پذیر
    • بررسی رابطه ی تست پذیری و Encapsulation
    • بررسی رابطه ی تست پذیری و Coupling
    • الگوهای طراحی تست پذیر (Dependency Injection، Dependency Lookup و ... )
  • ویژگی کیفی تست ها
    • Maintainability
    • Readability
    • Flexibility
  • بررسی Test Smell ها
    • Code Smells
    • Project Smells
    • Behavior Smells
  • وابستگی تست ها با کدهای نرم افزار
  • جداسازی دغدغه ها در تست ها
  • بررسی رویکردهای مختلف تست نویسی (مانند Cross-Functional ، Per Functionality و ...)
  • بررسی استراتژی های مختلف مدیریت Test Fixture ها (Transient ، Shared و ...)
  • دسته بندی و سازمان دهی تست ها، Convention های رایج نوشتن تست ها

Test-Driven Development

  • آشنایی با TDD
  • چرخه ی TDD (Red, Green, Refactor) و رویکرد Test-First
  • نگاهی بر تاریخچه، مزایا و چالش های TDD
  • اصول قوانین TDD

Unit Testing & Integration Testing

  • آشنایی با نحوه نوشتن تست، فریم ورک ها و مقایسه آنها (مانند xUnit ، MSTest، NUnit و ... )
  • بررسی ویژگی های تست های خوب (Repeatable, Isolated و ... )
  • نحوه نوشتن بر Parameterized Test تست ها
  • آشنایی با انواع Test Double ها و کاربرد هریک
    • Mock
    • Fake
    • Stub
    • Spy
    • Dummy
  • آشنایی با فریم ورک های Isolation در .NET (مانند Moq، FakeItEasy و ...)
  • بررسی Pattern ها و Anti-Pattern های رایج هنگام استفاده از ابزارهای Isolation
  • الگوهای افزایش Maintainability در تست ها (Test Isolation, Object Comparing و ... )
  • الگوهای افزایش Readability در تست ها (Naming Conventions, Meaningful Assertions و ...)
  • آشنایی با روش های مختلف تست
    • Interaction Testing
    • State-Based Testing
    • Value-Based Testing
  • بررسی 4 مرحله ی تست ها (Setup, Exercise, Verify, Teardown)
  • الگوهای مربوط به 4 مرحله ی تست
    • الگوهای Fixture Setup
      • آشنایی با روش های مختلف (Inline, Delegated و ... )
      • آشنایی با کتابخانه ی AutoFixture و NBuilder جهت ساخت داده های تست
    • الگوها و روش های Exercise SUT
    • الگوهای Result Verification
      • State & Behavior Verification
      • نحوه Assert کردن خطاها
      • آشنایی با کتابخانه ی FluentAssertions
      • آشنایی با کتابخانه ی Shouldly
    • الگوهای Fixture Teardown (Inline, Implicit و ...)
  • اجرای موازی تست ها
    • بررسی پشتیبانی کتابخانه های تست از اجرای موازی
    • چالش های اجرای موازی تست ها (Shared Resource, Chained Tests و ... )
    • الگوها و روش های جداسازی تست ها جهت اجرای موازی
  • تست های دیتابیس محور
    • بررسی چالش های دیتابیس در تست ها و مدیریت آنها
    • الگوهای Isolate کردن دیتابیس بین تست ها (Sandbox DB , Transaction Rollback و ...)
    • استراتژی های تولید داده های اولیه
    • کار با Entity Framework در تست ها
      • بررسی قابلیت In-Memory Database در EF Core
      • کار با FakeDbSet
  • آشنایی با ابزارهای Continuous Testing (مانند NCrunch و VS Live Testing و ... )
  • آشنایی با Continuous Integration و تاثیر تست ها در آن و اشنایی با ابزارهای آن (مانند TeamCity, VSTFS و ... )
  • آشنایی با مفهوم Code Coverage و ابزارهای آن (مانند DotCover )

Behavior-Driven Development (BDD)

  • آشنایی با BDD
  • نگاهی بر تاریخچه، مزایا و چالش های BDD
  • مفاهیم BDD
    • Feature
    • User Story
    • Acceptance Criteria
    • Scenario
    • Specification & Executable Specification
  • استخراج و تعریف نیازمندی ها با رویکرد BDD
  • آشنایی با روش Feature Injection
  • تبدیل Feature ها به Story ها و شناسایی مثال های کلیدی (Key Examples) و تبدیل آنها به Executable Specification
  • آشنایی با مفهوم Ubiquitous Language در DDD و تاثیر آن در نوشتن سناریوها
  • آشنایی با زبان Gherkin و ساختار Given…When…Then
  • آشنایی با Pattern ها و Anti-Pattern های نوشتن سناریوها
  • استفاده از جداول جهت نوشتن مثال های مختلف در سناریوها
  • Living Documentation
    • آشنایی با مفهوم Living Documentation و چالش های مستندسازی به روش سنتی
    • اصول Living Documentation (Reliable, Collaborative و ...)
    • جایگاه Living Documentation در BDD و تولید آن از روی Specification ها
    • بررسی ابزارهای موجود در .NET (مانند Pickles و ... )

Automated Acceptance Testing

  • آشنایی با فریم ورک Specflow در .NET
    • Steps
    • Bindings, Scoped Bindings
    • Hooks
    • Tags
    • Feature Context, Scenario Context
    • Parallel Test Execution
  • لایه بندی تست ها (Business Rule, Business Flow, Technical)
  • تکنیک استفاده از موجودیت های شناس و Personas
  • پیاده سازی Acceptance Test های اتوماتیک از Web UI
    • آشنایی با ابزار Selenium
    • آشنایی با WebDriver های مختلف (Chrome, Firefox, Phantom JS و ... )
    • آشنایی با XPath
    • پیاده سازی الگوی Page Object Model
    • الگوهای Assertion در تست های UI
    • روش های کار با صفحات Ajax-Base و SPA ها
  • پیاده سازی Acceptance Test های اتوماتیک از سطح API
    • اتوماتیک سازی تست ها از سطح سرویس های REST و SOAP
    • بررسی چالش های رایج (احراز هویت، Cookie، Token، Data Serialization و ...)

Unit Testing به سبک BDD

  • رابطه ی TDD, BDD و Unit Testing
  • مفهوم Low-Level Specification
  • نوشتن Unit Test ها به سبک BDD
    • تکنیک های نوشتن با فریم های رایج تست مانند xUnit و ...
    • آشنایی با فریم ورک های NSpec، SpecsFor، BDDfy

دوره آموزش تست نرم افزار BDD & TDD- دوره تست نرم افزار TDD & BDD
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال
آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .