دوره Refactoring با کمک تست های خودکار

  • دسته بندی
    تست نرم افزار
  • مدت دوره
    21 ساعت
  • جلسات دوره
    7 جلسه 3 ساعته
  • نحوه برگزاری
    آنلاین
  • تاریخ شروع
    10 شهریور 1399
  • هزینه دوره
    1.000.000 تومان
  • ثبت نام
  • آشنایی با مفاهیم اولیهRefactoring
    • تعریف Refactoring و اصول آن
    • نقش تست های خودکار در Refactoring
    • قانون Two-Hat در Refactoring
    • چرخه های مختلف Refactoring
      • TDD Refactoring
      • Litter-Pickup Refactoring
      • Comprehension Refactoring
      • Preparatory Refactoring
      • Planned Refactoring
      • Long Term Refactoring
    • بررسی Refactoring از زوایای مختلف
      • Basic Refactoring - Large Refactoring
      • Safe Refactoring - Unsafe Refactoring
      • Automated Refactoring - Manual Refactoring
  • شناسایی و اولویت بندی بخش ها برای Refactoring
    • آشنایی با نحوه آنالیز کد و تاریخچه Source Control
      • شناسایی کدهای با نرخ تغییر زیاد
      • شناسایی کدهای پیچیده
      • شناسایی الگوهای تغییر پرهزینه
      • آشنایی با مفهوم «عمر کد»
  • آشنایی با Smell ها و Bad Practice ها
    • آشنایی با Code Smell های رایج
    • آشنایی با Design & Architecture Smell ها
  • بررسی تکنیک های Basic Refactoring
    • Composing Methods
    • Moving Features Between Objects
    • Organizing Data
    • Simplifying Conditional Expressions
    • Making Method Calls Simpler
    • Dealing with Generalization
  • بررسی تکنیک های Large Refactoring
    • Refactoring Plan & Detailed Plan
    • Branch By Abstraction
    • Black-box Tests
    • Refactoring-Enabling Refactorings
    • Detours
  • تست نویسی در کدهای Legacy
    • اصول و قدم های تست نویسی در پروژه های Legacy
    • آشنایی با Seam ها و انواع آنها
    • نحوه اضافه کردن Feature جدید و تست آنها
    • مشکلات تست نویسی در کدهای غیر قابل تست و راه حل های آنها
      • High Coupling یک کلاس به کلاس های دیگر
      • یک Method در تست ها قابل صدا زدن نمی باشد
      • عدم زمان کافی برای Refactor، هنگام اضافه کردن قابلیت جدید
      • عدم فهم کد موجود و حالت های اجرایی آن جهت اعمال Refactoring
      • عدم آگاهی از Side-Effect تغییرات بر روی کدهای موجود
    • تکنیک های از بین بردن High Coupling بین کلاس ها جهت Testable کردن آن ها
      • Adapt Parameter
      • Break out Method Object
      • Definition Completion
      • Encapsulate Global References
      • Expose Static Method
      • Extract and Override Call
      • Extract and Override Factory Method
      • Extract and Override Getter
      • Extract Implementer
      • Extract Interface
      • Introduce Instance Delegator
      • Link Substitution
      • Introduce Static Setter
      • Parameterize Constructor
      • Parameterize Method
      • Primitivize Patameter
      • Pull Up Feature
      • Push Down Dependency
      • Replace Function with Function Pointer
      • Replace Global Reference with Getter
      • Subclass and Override Method
      • Supersede Instance Variable
      • Template Redefinition
      • Text Redefintion
  • استفاده از Property-Based Testing در Refactoring
    • مروری بر Property-Based Testing
    • مروری بر روش های شناسایی Property ها
    • استفاده از کد Legacy به عنوان Model در Refactoring
    • استفاده از Symmetric Properties برای تسهیل Refactoring