Middle+
Тестілеу арқылы әзірлеуге арналған идеалды тәсіл қандай болуы керек (TDD)?
sobes.tech AI
AI-дан жауап
Идеалды тәсіл TDD циклі үш негізгі қадамнан тұрады:
-
Қызыл (Red):
- Әлі жоқ немесе жұмыс істемейтін функционалды тексеретін тест жазу.
- Барлық тесттерді іске қосу. Бұл жаңа тест қызыл (қате) болуы керек, бұл "қызыл" күйін білдіреді. Бұл тест шынымен де қажетті функционалдың жоқтығын растайды.
-
Жасыл (Green):
- Бұл жаңа тестілеуді өту үшін ең аз қажетті кодты жазу.
- Барлық тесттерді қайта іске қосу. Барлық тесттер, соның ішінде жаңа, өтуі керек (pass), бұл "жасыл" күйін білдіреді. Бұл кезеңнің мақсаты — тесттердің өтуі, мінсіз код жазу емес.
-
Рефакторинг (Refactor):
- Алдыңғы қадамда жазылған кодты жақсарту. Бұл тазалау, оқылуын жақсарту, қайталануды жою, құрылымды жақсарту — тесттердің өтуін бұзбайтын барлық нәрсе.
- Өзгерістердің жұмысын тексеру үшін барлық тесттерді қайта іске қосу. Тесттер "жасыл" күйінде қалуы керек.
Осы цикл келесі функционал бөлігі үшін қайталанады.
Идеалды тәсілдің негізгі аспектілері:
- Кішкентай қадамдар: Тесттер мен кодта шағын, инкременталды өзгерістер енгізу.
- Жылдам кері байланыс: Жүйенің жағдайы туралы ақпарат алу үшін тесттерді жиі іске қосу.
- Әрекетке бағытталған тесттер: Тесттер жүйенің күтілетін мінез-құлқына бағытталған, ішкі жүзеге асыруға емес.
- Кодты қамту: TDD табиғи түрде жоғары код қамтуына әкеледі.
- Құжаттама: Тесттер кодтың қалай жұмыс істеуі керек екендігі туралы өмірлік құжат ретінде қызмет етеді.
- Қауіпсіздік: Барлық тесттердің өтуі рефакторинг пен өзгерістер енгізу кезінде сенімділік береді.
JS-те Red/Green/Refactor циклінің мысалы:
- Қызыл: Қосу функциясы үшін тест жазу, ол әлі жоқ.
// math.test.js import { add } from './math'; // add функциясы әлі жоқ test('екі санды қосу керек', () => { expect(add(1, 2)).toBe(3); // Тест қате болады, себебі add анықталмаған }); - Жасыл: Тесті өту үшін минималды функцияны жасау.
Тесттерді іске қосу. Олар өтеді.// math.js export function add(a, b) { return a + b; // Тесті өту үшін минималды код } - Рефакторинг: Бұл жағдайда код жеткілікті қарапайым, рефакторинг минималды немесе жоқ болуы мүмкін. Егер функция күрделірек болса, мұнда оңтайландыру немесе оқылуын жақсарту орын алады. Тесттерді қайта іске қосу. Олар өтеді.