این دوره به شما میآموزد که چگونه با رشد و توسعه کد تولید خود، تستهای قابل نگهداری و پایداری را توسعه دهید.
آنچه یاد خواهید گرفت:
از دانشی که این دوره به شما میدهد استفاده کنید و به دست آورید. مجهز به تئوری و مهارتهای عملی برای شروع ساخت مجموعههای آزمایشی قابل مدیریت برای عمر محصول خود. در این دوره آموزشی، Writing Highly Maintainable Unit Tests، تکنیکهای پیشرفته در تست واحد را یاد خواهید گرفت. ابتدا، نحوه تست کردن کد تولید را در وهله اول بررسی خواهید کرد. در مرحله بعد، خواهید فهمید که چگونه میتوانید آزمایشها را از تغییرات پیادهسازی آینده نجات دهید. سپس، یاد خواهید گرفت که چگونه از تقریباً همه کدهای تکراری در تستها جلوگیری کنید. در نهایت، شما کتابخانههای آزمایشی قابل استفاده مجدد را طراحی خواهید کرد. در پایان این دوره، درک عمیقی را پردازش خواهید کرد که تستهای شما را از بسیاری جهات بهتر میکند.
نمونه ویدیوی آموزشی ( زیرنویسها جدا از ویدیو است و میتوانید آنرا نمایش ندهید ) :
[ENGLISH]
01 Course Overview [2mins]
01-01 Course Overview [2mins]
02 Understanding Provable Code Correctness [41mins]
02-01 Putting Tests into the Frame [4mins]
02-02 Version Check [0mins]
02-03 What Follows in This Course [7mins]
02-04 Proving Correctness of Code [8mins]
02-05 Testing Correctness at Run Time [6mins]
02-06 Inventing Automated Tests [7mins]
02-07 Inventing the Test Runner [7mins]
02-08 Summary [2mins]
03 The Importance of Knowing What to Test [41mins]
03-01 The Problem of Choosing What to Test [4mins]
03-02 Changing the Class to Support State Testing [6mins]
03-03 Implementing a State Test [5mins]
03-04 On Multiple Assertions in One Unit Test [6mins]
03-05 Completing State Tests [2mins]
03-06 Implementing an Interaction Test Through Derivation [6mins]
03-07 Implementing an Interaction Test Through Interface [5mins]
03-08 Understanding Regression [5mins]
03-09 Summary [2mins]
04 The Pros and Cons of White-Box Testing [42mins]
04-01 Applying Branch Coverage Strategy [7mins]
04-02 Assessing Usefulness of Automatic Mocks [6mins]
04-03 Assessing Usefulness of Manual Mocks [4mins]
04-04 Assessing Maintainability of Automatic vs. Manual Mocks [6mins]
04-05 Leaning on the Compiler and Automatic Mocks [6mins]
04-06 Example- Abstracting Time [10mins]
04-07 Summary [3mins]
05 Modeling Class Dependencies in Tests [42mins]
05-01 Stubbing vs. Mocking Dependencies [5mins]
05-02 Letting Dependencies Grow Through Refactoring [6mins]
05-03 Evaluating Interaction Tests [4mins]
05-04 Understanding Lifetime of a Dependency [8mins]
05-05 Avoiding Unnecessary Unit Tests [7mins]
05-06 Testing Temporal Coupling Between Method Calls [9mins]
05-07 Summary [3mins]
06 Gaining Resilience by Testing Against Abstract Data Types [39mins]
06-01 Introducing Abstract Data Types [6mins]
06-02 Writing Unit Tests Against the Abstract Data Type [6mins]
06-03 Replacing Entire Concrete Class [4mins]
06-04 Varying Implementation of an Abstract Data Type [4mins]
06-05 Extending the Abstract Data Type [5mins]
06-06 Investigating Negative Test Cases [6mins]
06-07 Inventing Preconditions [6mins]
06-08 Summary [2mins]
07 Testing Against Interfaces to Simplify Maintenance [40mins]
07-01 Understanding Possible Options When Deriving a Class [7mins]
07-02 Introducing Base and Derived Test Classes [6mins]
07-03 When Implementation Affects Abstraction [4mins]
07-04 Separating Functional from Non-functional Requirements [4mins]
07-05 Completing the Definition of Abstract Data Type [3mins]
07-06 Inventing the Abstract-Test-Driven Development [8mins]
07-07 Interface Tests in Light of the Liskov Substitution Principle [6mins]
07-08 Summary [2mins]
08 Implementing Abstract Interfaces TDD Style [40mins]
08-01 Implementing Inheritance [2mins]
08-02 Using Abstract Unit Tests in TDD [4mins]
08-03 TDD-style Interface Implementation [6mins]
08-04 Applying TDD to Discover Missing Tests [5mins]
08-05 A Word About Naming Classes and Interfaces [3mins]
08-06 Refactoring a Class Covered by Abstract Tests [4mins]
08-07 Writing Tests Against Abstract List [10mins]
08-08 Discussing the Benefits of Base Tests Class [3mins]
08-09 Summary [3mins]
09 Testing Compliance to Design Principles [41mins]
09-01 Inventing Design Pattern Tests [6mins]
09-02 Implementing the Design Pattern Tests [3mins]
09-03 Testing All Aspects of a Design Pattern [5mins]
09-04 Defining Value-typed Semantic [4mins]
09-05 Designing the Equality Tests [4mins]
09-06 Defining Equality Testing Rules [5mins]
09-07 Implementing Equality Testing Library [6mins]
09-08 Using the Equality Testing Library [5mins]
09-09 Summary [3mins]
10 Design by Contract from Testing Perspective- Binding Theory to Practice [49mins]
10-01 Discovering Impossible Tests [3mins]
10-02 Understanding Error Conditions [4mins]
10-03 Division of Exceptions [4mins]
10-04 Defining Preconditions and Postconditions [5mins]
10-05 Avoiding Condition Checks with Contracts [4mins]
10-06 Inheriting Contracts [4mins]
10-07 Applying Contracts to a Production Class [6mins]
10-08 Asserting the Preconditions [3mins]
10-09 Implementing Contracts in Production Code [5mins]
10-10 Removing Superfluous Unit Tests [6mins]
10-11 Summary [3mins]
10-12 Course Summary [2mins]
[فارسی]
01 بررسی اجمالی دوره [2 دقیقه]
01-01 بررسی اجمالی دوره [2 دقیقه]
02 درک درستی کد قابل اثبات [41 دقیقه]
02-01 قرار دادن تستها در قاب [4 دقیقه]
02-02 بررسی نسخه [0 دقیقه]
02-03 آنچه در این دوره دنبال میشود [7 دقیقه]
02-04 اثبات درستی کد [8 دقیقه]
02-05 تست صحت در زمان اجرا [6 دقیقه]
02-06 اختراع تستهای خودکار [7 دقیقه]
02-07 اختراع دونده آزمون [7 دقیقه]
02-08 خلاصه [2 دقیقه]
03 اهمیت دانستن اینکه چه چیزی را تست کنید [41 دقیقه]
03-01 مشکل انتخاب چه چیزی برای آزمایش [4 دقیقه]
03-02 تغییر کلاس برای پشتیبانی از تست حالت [6 دقیقه]
03-03 اجرای آزمون دولتی [5 دقیقه]
03-04 در مورد ادعاهای متعدد در آزمون یک واحد [6 دقیقه]
03-05 تکمیل آزمونهای دولتی [2 دقیقه]
03-06 اجرای تست تعامل از طریق مشتق [6 دقیقه]
03-07 اجرای تست تعامل از طریق رابط [5 دقیقه]
03-08 درک رگرسیون [5 دقیقه]
03-09 خلاصه [2 دقیقه]
04 مزایا و معایب تست جعبه سفید [42 دقیقه]
04-01 اعمال استراتژی پوشش شعبه [7 دقیقه]
04-02 ارزیابی سودمندی مسخره کردن خودکار [6 دقیقه]
04-03 ارزیابی سودمندی تمسخرهای دستی [4 دقیقه]
04-04 ارزیابی قابلیت نگهداری مدلهای خودکار در مقابل دستی [6 دقیقه]
04-05 تکیه بر کامپایلر و ماکهای خودکار [6 دقیقه]
04-06 مثال- زمان انتزاع [10 دقیقه]
04-07 خلاصه [3 دقیقه]
05 مدلسازی وابستگیهای کلاس در آزمونها [42 دقیقه]
05-01 وابستگیها در مقابل تمسخر [5 دقیقه]
05-02 اجازه دادن به رشد وابستگیها از طریق Refactoring [6 دقیقه]
05-03 ارزیابی تستهای تعامل [4 دقیقه]
05-04 درک طول عمر یک وابستگی [8 دقیقه]
05-05 اجتناب از تستهای غیر ضروری واحد [7 دقیقه]
05-06 آزمایش جفت موقت بین تماسهای روش [9 دقیقه]
05-07 خلاصه [3 دقیقه]
06 به دست آوردن انعطاف پذیری با آزمایش در برابر انواع دادههای انتزاعی [39 دقیقه]
06-01 معرفی انواع دادههای انتزاعی [6 دقیقه]
06-02 آزمونهای واحد نوشتن در برابر نوع داده انتزاعی [6 دقیقه]
06-03 جایگزینی کل کلاس بتن [4 دقیقه]
06-04 اجرای متفاوت یک نوع داده انتزاعی [4 دقیقه]
06-05 گسترش نوع داده انتزاعی [5 دقیقه]
06-06 بررسی موارد تست منفی [6 دقیقه]
06-07 اختراع پیش شرطها [6 دقیقه]
06-08 خلاصه [2 دقیقه]
07 تست در برابر رابطها برای سادهسازی تعمیر و نگهداری [40 دقیقه]
07-01 درک گزینههای ممکن هنگام استخراج کلاس [7 دقیقه]
07-02 معرفی کلاسهای آزمایشی پایه و مشتق شده [6 دقیقه]
07-03 وقتی پیادهسازی بر انتزاع تأثیر میگذارد [4 دقیقه]
07-04 جداسازی نیازهای کاربردی از غیر کاربردی [4 دقیقه]
07-05 تکمیل تعریف نوع داده انتزاعی [3 دقیقه]
07-06 ابداع توسعه آزمایش محور انتزاعی [8 دقیقه]
07-07 آزمایشات رابط در پرتو اصل جایگزینی لیسکوف [6 دقیقه]
07-08 خلاصه [2 دقیقه]
08 پیادهسازی رابطهای انتزاعی سبک TDD [40 دقیقه]
08-01 اجرای وراثت [2 دقیقه]
08-02 استفاده از آزمونهای واحد انتزاعی در TDD [4 دقیقه]
08-03 پیادهسازی رابط به سبک TDD [6 دقیقه]
08-04 استفاده از TDD برای کشف تستهای گمشده [5 دقیقه]
08-05 سخنی در مورد نامگذاری کلاسها و رابطها [3 دقیقه]
08-06 Refactoring یک کلاس تحت پوشش تستهای انتزاعی [4 دقیقه]
08-07 تستهای نوشتاری در برابر فهرست چکیده [10 دقیقه]
08-08 بحث در مورد مزایای کلاس تست پایه [3 دقیقه]
08-09 خلاصه [3 دقیقه]
09 آزمایش انطباق با اصول طراحی [41 دقیقه]
09-01 اختراع تستهای الگوی طراحی [6 دقیقه]
09-02 اجرای آزمایشهای الگوی طراحی [3 دقیقه]
09-03 تست تمام جنبههای یک الگوی طراحی [5 دقیقه]
09-04 تعریف معنایی نوع ارزش [4 دقیقه]
09-05 طراحی آزمونهای برابری [4 دقیقه]
09-06 تعریف قوانین تست برابری [5 دقیقه]
09-07 اجرای کتابخانه تست برابری [6 دقیقه]
09-08 استفاده از کتابخانه تست برابری [5 دقیقه]
09-09 خلاصه [3 دقیقه]
10 طراحی بر اساس قرارداد از دیدگاه آزمایش- تئوری الزام آور به عمل [49 دقیقه]
10-01 کشف آزمایشات غیرممکن [3 دقیقه]
10-02 درک شرایط خطا [4 دقیقه]
10-03 تقسیم استثناها [4 دقیقه]
10-04 تعریف پیش شرطها و پسشرطها [5 دقیقه]
10-05 اجتناب از بررسی شرایط با قراردادها [4 دقیقه]
10-06 قراردادهای ارثی [4 دقیقه]
10-07 اعمال قراردادها در یک کلاس تولید [6 دقیقه]
10-08 بیان پیش شرطها [3 دقیقه]
10-09 اجرای قراردادها در کد تولید [5 دقیقه]
10-10 حذف تستهای واحد اضافی [6 دقیقه]
10-11 خلاصه [3 دقیقه]
10-12 خلاصه دوره [2 دقیقه]
زوران هوروات مشاور اصلی در شرکت مشاوره کدینگ کلاه ایمنی، سخنران و نویسنده بیش از 100 مقاله، و مربی مستقل در پشته فناوری دات نت است. او اغلب در کنفرانسها و گروههای کاربری صحبت میکند، سبک توسعه شیگرا و شیوهها و تکنیکهای کدنویسی تمیز را ترویج میکند که طول عمر برنامههای تجاری پیچیده را بهبود میبخشد.