دوره
TDD
،
BDD
و تست خودکار
مدرس
هادی احمدی
دسته بندی
تست نرم افزار
مدت دوره
42 ساعت
جلسات دوره
14 جلسه 3 ساعته
نحوه برگزاری
آنلاین
تاریخ شروع
19 خرداد 1399
هزینه دوره
2.000.000 تومان
ثبت نام
سرفصل
آشنایی با
Test Automation
آشنایی با تست خودکار
(Automated Test)
، مزایا و اهداف
بررسی تاثیرات
Test Automation
در حوزهی کیفیت خروجی تولید شده
در حوزهی
Refactoring
در حوزهی اقتصاد و هزینهی توسعه و نگهداری
در حوزهی مستندات
در حوزهی شناخت نیازمندیها
آشنایی با مفاهیم و اصطلاحات
SUT (System Under Test)
DOC (Dependent-on Component)
Test Fixture
Test Case – Test Method
Test Double
Test Framework
Test Runner
آشنایی با سطوح مختلف تست
Unit Test
Integration Test
Acceptance Test
Load Test
Stress Test
Smoke Test
Performance Test
Regression Test
Usability Test
بررسی هرم تست
(Test Pyramid)
بررسی
Testing Quadrants
مفاهیم پایهای تست
بررسی اصول
F.I.R.S.T
آشنایی با رویکردهای مختلف تست
Interaction-Based Testing
State-Based Testing
Output-Based Testing
بررسی 4 فاز مختلف تستها
Fixture Setup
Exercise
Verify
Teardown
نگاهی بر مفهوم
Test Fixture
Test Fixture
چیست؟
بررسی انواع
Test Fixture
Transient – Persistent
Fresh – Shared – Immutable Shared
بررسی الگوهای فاز
Fixture Setup
Inline Setup
Delegated Setup
Framework Hooks
بررسی انواع
Creation Method
ها
Parameterized Method
Anonymous Creation Method
Named State Reaching Method
Attachment Method
بررسی
Test Data Builder
ها
بررسی الگوهای
Builder
و
Step Builder
آشنایی با کتابخانه
AutoFixture
و
NBuilder
بررسی الگوهای فاز
Verification
آشنایی با کتابخانههای
Assertion (FluentAssertions, NFluent, Shouldly و ...)
Delta Assertions
Guard Assertions
Excepted Objects
آشنایی با
Test-Driven Development (TDD)
آشنایی با
TDD
و رویکرد
Test-First
چرخه ی
Red, Green, Refactor
آشنایی با اصول و قوانین
TDD
Unit Testing
آشنایی با
Unit Testing
و اهداف آن
آشنایی با فریم ورکهای خانواده
xUnit
روشهای دستهبندی تستها در فریم ورکهای خانواده
xUnit
Per Class
Per Feature
Per Fixture
نامگذاری صحیح
Unit Test
ها
آشنایی با
Code Coverage
و ابزارهای آن
ساختار
Arrange, Act, Assert
بررسی استراتژی های
Fixture Management
در
Unit Test
ها
پیادهسازی
Parameterized Test
ها
آشنایی با ابزارهای
Live Testing
(مانند
Ncrunch, WallabyJs
)
Test Doubles
بررسی انواع روابط بین
SUT
و وابستگی های آن
Indirect Input
Indirect Output
Indirect Input & Output
آشنایی با فریم ورک های
Isolation
در
.NET
(مانند
Moq، FakeItEasy، NSubstitute
و ...)
انواع
Test Double
ها
Mock
Stub
Spy
Fake
Dummy
بررسی انواع
Stub
Responder
Saboteur
Temporary Test Stub
Procedural Test Stub
Entity Chain Snipping
روشها و نکات پیاده سازی
Stub
ها
Hard-Coded
Configurable
Anonymous Inner Class
روش ها و نکات پیاده سازی
Spy
ها
Retrieval Interface
Self-Shunt
Anonymous Inner Class
Indirect Output Registry
معرفی سبک
Classical TDD (Detroit)
معرفی سبک
Mockist TDD (London)
بررسی تفاوت های سبکهای
Classical
و
Mockist
از لحاظ رویکرد و سبک طراحی
از لحاظ نحوه انجام
Fixture Setup
از لحاظ وابستگی تستها به پیادهسازی کدها
طراحی تستپذیر
تعریف
Testability
و
Testable Design
بررسی رابطه
Encapsulation، Observability
و تستپذیری
رابطهی اصل
Composition over Inheritance
و تستپذیری
بررسی اصول
SOLID
و تاثیر آن بر تستپذیری
بررسی رابطه
High-Coupling
و تستپذیری
مشکلات الگوی
Singleton
در تست
مشکلات
Service Locator
در تست
بررسی
Humble Object
Integration Testing
آشنایی با
Integration Testing
نگاهی بر تعاریف مختلف
Integration Test
Narrow Integration Tests
Broad Integration Tests
نحوه کار با
Database
در تست
پیشنیازهای کار با دیتابیس در تست
بررسی استراتژیهای
Fixture Management
Fresh Persistent Fixture
Shared Persistent Fixture
Immutable Shared Persistent Fixture
بررسی روشهای
Teardown
هنگام کار با
Database
Table Truncation
Transaction Rollback
Database Sandbox
بررسی تکنیک
In-Memory Database
بررسی قابلیت
In-Memory Database
در
EF Core
استراتژیهای تولید دادههای مورد نیاز
اجرای موازی تستها
کار با وابستگیهای بیرونی (مانند
Web Service
ها )
کار با
File System
تست مکانیزم
Log
کار با رشتهها
بررسی چالش کار با
String
ها در تست
بررسی روشهای
Verification
رشتهها
Verification by Containment
Verification by Pattern
Exact Verification by Value
Exact Verification with Formatted Results
کار با فرمتهای
Json
و
XML
Verification
با روش
Serialize-Deserialize
استفاده از کتابخانهی
FluentAssertions.Json
کار با تاریخ و زمان
بررسی چالشهای کار با زمان در تست
شناسایی مسائل حساس به زمان
روشهای مختلف کار با زمان
Ambient Context
Value Passing
Explicit Dependency
بررسی تکنیک
Time Travelling
پیاده سازی
Time Travelling
در
Unit Test
ها
Time Travelling
در
Integration Test
ها
Property-Based Testing
نگاهی بر
Functional Programming
و برخی مفاهیم آن
آشنایی با
Property-Based Testing
، پیشینه و هدف آن
Property
چیست؟
مقایسه
Property-Based Testing
و
Example-Based Testing
مقایسه
Property-Based Testing
و
Fuzzing
بخش¬های مختلف در
Property-Based Testing
Modeling
Generalizing example tests
Invariants
Symmetric properties
بررسی
Stateless Properties
بررسی
Stateful Properties
بررسی
State Machine Properties
آشنایی با مکانیزم
Shrinking
مکانیزم کاری
Targeted Properties
ها و محدودیتهای آنها
بررسی کتابخانهی
fsCheck
نوشتن
Property
های ساده
Conditional Properties
Lazy Properties
Quantified Properties
Timed Properties
تولید داده با
Generator
ها و
Shrinker
ها
کیفیت در تستها
بررسی مشخصههای کیفی تستها
Maintainability
Readability
Trustworthiness
آشنایی با مفهوم
Test Smell
بررسی
Test Smell
و
Anti-Pattern
های رایج و راه رفع آنها
Eager Test
Mystery Guest
Verbose Test
Flexible Test
Equality Pollution
Conditional Verification Logic
Production Logic in Test
Test Logic in Production
Primitive Assertions
Hyper Assertions
Bitwise Assertions
Complex Teardown
Code Duplication
Magic Values
General Fixture
Overprotective Test
Pixel Perfection
Parameterized Mess
Never-failing Test
Shallow Promises
Lowered Expectations
Platform prejudice
Assertion Roulette
Interacting Tests
Lonely Test
Resource Leakage
Unrepeatable Test
Nondeterministic Test
Interface Sensitivity
Behavior Sensitivity
Data Sensitivity
Context Sensitivity
Sensitive Equality
Fragile Fixture
Erratic Test
Slow Tests
Behavior-Driven Development (BDD)
آشنایی با
BDD
تعاریف و مفاهیم
BDD
Vision
Goal
Capability
Feature
User Story
Acceptance Criteria
Example
Scenario
Specification & Executable Specification
شناسایی نیازمندی¬ها با کمک
BDD
بررسی تکنیک
Feature Injection
بررسی تکنیک
Impact Mapping
بررسی تکنیک
Purpose-Based Alignment Model
تبدیل
Feature
ها به
User Story
ها و شناسایی مثالهای کلیدی
(Key Examples)
بررسی روشهای تعامل موثر برای نوشتن
Scenario
ها و برگزاری جلسات
Three-Amigos
تبدیل مثالها به
Executable Specification
بررسی تفاوت
High-Level Specification
و
Low-Level Specification
آشنایی با مفهوم
Ubiquitous Language
آشنایی با زبان
Gherkin
و ساختار
Given, When, Then
Automated Acceptance Testing
بررسی فریم ورک
Specflow
نحوه راه اندازی
Specflow
نوشتن سناریوها با
Specflow
مفهوم
Binding
بررسی
Hook
ها و ترتیب اجرای آن¬ها
استفاده از
Background
برای پیشنیاز سناریوها
استفاده از جداول افقی و عمودی
کار با
Tag
ها
آشنایی با مکانیزم
Dependency Injection
در
Specflow
اجرای موازی تست¬ها در
Specflow
لایهبندی و معماری
Acceptance Test
ها
بررسی اهمیت لایهبندی
لایهی
Business Rule
لایهی
Business Flow
لایهی
Technical
روشهای آمادهسازی داده در سناریو
Duplication
استفاده از روش
GivenStories
Scenario order
Background Steps
Reusable Components
استفاده از
Persona
در نوشتن سناریوها
پیاده سازی
Acceptance Test
ها از
Web UI
آشنایی با ابزار
Selenium
آشنایی با
WebDriver
های مختلف
آشنایی با مفهوم
Headless Browser
بررسی الگوی
Page Object Model
خواندن مقادیر از
Element
های صفحه
استخراج مقادیر صفحه با
XPath
مکانیزم
Wait
در
Selenium
پیاده سازی
Acceptance Test
ها از
API
کار با سرویسهای
REST
مدیریت مکانیزم
HATEOAS
احراز هویت در تستها با
OAuth
و کار با توکنهای
JWT
الگوی
Screenplay
بررسی مشکلات الگوی
Page Object Model
آشنایی با نگاه
Actor-Centric
بررسی 5 بخش اصلی الگوی
Screenplay
Actor
Ability
Question
Interaction
Task
بررسی فریم ورک
Serenity
پیادهسازی تستها از لایه
API
و
UI
با الگوی
Screenplay
Unit Testing
در رویکرد
BDD
بررسی رابطه
BDD
,
TDD
و نقش
Unit Testing
بررسی مفهوم
Low-Level Specification
پیاده سازی
Unit Test
ها به سبک
BDD
با استفاده از فریمورک های خانواده
xUnit
بررسی فریمورک های
NSpec، SpecsFor، BDDfy
و ...
Living Documentation
بررسی مشکلات مستندسازی سنتی
آشنایی با رویکرد
Living Documentation
چرخهی
Living Documentation
No Documentation
Stable Documentation
Refactoring-Friendly Documentation
Runtime Documentation
Automated Documentation
Beyond Documentation
بررسی 4 اصل
Living Documentation
Reliable
Low-Effort
Collaborative
Insightful
تولید
Documentation
از روی
Specification
ها
بررسی ابزارهای موجود و راه اندازی ابزار
Pickles
×
صفحه مورد نظر هنوز به قالب جدید انتقال نیافته است. برای مشاهده نسخه قدیم کلیک کنید.
مشاهده نسخه قدیمی