آموزش بهبود قابلیت آزمایش از طریق طراحی

Improving Testability Through Design

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

سرفصل ها و درس ها

ارزیابی قابلیت اطمینان تست ها Assessing Reliability of Tests

  • مقدمه Introduction

  • ملاحظات پوشش آزمایشات Tests Coverage Considerations

  • ارزش آزمونها The Value of Tests

  • کیفیت تست ها The Quality of Tests

  • معرفی برنامه آزمایشی Introducing the Demo Application

  • افزودن خصوصیات به یک کلاس Adding Properties to a Class

  • شناسایی برخی از مسائل طراحی Identifying Some of the Design Issues

  • خلاصه Summary

در حال توسعه یک برنامه به روش قدیمی Developing an Application the Old Way

  • آماده سازی آزمایشات برای خصوصیات Preparing Tests for Properties

  • آزمایش شرایط مرزی Testing Boundary Conditions

  • بهبود تست های شرایط مرزی Improving the Boundary Conditions Tests

  • تعریف حلقه Defining the Circle

  • افزودن عملیاتی به قاب Adding an Operation to the Frame

  • تکمیل آزمایشات برای عملیات Completing Tests for the Operation

  • تکمیل ویژگی Completing the Feature

  • افزودن آزمایشات بیشتر Adding More Tests

  • نکاتی درباره نحوه بهبود تست های واحدی Notes About how to Improve Unit Tests

  • افزودن ویژگی دیگر و تست های آن Adding Another Feature and Its Tests

  • اضافه کردن یک اجرای بتن از دایره Adding a Concrete Implementation of the Circle

  • با استفاده از برنامه آزمایشی Trying the Demo Application

  • افشای نقص Exposing the Defects

  • موردی که بهتر است مسخره نشود A Case When It's Better Not to Mock

  • در معرض نقص جدی Exposing a Serious Defect

  • خلاصه Summary

دستورالعمل های طراحی مجدد برای قابلیت اطمینان Guidelines of Redesign for Reliability

  • چگونه نقص معرفی می شود How Defects Are Introduced

  • چگونه از معرفی نقص جلوگیری کنیم How to Avoid Introducing Defects

  • چگونه آزمایشات را بهبود ببخشیم How to Improve Tests

  • فاکتور بندی منطق رایج از آزمون ها Factoring Out Common Logic From Tests

  • با استفاده از روش های معمول تست Using Common Testing Methods

  • جدا کردن کد آزمون کتابخانه از انواع بتن Decoupling Library Test Code From Concrete Types

  • تکمیل کتابخانه آزمایش برای خصوصیات اعشاری Completing the Testing Library for Decimal Properties

  • اجتناب از استثناهای مرجع پوچ Avoiding Null Reference Exceptions

  • معرفی سازنده غیر پیش فرض Introducing the Non-Default Constructor

  • برنامه ریزی برای آزمایش های سازنده Making Plans for Constructor Tests

  • تست های تک در برابر چند تست در هر روش آزمون Single vs. Multiple Tests per Test Method

  • طراحی کتابخانه برای آزمایش های سازنده Designing the Library for Constructor Tests

  • شروع اجرای کتابخانه Beginning the Library Implementation

  • افزودن ویژگی ها به کتابخانه Adding Features to the Library

  • تکمیل کتابخانه آزمایش سازنده Completing the Constructor Testing Library

  • ساخت کنکور سازنده Making the Constructor Test Pass

  • بحث درمورد آزمونهای اعلامی Discussion on Declarative Tests

  • بحث در مورد آزمایشهای انتقال باقی مانده Discussion on Remaining Transition Tests

  • خلاصه Summary

بیشترین بهره را از اشیا Im تغییرناپذیر Getting the Most Out of Immutable Objects

  • درباره ارزشها About Values

  • اشیاm تغییرناپذیر به عنوان مقادیر Immutable Objects as Values

  • نمونه اشیاm غیرقابل تغییر در C # Example of Immutable Objects in C#

  • اندازه گیری های بیشتر درباره عملکرد C # More Measurements on C# Performance

  • عملکرد مجموعه های تغییرناپذیر Performance of Immutable Collections

  • چه موقع باید مراقب مجموعه های غیرقابل تغییر باشید When to Be Careful With Immutable Collections

  • یک اشتباه مشترک با مجموعه های غیرقابل تغییر One Common Mistake With Immutable Collections

  • روش های مختلف برای اعتبار سنجی داده ها Different Ways to Validate Data

  • مشکلات هنگام اعتبارسنجی به بیش از یک راه Problems When Validating in More Than One Way

  • از اعتبار سنجی فقط در سازنده سود می برد Benefits From Validating Only in the Constructor

  • کیفیت معاملات عملیاتی بر روی اشیا Im غیرقابل تغییر Transactional Qualities of Operations on Immutable Objects

  • جلوگیری از پردازش سربار در عملیات غیرقابل تغییر Avoiding Processing Overhead in Immutable Operations

  • تغییرناپذیری و برابری Immutability and Equality

  • برابری در اشیا With با هویت Equality in Objects With Identity

  • نمونه ای از ساختار تغییرناپذیر Example of Immutable Structure

  • پیاده سازی ساختار تغییرناپذیر Immutable Structure Implementation

  • طراحی رابط دایره غیرقابل تغییر Designing the Immutable Circle Interface

  • پیاده سازی کلاس دایره غیرقابل تغییر Implementing the Immutable Circle Class

  • پیاده سازی کلاس قاب تغییرناپذیر Implementing the Immutable Frame Class

  • خلاصه Summary

بهبود تست های واحد Improving the Unit Tests

  • درباره انواع مختلف آزمایشات About Different Kinds of Tests

  • درباره تست های ادغام About Integration Tests

  • بررسی اجمالی انواع آزمایش شده Overview of Types That Will Be Tested

  • آماده سازی آزمایشات ساختار غیرقابل تغییر Preparing the Immutable Structure Tests

  • طراحی API آزمایشات غیرقابل تغییر Designing the Immutable Structure Tests API

  • شروع اجرای کتابخانه Beginning the Library Implementation

  • پیاده سازی روش Assert Implementing the Assert Method

  • تکمیل کتابخانه Completing the Library

  • مستطیل را امتحان کنید Testing the Rectangle

  • تکمیل آزمایشات سازه های غیرقابل تغییر Completing the Immutable Structures Tests

  • آزمایش سازنده دایره Testing the Circle Constructor

  • آزمایش هندسه Testing the Geometry

  • آزمایش روشهای تغییرناپذیر Testing the Immutable Methods

  • تهیه کتابخانه آزمایش برابری Preparing the Equality Testing Library

  • طراحی روشهای آزمون اعلامی Design of Declarative Testing Methods

  • روش ادعا Assert Method

  • موارد آزمون برای آزمایش روش های برابر Test Cases for Testing the Equals Methods

  • موارد آزمایشی برای اضافه بار اپراتور Test Cases for Operator Overloads

  • نمایش کتابخانه آزمایش برابری Demonstrating the Equality Testing Library

  • بحث Discussion

  • خلاصه Summary

عبور از مرزهای مسئولیت Crossing Responsibility Boundaries

  • تعریف مسئولیت های یک کلاس Defining Responsibilities of a Class

  • تعیین مرزهای مسئولیت پذیری Defining Responsibility Boundaries

  • انواع مختلف دو برابر آزمون Different Kinds of Test Doubles

  • شناسایی مسئولیت های کلاس دایره Identifying Responsibilities of the Circle Class

  • انتقال مسئولیت های شخص دیگری Moving Somebody Else's Responsibilities Out

  • شناسایی مشکلات Identifying the Problems

  • انگیزه پشت الگوی بازدید کننده Motivation Behind the Visitor Pattern

  • الگوی بازدید کننده The Visitor Pattern

  • شناسایی نقاط ضعف در الگوی بازدید کننده Identifying Weaknesses in the Visitor Pattern

  • پیاده سازی الگوی بازدید کننده اصلاح شده Modified Visitor Pattern Implementation

  • استفاده از الگوی بازدید کننده Applying the Visitor Pattern

  • آزمایش تعامل با بازدید کنندگان Testing the Interaction With Visitors

  • تکمیل تست های تعامل Completing the Interaction Tests

  • شناسایی مسئولیت های کلاس Frame Identifying Responsibilities of the Frame Class

  • جوانب مثبت و منفی تمسخر در تست های واحدی Pros and Cons of Mocking in Unit Tests

  • تست های یکپارچه سازی در جای آزمون های واحد با تقلب Integration Tests in Place of Unit Tests With Mocks

  • استفاده از دستنویس های رمزگذاری شده دستی Using Manually Coded Mocks

  • استفاده از بازدید کننده بتن به عنوان جاسوس Using Concrete Visitor as a Spy

  • استفاده از رابط روان برای ساده سازی تست های ادغام Using the Fluent Interface to Simplify Integration Tests

  • Mocking Framework vs Manual Mocks Mocking Framework vs. Manual Mocks

  • اجرای تست ها Running the Tests

  • خلاصه Summary

مدیریت عملیات در پایگاه داده و سیستم های خارجی Managing Operations on Database and External Systems

  • مشکل اتصال به سیستمهای خارجی The Problem of Connecting to External Systems

  • طراحی رابط کاربری واقعی Designing the Actual User Interface

  • لایه بندی برنامه Layering the Application

  • مشکلات ارجاع بین لایه ها Referencing Issues Between Layers

  • نمایش لایه نقشه برداری Demonstrating the Data Mapping Layer

  • سازمان نهایی لایه ها Final Organization of Layers

  • افزودن لایه دسترسی به داده ها به برنامه Adding a Data Access Layer to the Application

  • افزودن Data Gateway به برنامه Adding the Data Gateway to the Application

  • درباره آزمایش برنامه لایه ای About Testing the Layered Application

  • مدیریت خطاهای پایگاه داده - روش نادرست Handling Database Errors - the Incorrect Way

  • مدیریت خطاهای پایگاه داده - روش صحیح Handling Database Errors - the Correct Way

  • خلاصه Summary

  • خلاصه دوره Course Summary

نمایش نظرات

آموزش بهبود قابلیت آزمایش از طریق طراحی
جزییات دوره
4h 36m
119
Pluralsight (پلورال سایت) Pluralsight (پلورال سایت)
(آخرین آپدیت)
259
4.5 از 5
دارد
دارد
دارد
Zoran Horvat
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Zoran Horvat Zoran Horvat

مدیرعامل و مشاور اصلی در Coding Helmet s.p.r.l.