Sobes.tech
Middle+

Тестілеу арқылы әзірлеуге арналған идеалды тәсіл қандай болуы керек (TDD)?

sobes.tech AI

AI-дан жауап

Идеалды тәсіл TDD циклі үш негізгі қадамнан тұрады:

  1. Қызыл (Red):

    • Әлі жоқ немесе жұмыс істемейтін функционалды тексеретін тест жазу.
    • Барлық тесттерді іске қосу. Бұл жаңа тест қызыл (қате) болуы керек, бұл "қызыл" күйін білдіреді. Бұл тест шынымен де қажетті функционалдың жоқтығын растайды.
  2. Жасыл (Green):

    • Бұл жаңа тестілеуді өту үшін ең аз қажетті кодты жазу.
    • Барлық тесттерді қайта іске қосу. Барлық тесттер, соның ішінде жаңа, өтуі керек (pass), бұл "жасыл" күйін білдіреді. Бұл кезеңнің мақсаты — тесттердің өтуі, мінсіз код жазу емес.
  3. Рефакторинг (Refactor):

    • Алдыңғы қадамда жазылған кодты жақсарту. Бұл тазалау, оқылуын жақсарту, қайталануды жою, құрылымды жақсарту — тесттердің өтуін бұзбайтын барлық нәрсе.
    • Өзгерістердің жұмысын тексеру үшін барлық тесттерді қайта іске қосу. Тесттер "жасыл" күйінде қалуы керек.

Осы цикл келесі функционал бөлігі үшін қайталанады.

Идеалды тәсілдің негізгі аспектілері:

  • Кішкентай қадамдар: Тесттер мен кодта шағын, инкременталды өзгерістер енгізу.
  • Жылдам кері байланыс: Жүйенің жағдайы туралы ақпарат алу үшін тесттерді жиі іске қосу.
  • Әрекетке бағытталған тесттер: Тесттер жүйенің күтілетін мінез-құлқына бағытталған, ішкі жүзеге асыруға емес.
  • Кодты қамту: TDD табиғи түрде жоғары код қамтуына әкеледі.
  • Құжаттама: Тесттер кодтың қалай жұмыс істеуі керек екендігі туралы өмірлік құжат ретінде қызмет етеді.
  • Қауіпсіздік: Барлық тесттердің өтуі рефакторинг пен өзгерістер енгізу кезінде сенімділік береді.

JS-те Red/Green/Refactor циклінің мысалы:

  1. Қызыл: Қосу функциясы үшін тест жазу, ол әлі жоқ.
    // math.test.js
    import { add } from './math'; // add функциясы әлі жоқ
    
    test('екі санды қосу керек', () => {
      expect(add(1, 2)).toBe(3); // Тест қате болады, себебі add анықталмаған
    });
    
  2. Жасыл: Тесті өту үшін минималды функцияны жасау.
    // math.js
    export function add(a, b) {
      return a + b; // Тесті өту үшін минималды код
    }
    
    Тесттерді іске қосу. Олар өтеді.
  3. Рефакторинг: Бұл жағдайда код жеткілікті қарапайым, рефакторинг минималды немесе жоқ болуы мүмкін. Егер функция күрделірек болса, мұнда оңтайландыру немесе оқылуын жақсарту орын алады. Тесттерді қайта іске қосу. Олар өтеді.