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

مشاهده نمونه ویدیوهای تدریس دوره

جهت مشاهده کلیک کنید

توضیحات دوره

تست نرم افزار را می‌توان یکی از زیر مجموعه‌های مبحث کیفیت نرم افزار با نام “تضمین کیفیت” در نظر گرفت. تست نرم افزار به دنبال خطایابی و اطمینان از صحت عملکرد محصول نرم افزاری قبل از تحویل به مشتری است که حقیقتا یکی از مهمترین مراحل در فرایند توسعه است که با گذشت زمان از حالت دستی (Manual Testing) به حالت اتوماتیک (Automated Testing) تغییر رویه داده است. تست نرم افزار در دنیای امروز به سه قسمت اصلی تست واحد (Unit Testing)، تست یکپارچگی (Integration Testing) و تست پذیرش (Acceptance or E2E Testing) تقسیم می شود که مجموعه آنها هرم تست ( Test Pyramid) را تشکیل می دهند. در این دوره هرم تست و مفاهیم آن و آنچه از آن استنباط می شود را آموزش می دهیم.

آموزش تست نرم افزار TDD BDD همانطور که گفته شد، در دنیای امروز دیگر برای نرم افزارها تست به صورت دستی انجام نمی گیرد زیرا تست دستی یا همان Manual Testing بسیار پر هزینه است و زمان را هدر می دهد. از طرفی تست دستی دقیق نیست و ممکن است تست موارد مهمی را فراموش کنیم که موجب بروز Production Bug خواهد شد. بنابراین، انجام عملیات تست نرم افزار به صورت اتوماتیک و از طریق کدهایی که فرایند تست را در بازه های زمانی کوتاه انجام می دهند، امری اجتناب ناپذیر است. در این دوره ما فرآیند تست نرم افزار را به صورت اتوماتیک و از طریق فریمورک های تست نویسی مانند XUnit آموزش می دهیم. تست ها به 3 سطح اصلی Unit Testing, Integration Testing و Acceptance Testing تقسیم می شوند که در این دوره آموزشی هر 3 این موارد به همراه تمام جزئیات آموزش داده شده است. حال به شرح هر کدام از این موارد می پردازیم:

Unit Testing

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

آموزش Unit Testing

Integration Testing

زمانی که بخواهیم یک کامپوننت را به همراه وابستگی های آن تست کنیم تا از صحت عملکرد آن کامپوننت در ارتباط با دیگر کامپوننت های وابسته به آن اطمینان حاصل کنیم از Integration Test استفاده می کنیم. این تست ها در حقیقت چند بخش سیستم را به چالش می کشند و انتظارات ما را از آنها ارزیابی می کنند. انجام Integration Testing ابزارهای خاص خود را دارد که هر کدام از این ابزارها عملیات گوناگونی را برای اجرای تست ها در این سطح انجام می دهند.

آموزش Integration Testing

(E2E Testing)

پس از سطوح Unit و Integration برای اطمینان از کارآمد بودن نرم افزار برای مشتری نهایی، باید مرحله Acceptance Testing یا همان End-2-End Testing انجام شود. این مرحله عمدتا با استفاده از ابزارهای خاصی که خوانایی بالایی دارند و توسط افرادی غیر از برنامه نویسان قابل خواندن و فهمیدن است، نوشته می شوند.

آموزش Acceptance Testing

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

Test-Driven Development (TDD)

Test Driven Development یا به اختصار TDD یک متدولوژی توسعه نرم افزار است که از طریق تکنیک test first به ما در تست و توسعه هرچه سریعتر و باکیفیت تر نرم افزار کمک می کند. TDD در حقیقت تشکیل شده از یک چرخه بی نهایت تکراری (Iterative) شامل مراحل Red ,Green و Refactor که در شکل زیر نمایش داده شده است. در دنیای تست نرم افزار، تکنیک TDD یک از مهمترین و کاربردی ترین تکنیک ها برای نوشتن تست های اتوماتیک است. هیچ کتابی را در زمینه تست نرم افزار مشاهده نخواهید کرد مگر آنکه چند فصل را به TDD اختصاص داده باشد. ما در این دوره با استفاده از تکنیک TDD تست های خود را نوشته و از کدهای خود در فواصل زمانی کوتاه Feedback دریافت می کنیم. همپنین 3 قانون اصلی TDD را بررسی و هریک را به شیوه خاص خود رعایت و پیاده سازی می کنیم. ما در فصل دوم شما را با TDD آشنا می کنیم و پس از آن تمام فرایند تولید پروژه را بر اساس اصول TDD پیش می بریم.

آموزش Test driven development (tdd)

Behavior-Driven Development (BDD)

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

آموزش behavior driven development (bdd)

سرفصل دوره

معرفی دوره آموزش تست نرم افزار (1 قسمت)

معرفی دوره تست نرم افزار

آموزش مفاهیم تست و دلیل نوشتن تست های اتوماتیک (10 قسمت)

معرفی بخش
Building The Right Software/Software Right
تست ها چه کمکی به ما می کنند؟
هرم تست (Test Pyramid)
واژگان مهم و کاربردی در دنیای تست نرم افزار
فریمورک های تست نویسی در #C و سایر زبان های برنامه نویسی
نوشتن اولین Unit Test و آموزش فریمورک XUnit
حل تمرین FizzBuzz در فریمورک XUnit
Theory & InlineData Attributes
جمع بندی این بخش

Test Driven Development (توسعه تست محور) (16 قسمت)

معرفی بخش
چرخه TDD (TDD Cycle)
TDD چطور به پروژه ما کمک می کند؟
3 قانون TDD
حل EvenOrOdd با روش TDD
حل FizzBuzz با روش TDD
Refactoring در چرخه TDD
Continuous Testing
Testing Happy Path
تست کردن Exception ها
Test Quality Attributes
Test Readability - Fluent Assertions - نام گذاری تست ها
Test maintainability - Builder Design Pattern
Test Trustworthiness - تولید Custom Exception
ادامه پروژه Course - AddSection
جمع بندی این بخش

انواع Setup Fixture در XUnit (8 قسمت)

معرفی بخش
یادآوری سطوح مختلف تست
4 فاز اصلی هر تست
استراتژی های Fixture Setup
Inline and Implicit Setup
IClassFixture در XUnit
ICollectionFixture در XUnit
جمع بندی این بخش

اصل معکوس سازی وابستگی (Dependency Inversion Principle) (6 قسمت)

اصول SOLID در برنامه نویسی شئ گرا
اصل معکوس سازی وابستگی (DIP)
مفهوم Tightly Coupled Dependency چیست؟
مفهوم Loosely Coupled Dependency چیست؟
اعمال اصل معکوس سازی وابستگی ها (DIP)
IOC Container چیست؟

Built-in .Net Core IOC Container (8 قسمت)

معرفی IOC Container موجود در DotNet Core
استفاده از IOC Container موجود در DotNet Core
طول عمر سرویس ها (Service Lifetimes)
طول عمر Transient
طول عمر Scoped
طول عمر Singleton
Resolving Services From Main
Service Registration Methods

آموزش معماری پیازی (Onion Architecture) (5 قسمت)

Onion Architecture Introduction
لایه دامین (Domain Layer)
لایه اپلیکیشن (Application Layer)
لایه کاربری (Presentation Layer)
لایه زیرساخت (Infrastructure Layer)

پروژه عملی Master Blogger - پیاده سازی بخش Article Category (13 قسمت)

معرفی بخش
پیاده سازی لایه های Domain و Application
پیاده سازی Repository
افزودن لایه Presentation
پیاده سازی لایه Infrastructure.Core
ایجاد Database پروژه
List Article Categories
Create Article Categories
Edit Article Categories
Change Status Article Categories
Domain Service & Validation
ساخت Exception های اختصاصی
ایجاد Github Repository

پروژه عملی Master Blogger - پیاده سازی بخش Article (11 قسمت)

معرفی بخش
پیاده سازی لایه های Domain و Application
پیاده سازی Repository و Mapping
ساخت دیتابیس
List Articles
Create Articles
Edit Article
Remove & Activate Article
Domain Service & Validation
پیاده سازی User Interface
پیاده سازی User Interface - Article Details

پروژه عملی Master Blogger - پیاده سازی بخش Comment (8 قسمت)

معرفی بخش
پیاده سازی لایه های Domain & Application
پیاده سازی Repository و Mapping
ساخت دیتابیس
Add Comment
List Comments
Confirm & Cancel Comments
نمایش Comment ها در سایت

پروژه عملی Master Blogger - بهینه سازی طراحی (4 قسمت)

معرفی بخش
Domain Refactoring
Generic Repository
Unit Of Work

سورس کدهای پروژه Master Blogger (0 قسمت)

Test Doubles (Mock, Stub, Spy, Dummy) - Service Layer (13 قسمت)

معرفی بخش
معماری پروژه Course Management
تست های لایه Repository
تست بخش های Get و GetById
تست بخش Delete
Dependend-On Component
Testing Indirect Output
تست لایه سرویس (Course Service)
ابزار های Faker و Tynamix
تست Edit Course
تست GetAll و Delete Course
Test Doubles
جمع بندی این بخش

Integration Testing - تکمیل لایه API پروژه Course (15 قسمت)

معرفی بخش
Integration Tests دیتابیس - متد GetAll
Integration Tests دیتابیس - متد Create
Refactoring Database Fixture
افزودن اطلاعات تستی - Seed Data
Integration Tests دیتابیس - متد GetByName
قانون Single Assertion Per Test
Integration Tests دیتابیس - متد Delete, GetById
مروری بر تست های دیبابیس
نوشتن Unit Test برای لایه API
نوشتن Unit Test برای لایه API - بخش دوم
نوشتن Integration Test برای لایه API
نوشتن Integration Test برای لایه API - متد Create
نوشتن Integration Test برای لایه API - متد Create و Delete
جمع بندی این بخش

BDD چیست؟ آشنایی با Behavior-Driven Development (7 قسمت)

معرفی بخش
بررسی معایب توسعه نرم افزار به روش سنتی
توسعه نرم افزار به روش BDD
تعریف یک پروژه موفق از نگاه BDD
Executable Specification - حرکت بر بال BDD
معرفی ابزارهای BDD در زبان های برنامه نویسی
جمع بندی این بخش

آموزش فریمورک BDDfy (12 قسمت)

معرفی بخش
تعریف اولین سناریو دستگاه ATM
پیاده سازی BDDfy در اولین سناریو
آموزش BDDfy Fluent API
گزارشگیری با فرمت HTML از نتایج BDDfy
پیاده سازی دومین سناریو ATM با BDDfy
Refactoring تست های BDDfy
پیاده سازی سومین سناریو ATM با BDDfy
بررسی روش تست نویسی سیستم Ocelot
Customize کردن گزارشات BDDfy
Customize کردن CSS و Javascript گزارشات BDDfy
جمع بندی این بخش

Acceptance Testing - پیاده سازی تست های E2E (8 قسمت)

معرفی بخش
مقایسه Acceptance Testing با Integration Testing
تولید سناریو ساخته شدن یک Course
اجرای اپلیکیشن های .NET Core در محیط تست
نوشتن تست های CreateCourse با BDDFy
نوشتن تست های CreateaCourse با BDDfy - بخش دوم
Refactor کردن تست های نوشته شده
جمع بندی این بخش

آموزش فریمورک Specflow (10 قسمت)

معرفی ابزار Specflow
آموزش راه اندازی و کار با Specflow در پروژه
آموزش کار را Scenario Context در Specflow
آموزش ابزار آنلاین سناریو نویسی در Specflow
آموزش مدیریت متغییرها در Specflow
مثال Account Management و پیاده سازی آن در Specflow
آموزش کار با Table در Specflow
آموزش کار با Hook های گوناگون Specflow
آموزش کار با Feature Context در Specflow
جمع بندی این بخش

پروژه عملی - پیاده سازی سناریو Define Inventory (10 قسمت)

معرفی پروژه Inventory Management
تعریف اولین سناریو پروژه - Define Inventory
نوشتن Unit Test لایه Domain مربوط به سناریو
نوشتن Unit Test لایه Application مربوط به سناریو
نوشتن Unit Test لایه Web API مربوط به سناریو
راه اندازی دیتابیس پروژه
نوشتن Integration Testing لایه سناریو
ویژگی Xunit Traits و ابزارهای آن
پیاده سازی تست E2E تعریف شده در سناریو
جمع بندی این بخش

اطلاعات دوره آموزشی


  • مدرس دوره: حسین عباس آبادی
  • طول دوره: 24:8:7 (ساعت)
  • تعداد ویدیوها: 165
  • آخرین بروز رسانی: 1402/10/07
  • تعداد نظرات: 12
  • اطلاع رسانی آپدیت ها: کانال تلگرام
  • به اتمام رسیده

پیش نیازهای دوره

تجهیزات و استاندارد های ضبط دوره ها

یکی از مهمترین مواردی که برای تهیه یک دوره آموزشی حائز اهمیت است، کیفیت و رعایت استانداردهای ضبط دوره است. به طوری که کیفیت صدا و تصویر ویدیوهای آموزشی و همچنین رعایت استانداردهای ضبط، باید در بهترین حد و مطلوب باشد. برای این منظور، موسسه آموزشی آتریا با بهره گیری از بهترین تجهیزات ضبط صدا و تصویر و رعایت استانداردهای آموزشی تلاش کرده است تا بسته های آموزشی با بهترین کیفیت را در اختیار دانشجویان عزیز قرار دهد. در زیر به بخشی از این تجهیزات و استانداردها اشاره می کنیم:

میکروفون ضبط صدا

آموزش asp.net core 5

مسلم است که یکی از مهمترین ویژگی های هر ویدیو آموزشی، کیفیت صدای ویدیو است که باید بدون نویز، واضح و شفاف باشد. کیفیت صدای فوق العاده، شفافیت و صدای بدون نویز، از اصلی ترین ویژگی های میکروفون RODE NT-USB است که موسسه آموزش آتریا از آن برای ضبط دوره ها استفاده می کند. اگر ویدیوهای رایگان دوره را مشاهده کرده باشید، به وضوح کیفیت صدای استاد را احساس می کنید.

تصویر مدرس در کنار ویدیوها

آموزش asp.net core 5

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

کیفیت 1080p Full HD ویدیوها

آموزش asp.net core 5

از آنجا که مهمترین دغدغه ما در تولید آموزش ها، کیفیت مطلوب است، تمام ویدیوهای موسسه آموزشی آتریا با بالاترین کیفیت یعنی 1080p ضبط شده اند. کیفیت بالای تصویر بسته ها باعث می شود تا شما کدها و اسلایدهای مورد استفاده مدرس را بهتر ببیند.

استاندارد زمانی ویدیوهای آموزشی

یکی از استانداردهای ویدیوهای آموزشی، توجه به مدت زمان آن ویدیو است. به نحوی که ویدیوها دارای مدت زمان بین 5 تا 20 دقیقه باشند تا منجر به خستگی دانشجو نگردد. برای این منظور سعی شده است تا حتی الامکان این استاندارد در ضبط ویدیوهای آموزشی رعایت شده باشد.

جامعیت دوره ها

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

سوالات متداول

آیا تست نرم افزار همان تست اتوماتیک نرم افزار است؟

تست نرم افزار می تواند به صورت دستی هم انجام شود اما تست های دستی زمان بر و شکننده هستند و در طول زمان باعث به وجود آمدن مشکلات Maintenance برای تیم توسعه خواهند شد.

 هدف از این دوره آموزش تست اتوماتیک نرم افزار و Automate کردن فرایند تست و استقرار یک نرم افزار است.

آیا این دوره عملی و پروژه محور است ؟

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

آیا تست نرم افزار همان Unit Testing است؟

Unit Testing تنها یکی از انواع تست نرم افزار است که شما در این دوره خواهید آموخت. شما علاوه بر Unit Testing، مباحث Integration Testing  و Acceptance Testing را نیز به طور کامل و جامع یاد میگیرید.

همچنین در این دوره تکنیک های Test-Driven Development و Behavior-Driven Development نیز تدریس شده است.

پلن های قیمتی

بسته پایه

  • دریافت به روزرسانی های دوره آموزشی
  • پشتیبانی از طریق واتساپ و تلفن
  • 3 ساعت خصوصی آنلاین جهت رفع اشکالات
  • 1,580,000 تومان
افزودن به سبد خرید

بسته ویژه

  • دریافت به روزرسانی های دوره آموزشی
  • پشتیبانی از طریق واتساپ و تلفن
  • 3 ساعت خصوصی آنلاین جهت رفع اشکالات
  • 3,500,000 تومان
افزودن به سبد خرید

دانشجویان این دوره، دوره های زیر را هم شرکت کرده اند

نظرات خود را به اشتراک بگذارید
آکادمی آتریا
نظرات (12)
فاطمی
1401/05/22

با سلام. قبل از هر چیز خواستم تشکر کنم بابت دوره های کامل شما. من دو دوره از شما تهیه کردم یکی دوره تست نرم افزار و یکی دوره ی .net core و هر دو اموزش ابرومندانه! ای است برای اینکه بتوانیم با این اموزش کار ابرومندانه ارائه بدیم و جای ابرومندانه کار پیدا کنیم! و می خوام اعتراف کنم که در هر دو مورد هم یک کلاهی سرم رفت اول رفتم اموزش های ارزان جای دیگه را خریدم که اصلا جای یک کار حرفه ای را نمی گرفت!! و اخرش اومدم اینجا خرید کردم. که الحمدلله راضی هستم. یک سوال دارم ممنون می شم پاسخ بفرمایید. می خوام بدونم ایا نوشتن acceptance test کافی است؟ با توجه به اینکه ما در این مرحله داریم کل فرایند را تست می کنیم ایا لازم است حتما برای لایه های دیگر هم تست یونیت و اینتگریت نوشته شود؟ با تشکر

مدیر آموزش
1401/05/22

باسلام و احترام. ممنون از لطف شما. فقط acceptance test نوشتن صحت یا عدم کارکرد سیستم را برای شما آشکار خواهد کرد، اما اگر خطایی رخ دهد، باگی تولید شده باشید، کجا میخواهید دنبالش بگردید؟ تست های لایه پایین تر مانند Unit Testing و Integration Testing به شما قابلیت Defect Localization می دهند. در واقع به شما کمک میکنند تا باگ رخ داده را در سریعترین زمان ممکن پیدا کنید.

محمدجواد جهان بین
1399/12/25

درود برشما دوره جذاب و جالبیه و بسیار شیک و تمیزه توضیحات. تشکر از مدرس فوق العاده اش. دوتا سوال داشتم: آیا دوره تموم شده؟ مشخص هست کی تموم میشه؟ در فصل 11 قسمت چهارم و سوم جابجا شده.

مدیر آموزش
1399/12/25

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

باقری
1399/12/22

سلام ، من قصد دارم این دوره را خریداری کنم فقط سوالم اینه که قسمت های TDD,BDD به صورت کامل بیان شده ؟؟؟

مدیر آموزش
1399/12/22

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

آرمان
1399/12/20

سلام استاد تعداد ویدیو ها اضافه شده اما چیزی برای دانلود اضافه نشده !

مدیر آموزش
1399/12/20

باسلام و احترام. اگر در سرفصل دقت بفرمایید، بخش های مربوط به پروژه Master Blogger اضافه شده است.

عرفان
1399/12/18

آیا قسمت معماری پیازی این آموزش کامل هست و یا باید آموزش پیازی رو هم جداگونه تهیه کنیم ؟

مدیر آموزش
1399/12/18

باسلام و احترام. بخش معماری پیاز در این دوره به صورت کامل تدریس شده و پس از تهیه این دوره، نیازی به تهیه آموزش معماری پیاز نیست.

javadrezvani
1399/08/21

بسیار عالی هست آموزش سر فصل های مهم وکلیدی ارزشمند تحسین برانگیز واقعا خسته نباشی استاد ان شاءالله ....موفق باشی

مدیر آموزش
1399/08/21

خیلی متشکر، نظر لطف شماست مهندس