برنامه نویسی

آیا می دانید TDD چیست؟

TDD چیست ❓

برای پاسخ به این سوال می توان در مورد منشا آن صحبت کرد…

🚀 مبدا

در حدود سال 1990 ظهور کرد، جایی که در ابتدا توسط XP (برنامه نویسی شدید) توسط کنت بک معرفی شد.
هدف این بود که توسعه کدهای ساده را تشویق کند تا بتوان آنها را با تکنیکی به همان اندازه ساده بررسی و اعتبار سنجی کرد.

همانطور که در بالا ذکر شد، همه شروع به فکر کردن در مورد کدهای ساده کردند و ما باید این تفکر را حفظ کنیم.

اما، مفهوم پشت TDD چیست؟
چرا با سایر تست های واحد متفاوت است؟

💡 مفهوم

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

تست را قبل از کد بنویسید؟

آیا این است!

ایده اصلی ایجاد تست های کوچک بر اساس درک اولیه و تغییر یا نوشتن کد جدید تنها در صورت شکست تست است تا از تکرار تست ها و کد جلوگیری شود.

اما چگونه می توانیم آن را انجام دهیم؟

🔢 مراحل

مراحل TDD

  • قرمز: مرحله اول نوشتن تست است و در این مرحله کد وجود ندارد، بنابراین … تست باید شکست بخورد.

  • سبز: مرحله دوم نوشتن کد برای قبولی در آزمون ایجاد شده است. تمرکز اصلی باید روی قبولی در آزمون باشد نه روی شیوه های خوب یا بهترین کد.

  • Refactor: سومین و آخرین مرحله این است که کد را دوباره فاکتور کنید و آزمایش کنید. نکته اصلی یافتن بهترین راه برای نوشتن کد و تست، اجتناب از کدهای تکراری و فکر کردن به DI، SRP و غیره است.


پس از درک نظریه های مربوط به TDD، باید بدانیم که از چه ابزارهایی می توان برای انجام کارهایی که باید انجام دهیم استفاده کرد.

در زیر، من برخی از ابزارها را برای برخی از زبان ها فهرست کرده ام که می توانیم از آنها استفاده کنیم.

برای مثال‌هایمان، از جاوا اسکریپت برای FrontEnd و .Net برای BackEnd استفاده می‌کنم، و ابزارهای انتخاب شده برای آزمایش به ترتیب Jest و xUnit بودند.

📚 کتابخانه ها

〰️ .Net

📜 جاوا اسکریپت

♨️ جاوا

🐘 پی اچ پی


📘 مثال ها

✅ تمرینات خوب

برای سهولت در ایجاد تست ها می توانیم از برخی الگوها استفاده کنیم که دقیقاً در زیر دو مورد از آنها را با درک خود از مراحل آنها لیست کرده ام.

تست ساختارهای AAA و GWT

الگوهای رایج نوشتن تست‌های واحد و آسان‌تر کردن خواندن و درک کد با 3 مرحله.

  • داده شده/ترتیب – یک حالت شناخته شده را تعریف کنید.
  • وقتی/عمل کن – برنامه را اجرا کنید؛
  • سپس / دارایی – مطمئن شوید که حالت جدید حالت مورد انتظار است.

📍 راه ساده

اکنون، می‌توانیم کدهای .Net را با استفاده از مراحلی که قبلاً مشاهده کردیم، ببینیم.

مرحله 1 – قرمز

[Fact]
public void TestsTemperatureConversor()
{
        //Given/Arrange
        double fahrenheit = 32;
        double celsius = 0;

        //When/Act
    double calculateVal= TemperatureConverter.FahrenheitToCelsius(fahrenheit);

        //Then/Assert
        Assert.Equal(celsius, calculateVal);
}

//First to fail
public static class TemperatureConverter
{
    public static double FahrenheitToCelsius(double temperature)
    {
        throw new NotImplementedException();
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 2 – سبز

public static class TemperatureConverter
{
    public static double FahrenheitToCelsius(double temperature)
    {
        return Math.Round((temperature - 32) / 1.8, 2);
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 3 – Refactor

/*
It can be refactored or not. If the code is very simple, 
there is no need to refactor. In another scenario, 
this could be refactored using an external service for example.
*/
public static class TemperatureConverter
{
    public static double FahrenheitToCelsius(double temperature)
    {
        return Math.Round((temperature - 32) / 1.8, 2);
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


💪 تمرین کنید

کد تمرین در Github است، نگاه کنید. کدهای تست های جاوا اسکریپت و نت وجود دارد.

اگر ترجیح می‌دهید، می‌توانم ویدیویی درباره این مقاله ضبط کنم که تمام مراحل از جمله ایجاد پروژه را توضیح می‌دهد و آن را در YouTube پست کنم.

در این مورد به من بازخورد بدهید.

↔️ مزایا و معایب

✔️ جوانب مثبت

  • قابلیت کاهش باگ های کوچک
  • کد تمیزتر و ساده تر، حذف کدهای غیر ضروری
  • قابلیت اطمینان کد
  • از فرآیند مستندسازی حمایت می کند
  • بازسازی مجدد را تسهیل می کند

✖️ معایب

  • منحنی یادگیری
  • تست بخشی از تعمیر و نگهداری پروژه می شود
  • پروژه را “گران” می کند

⁉️ شک و تردید

کامنت بگذارید، ابهامات و پیشنهادات خود را برای بهبود این مطالب و مطالب بعدی بیاورید.


🔗 لینک ها

  1. مخزن GitHub
  2. ارائه YouTube (پرتغالی)

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا