آموزش تست نرم افزار TDD و BDD
مشاهده نمونه ویدیوهای تدریس دوره
جهت مشاهده کلیک کنیدتوضیحات دوره
تست نرم افزار را میتوان یکی از زیر مجموعههای مبحث کیفیت نرم افزار با نام “تضمین کیفیت” در نظر گرفت. تست نرم افزار به دنبال خطایابی و اطمینان از صحت عملکرد محصول نرم افزاری قبل از تحویل به مشتری است که حقیقتا یکی از مهمترین مراحل در فرایند توسعه است که با گذشت زمان از حالت دستی (Manual Testing) به حالت اتوماتیک (Automated Testing) تغییر رویه داده است. تست نرم افزار در دنیای امروز به سه قسمت اصلی تست واحد (Unit Testing)، تست یکپارچگی (Integration Testing) و تست پذیرش (Acceptance or E2E Testing) تقسیم می شود که مجموعه آنها هرم تست ( Test Pyramid) را تشکیل می دهند. در این دوره هرم تست و مفاهیم آن و آنچه از آن استنباط می شود را آموزش می دهیم.
همانطور که گفته شد، در دنیای امروز دیگر برای نرم افزارها تست به صورت دستی انجام نمی گیرد زیرا تست دستی یا همان Manual Testing بسیار پر هزینه است و زمان را هدر می دهد. از طرفی تست دستی دقیق نیست و ممکن است تست موارد مهمی را فراموش کنیم که موجب بروز Production Bug خواهد شد. بنابراین، انجام عملیات تست نرم افزار به صورت اتوماتیک و از طریق کدهایی که فرایند تست را در بازه های زمانی کوتاه انجام می دهند، امری اجتناب ناپذیر است. در این دوره ما فرآیند تست نرم افزار را به صورت اتوماتیک و از طریق فریمورک های تست نویسی مانند XUnit آموزش می دهیم. تست ها به 3 سطح اصلی Unit Testing, Integration Testing و Acceptance Testing تقسیم می شوند که در این دوره آموزشی هر 3 این موارد به همراه تمام جزئیات آموزش داده شده است. حال به شرح هر کدام از این موارد می پردازیم:Unit Testing
به تست هایی که یک کامپوننت را در محیط Isolation و فارق از وابستگی های آن ها تست می کنند، Unit Test گفته می شود. ما برای همه اجزای سیستم Unit Test می نویسیم تا از عملکرد هر کامپوننت به تنهایی آگاه شویم. بیشتر تست های سیستم را Unit Test ها تشکیل می دهند زیرا هزینه انجام آنها بسیار پایین است، سریع انجام می شوند و کارایی فوق العاده بالایی در تضمین کیفیت کدهای سیستم دارند. در این دوره آموزشی در بخش تست های Unit تمام ابزارهای مورد نیاز برای انجام این دسته از تست ها معرفی شده و از این ابزارها به صورت عملی در انواع تست ها استفاده شده است.
Integration Testing
زمانی که بخواهیم یک کامپوننت را به همراه وابستگی های آن تست کنیم تا از صحت عملکرد آن کامپوننت در ارتباط با دیگر کامپوننت های وابسته به آن اطمینان حاصل کنیم از Integration Test استفاده می کنیم. این تست ها در حقیقت چند بخش سیستم را به چالش می کشند و انتظارات ما را از آنها ارزیابی می کنند. انجام Integration Testing ابزارهای خاص خود را دارد که هر کدام از این ابزارها عملیات گوناگونی را برای اجرای تست ها در این سطح انجام می دهند.
(E2E Testing)
پس از سطوح Unit و Integration برای اطمینان از کارآمد بودن نرم افزار برای مشتری نهایی، باید مرحله Acceptance Testing یا همان End-2-End 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 پیش می بریم.
Behavior-Driven Development (BDD)
Behavior Driven Development یا به اختصار BDD با تمرکز روی نیاز مشتری تلاش می کند تا نرم افزاری را که نیاز او را برطرف سازد تولید کرده و تحویل دهد. در BDD ما با نوشتن سناریوهایی که باید در نرم افزار پیاده سازی شوند، ابتدا آنها را تبدیل به یک Failing Test می کنیم و سپس با حرکت بر روی چرخه TDD آن سناریو را پیاده سازی می کنیم. ابزارهای فوق العاده کاربردی برای پیاده سازی BDD وجود دارند که تست ها را به فرمتی که همه افراد تیم حتی کسانی که از برنامه نویسی آشنایی ندارند نیز، خوانا و قابل فهم می کند. در دوره آموزشی تست نرم افزار TDD و BDD ما این ابزارها را آموزش می دهیم و آنها را در پروژه پیاده سازی می کنیم.
سرفصل دوره
معرفی دوره آموزش تست نرم افزار (1 قسمت)
آموزش مفاهیم تست و دلیل نوشتن تست های اتوماتیک (10 قسمت)
Test Driven Development (توسعه تست محور) (16 قسمت)
انواع Setup Fixture در XUnit (8 قسمت)
اصل معکوس سازی وابستگی (Dependency Inversion Principle) (6 قسمت)
Built-in .Net Core IOC Container (8 قسمت)
آموزش معماری پیازی (Onion Architecture) (5 قسمت)
پروژه عملی Master Blogger - پیاده سازی بخش Article Category (13 قسمت)
پروژه عملی Master Blogger - پیاده سازی بخش Article (11 قسمت)
پروژه عملی Master Blogger - پیاده سازی بخش Comment (8 قسمت)
پروژه عملی Master Blogger - بهینه سازی طراحی (4 قسمت)
سورس کدهای پروژه Master Blogger (0 قسمت)
Test Doubles (Mock, Stub, Spy, Dummy) - Service Layer (13 قسمت)
Integration Testing - تکمیل لایه API پروژه Course (15 قسمت)
BDD چیست؟ آشنایی با Behavior-Driven Development (7 قسمت)
آموزش فریمورک BDDfy (12 قسمت)
Acceptance Testing - پیاده سازی تست های E2E (8 قسمت)
آموزش فریمورک Specflow (10 قسمت)
پروژه عملی - پیاده سازی سناریو Define Inventory (10 قسمت)
اطلاعات دوره آموزشی
- مدرس دوره: حسین عباس آبادی
- طول دوره: 24:8:7 (ساعت)
- تعداد ویدیوها: 165
- آخرین بروز رسانی: 1402/10/07
- تعداد نظرات: 12
- اطلاع رسانی آپدیت ها: کانال تلگرام
- به اتمام رسیده
پیش نیازهای دوره
- دوره آموزش جامع و کاربردی سی شارپ (#C)
- آشنایی با برنامه نویسی تحت وب با استفاده از ASP.NET Core. (برای پیاده سازی یک سری از مثال ها از ASP.NET Core استفاده شده است.)
تجهیزات و استاندارد های ضبط دوره ها
یکی از مهمترین مواردی که برای تهیه یک دوره آموزشی حائز اهمیت است، کیفیت و رعایت استانداردهای ضبط دوره است. به طوری که کیفیت صدا و تصویر ویدیوهای آموزشی و همچنین رعایت استانداردهای ضبط، باید در بهترین حد و مطلوب باشد. برای این منظور، موسسه آموزشی آتریا با بهره گیری از بهترین تجهیزات ضبط صدا و تصویر و رعایت استانداردهای آموزشی تلاش کرده است تا بسته های آموزشی با بهترین کیفیت را در اختیار دانشجویان عزیز قرار دهد. در زیر به بخشی از این تجهیزات و استانداردها اشاره می کنیم:
میکروفون ضبط صدا
مسلم است که یکی از مهمترین ویژگی های هر ویدیو آموزشی، کیفیت صدای ویدیو است که باید بدون نویز، واضح و شفاف باشد. کیفیت صدای فوق العاده، شفافیت و صدای بدون نویز، از اصلی ترین ویژگی های میکروفون RODE NT-USB است که موسسه آموزش آتریا از آن برای ضبط دوره ها استفاده می کند. اگر ویدیوهای رایگان دوره را مشاهده کرده باشید، به وضوح کیفیت صدای استاد را احساس می کنید.
تصویر مدرس در کنار ویدیوها
یکی از مشکلات رایج بیشتر پکیج های آموزش، خستگی ناشی از یکنواختی روند ویدیو آموزشی است چرا که اکثر این ویدیوها از پویایی لازم برخوردار نیستند. این خستگی باعث می شود که راندمان یادگیری پایین آمده و در بعضی اوقات دانشجویان دوره تا انتها دنبال نکنند. برای برطرف کردن این مشکل، دوره های آموزشی به گونه ای ضبط شده است که دانشجویان می توانند تصویر دسکتاپ و مدرس را به صورت همزمان مشاهده کنند، به طوری که ویدیو آموزشی، تداعی کننده کلاس حضوری باشد. بنابراین، جدا از تصویر دسکتاپ، تصویر مدرس نیز با استفاده از دوربین Microsoft ضبط شده است.
کیفیت 1080p Full HD ویدیوها
از آنجا که مهمترین دغدغه ما در تولید آموزش ها، کیفیت مطلوب است، تمام ویدیوهای موسسه آموزشی آتریا با بالاترین کیفیت یعنی 1080p ضبط شده اند. کیفیت بالای تصویر بسته ها باعث می شود تا شما کدها و اسلایدهای مورد استفاده مدرس را بهتر ببیند.
استاندارد زمانی ویدیوهای آموزشی
یکی از استانداردهای ویدیوهای آموزشی، توجه به مدت زمان آن ویدیو است. به نحوی که ویدیوها دارای مدت زمان بین 5 تا 20 دقیقه باشند تا منجر به خستگی دانشجو نگردد. برای این منظور سعی شده است تا حتی الامکان این استاندارد در ضبط ویدیوهای آموزشی رعایت شده باشد.
جامعیت دوره ها
یکی از ویژگی های اساسی بسته های موسسه آموزشی آتریا، جامعیت آنها است. جامعیت به این معنا که با تهیه بسته آموزشی، تمام مباحث مربوط در آن زمینه را به خوبی فراگرفته و دیگر نیازی به منابع جانبی نداشته باشید. برای این منظور مدرسین مجموعه تلاش کرده اند تا دوره های آموزشی را به صورت کاربردی و پروژه محور ضبط کنند، به طوری که دانشجویان پس از یادگیری، توانایی پیاده سازی و راه اندازی پروژه های واقعی را داشته باشند. بنابراین رویکرد ما در تولید بسته ها، آماده سازی دانشجویان برای ورود به بازار کار و یا ارتقاء جایگاه شغلی ایشان است.
سوالات متداول
آیا تست نرم افزار همان تست اتوماتیک نرم افزار است؟
آیا این دوره عملی و پروژه محور است ؟
آیا تست نرم افزار همان Unit Testing است؟
پلن های قیمتی
بسته پایه
- دریافت به روزرسانی های دوره آموزشی
- پشتیبانی از طریق واتساپ و تلفن
- 3 ساعت خصوصی آنلاین جهت رفع اشکالات
- 1,580,000 تومان
بسته ویژه
- دریافت به روزرسانی های دوره آموزشی
- پشتیبانی از طریق واتساپ و تلفن
- 3 ساعت خصوصی آنلاین جهت رفع اشکالات
- 3,500,000 تومان
با سلام. قبل از هر چیز خواستم تشکر کنم بابت دوره های کامل شما. من دو دوره از شما تهیه کردم یکی دوره تست نرم افزار و یکی دوره ی .net core و هر دو اموزش ابرومندانه! ای است برای اینکه بتوانیم با این اموزش کار ابرومندانه ارائه بدیم و جای ابرومندانه کار پیدا کنیم! و می خوام اعتراف کنم که در هر دو مورد هم یک کلاهی سرم رفت اول رفتم اموزش های ارزان جای دیگه را خریدم که اصلا جای یک کار حرفه ای را نمی گرفت!! و اخرش اومدم اینجا خرید کردم. که الحمدلله راضی هستم. یک سوال دارم ممنون می شم پاسخ بفرمایید. می خوام بدونم ایا نوشتن acceptance test کافی است؟ با توجه به اینکه ما در این مرحله داریم کل فرایند را تست می کنیم ایا لازم است حتما برای لایه های دیگر هم تست یونیت و اینتگریت نوشته شود؟ با تشکر
باسلام و احترام. ممنون از لطف شما. فقط acceptance test نوشتن صحت یا عدم کارکرد سیستم را برای شما آشکار خواهد کرد، اما اگر خطایی رخ دهد، باگی تولید شده باشید، کجا میخواهید دنبالش بگردید؟ تست های لایه پایین تر مانند Unit Testing و Integration Testing به شما قابلیت Defect Localization می دهند. در واقع به شما کمک میکنند تا باگ رخ داده را در سریعترین زمان ممکن پیدا کنید.
درود برشما دوره جذاب و جالبیه و بسیار شیک و تمیزه توضیحات. تشکر از مدرس فوق العاده اش. دوتا سوال داشتم: آیا دوره تموم شده؟ مشخص هست کی تموم میشه؟ در فصل 11 قسمت چهارم و سوم جابجا شده.
با سلام و احترام. ممنون از لطف شما. خیلی خوشحالیم که دوره مورد پسند و تایید شما قرار گرفته است. بخش پروژه دوره هنوز درحال ضبط است و انشاءالله به زودی آپلود خواهد شد. مورد جابجایی را هم پیگیری خواهیم کرد. باتشکر
سلام ، من قصد دارم این دوره را خریداری کنم فقط سوالم اینه که قسمت های TDD,BDD به صورت کامل بیان شده ؟؟؟
باسلام و احترام. هدف اصلی از این دوره، آموزش TDD و BDD می باشد. بنابراین، مباحث مربوط به آنها به طور کامل و دقیق به همراه مثال های کاربردی و پروژه عملی تدریس شده است.
سلام استاد تعداد ویدیو ها اضافه شده اما چیزی برای دانلود اضافه نشده !
باسلام و احترام. اگر در سرفصل دقت بفرمایید، بخش های مربوط به پروژه Master Blogger اضافه شده است.
آیا قسمت معماری پیازی این آموزش کامل هست و یا باید آموزش پیازی رو هم جداگونه تهیه کنیم ؟
باسلام و احترام. بخش معماری پیاز در این دوره به صورت کامل تدریس شده و پس از تهیه این دوره، نیازی به تهیه آموزش معماری پیاز نیست.
بسیار عالی هست آموزش سر فصل های مهم وکلیدی ارزشمند تحسین برانگیز واقعا خسته نباشی استاد ان شاءالله ....موفق باشی
خیلی متشکر، نظر لطف شماست مهندس