آموزش تست نرم افزار TDD & BDD
- طول دوره: 25 ساعت
- مدرس: مهندس رضا ارجمند
- تاریخ شروع: 1399/06/29
- ساعت برگزاری: شنبه ها ساعت 17 الی 21
- مبلغ دوره: 2,200,000 تومان
درباره دوره
امروزه توسعه ی تست محور (TDD) یکی از الزامی ترین مهارت ها برای تیم های توسعه ی نرم افزار می باشد. TDD می تواند منجر به تولید نرم افزارهایی با باگ کمتر و با طراحی بهتر شود.
علاقمندان به یادگیری تست نرم افزار می توانند همچنین این دوره را به صورت غیر حضوری از طریق لینک بسته آموزش تست نرم افزار دریافت نمایند.
سرفصل دوره آموزشی
آشنایی با تست نرم افزار
- آشنایی با تست نرم افزار، مزایا و هدف از آن
- آشنایی با مفاهیم اولیه تست (Test Plan, Test Suite, SUT, …)
- اصول و استراتژی های مختلف Test Automation
- آشنایی با سطوح و انواع مختلف تست
- Unit Test
- Integration Test
- Acceptance Test
- Load Test
- Smoke Test
- بررسی هرم تست
- بررسی و مقایسه رویکرد های مختلف (TDD , ATDD , BDD, …)
طراحی تست ها
- طراحی تست پذیر
- بررسی رابطه ی تست پذیری و Encapsulation
- بررسی رابطه ی تست پذیری و Coupling
- الگوهای طراحی تست پذیر (Dependency Injection, Dependency Lookup, ...)
- ویژگی کیفی تست ها
- Maintainability
- Readability
- Trustworthy
- بررسی 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
- چرخه بهینه شده و 4 مرحله ای TDD
- نگاهی بر تاریخچه، مزایا و چالش های TDD
- اصول قوانین TDD
Unit Testing & Integration Testing
- آشنایی با نحوه نوشتن تست، فریم ورک ها و مقایسه آنها مانند xUnit ، MSTest، NUnit
- بررسی ویژگی های تست های خوب (Repeatable, Isolated, …)
- نحوه نوشتن بر Parameterized Test تست ها
- آشنایی با انواع Test Double ها و کاربرد هریک
- Mock
- Fake
- Stub
- Spy
- Dummy
- آشنایی با فریم ورک های Isolation در .NET
- بررسی 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, …)
- آشنایی با کتابخانه های مربوط به ساخت داده های تست
- الگوها و روش های Exercise SUT
- الگوهای Result Verification
- State & Behavior Verification
- نحوه Assert کردن خطاها
- آشنایی با کتابخانه ی FluentAssertions
- آشنایی با کتابخانه ی Shouldly
- آشنایی با کتابخانه NCheck
- الگوهای Fixture Teardown (Inline, Implicit)
- الگوهای Fixture Setup
- اجرای موازی تست ها
- بررسی پشتیبانی کتابخانه های تست از اجرای موازی
- چالش های اجرای موازی تست ها (Shared Resource, Chained Tests, ... )
- الگوها و روش های جداسازی تست ها جهت اجرای موازی
- تست های دیتابیس محور
- بررسی چالش های دیتابیس در تست ها و مدیریت آنها
- الگوهای Isolate کردن دیتابیس بین تست ها (Sandbox DB , Transaction Rollback)
- استراتژی های تولید داده های اولیه
- کار با Entity Framework در تست ها
- بررسی قابلیت In-Memory Database در EF Core
- کار با FakeDbSet
- آشنایی با ابزارهای Continuous Testing
- آشنایی با Continuous Integration و تاثیر تست ها در آن و اشنایی با ابزارهای آن مانند (TeamCity, Azure DevOps)
- آشنایی با مفهوم 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 مانند Pickes
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 های اتوماتیک از سطح API
- اتوماتیک سازی تست ها از سطح سرویس های REST
- بررسی چالش های رایج حراز هویت (Token, Data Serialization, Cookie)
پیش نیاز دوره
- سابقه برنامه نویسی با زبان C#
- مهارت در Object Oriented Programming