Жақсы жобаланған және дұрыс кодты жасау - әрбір әзірлеушінің мақсаты. Бұған қол жеткізуде ерекше көзге түсетін әдістемелердің бірі сынаққа негізделген даму (TDD) болып табылады. TDD сіздің кодыңызды жасамаса немесе оны сіз үшін жазбаса да, бұл итерациялық даму циклі бойынша дизайн шешімдері бойынша жылдам кері байланыс алуға мүмкіндік беретін бағдарламалық жасақтаманы әзірлеу әдістемесі.
Бірлік сынақтарын кодтау алдында немесе кейін жазу немесе сынақтарды ешқашан жазбау әзірлеушінің таңдауына байланысты. Ешқашан сынақ жазбау өндірісте қиын жағдайларды тудырмайтыны анық, егер әзірлеуші жолы болса, олар қолмен сынақтар кезеңінде қателерді табады.
Кодты толтырғаннан кейін сынақтарды жазу тестілеуден гөрі жақсы. Көптеген әзірлеушілер, соның ішінде біз де, кодты бірінші әдісті тікелей қолданады, содан кейін сынақтарды жазады. Дегенмен, жазылған код жақсырақ емес. Сынақ жағдайын ұмытып қалсақ, кейбір функционалдық қателер болады. Әрбір код бөлігі үшін сәтсіз сынақ жағдайларын бұрын жазу, содан кейін TDD циклін орындау арқылы сынақтан өту үшін кодты қосу әлдеқайда жақсы.
Қазіргі уақытта біз жұмысымызды автоматтандыру үшін Generative AI-ды қалай пайдалануға болатынын талқылап жатырмыз. Бұл жұмыста біз шабыттандырған жаңа экспериментті енгіземіз Аллен Хелтонның блогы. Біз жоба үшін бірнеше сынақ жағдайларын жазамыз, содан кейін ChatGPT-тен сынаққа қатысты кодты жасауды сұраймыз.
Test-First Development үшін генеративті AI
Қолмен тестілеу кезінде адам қателігінің ықтималдығын ескере отырып, сұрақ туындайды: Неліктен генеративті AI көмегімен TDD автоматтандыруға болмайды? Генеративті AI бірлік сынақтарын және сәйкес кодты жасауды автоматтандыру арқылы TDD-де түрлендіруші рөл атқара алады. Мұнда ұсынылған жұмыс процесі:
- Әзірлеушілер жазған сынақтар: Әзірлеушілер өздерінің коды үшін қажетті нәтижелерді көрсете отырып, бастапқы бірлік сынақтарын жазудан бастайды.
- AI жасаған код: Генеративті AI осы бірлік сынақтарын оқиды және оларды өту үшін қажетті кодты шығарады. Егер код сәтті іске қосылса, ол дискіге сақталады. Әйтпесе, AI қате туралы есепті жасайды және сынақтар өткенше цикл жасай отырып, дұрыс кодты қайтадан жасауға әрекет жасайды. AI-ді осылайша қосу арқылы әзірлеушілер қателердің қаупін азайта отырып, олардың кодының мұқият тексерілгеніне және расталғанына көз жеткізе алады.

TDD-де генеративті AI пайдаланудың артықшылықтары
Кодты генерациялау және тестілеу процесін автоматтандыру әзірлеу циклдерін айтарлықтай жылдамдатуы мүмкін. Сондай-ақ, сынақ жағдайларында және код жазуда адам қателігінің ықтималдығын азайту. Бұл әрекетті орындау кезінде, барлық сынақтардың жан-жақты және дәйекті түрде қамтылуын қамтамасыз ету және қолмен жұмыс жүктемесін арттырмай әзірлеу процесін оңай кеңейту.
Ықтимал қиындықтар мен шешімдер
TDD жүйесінде генеративті AI интеграциясы көптеген артықшылықтарды ұсынса да, қиындықтар жоқ емес. TDD үшін AI жүйелерін бастапқы орнату кейде күрделі және көп уақытты қажет етеді. Әзірлеушілерге AI құралдарын тиімді пайдалану және сену үшін оқыту қажет болуы мүмкін. Бірақ әзірлеушілер оны өңдеуге дайын болса да, AI оқу деректерінде жақсы көрсетілмеген бірегей немесе шеткі жағдайлармен күресуі мүмкін, сондықтан бұл сұралған сценарийлерді шатастыруы мүмкін. Генеративті AI лайықты кодпен жауап береді, бірақ бұл тамаша және ең жақсы таңдау емес. Өйткені код әлі кері байланыс механизмін қолданбайды. Керемет кодты жасау үшін біз AI-ға кері байланыс механизмдерін қолдануымыз керек, мысалы әзірлеушілердің кодты қарау тәсілі. Біз күрделі сценарийлерді шешу үшін AI-ді адам бақылауымен біріктіре аламыз, кем дегенде қазір.. :)
Кері байланыс TDD-де қолданбалы генеративті AI

Кері байланыс механизмі
Процесті одан әрі нақтылау үшін кері байланыс механизмін енгізуге болады. Әзірлеушілер бірлік сынақтарын жазады, ал әзірлеуші агенті кодты жасайды. Тексерудің жаңа қабаты кодты қарап шығып, әзірлеуші агентіне кері байланысты қамтамасыз ететін кодты қарап шығушы агентімен қосылады.
Итеративті жетілдіру
Әзірлеуші агент шолушы агентінің пікірі негізінде кодты өңдейді және оны қайта қарауға жібереді. Бұл қайталанатын процесс код шолудан сәтті өткенше жалғасады.
Қорытынды тестілеу
Кодты тексеруші агент бекіткеннен кейін бірлік сынақтары орындалады. Егер олар өтсе, код сақталады. Егер олар сәтсіз болса, қате туралы есеп жасалады және процесс кодты құруға қайта оралады.
Негізінде жұмыс процесі келесідей болады:
- Әзірлеуші бірлік tests.ev жазады
- AI осы сынақтарды оқиды және қажетті кодты жасайды.
- Егер сынақтар сәтті орындалса, код сақталады. Олай болмаса, қате туралы есеп жасалады және AI кодты циклде түзетуге әрекеттенеді.
- Бұл бастапқы автоматтандыру қателерге бейім кодты жасай алады, бұл жерде кері байланыс механизмі іске қосылады.
- Әзірлеушілер бірлік сынақтарын жазады, ал әзірлеуші агенті қажетті код пен әдістерді жасайды.
- Кодты тексеруші агент кодты қарап шығады және әзірлеуші агентіне кері байланыс жібереді.
- Әзірлеуші агент кері байланыс негізінде кодты нақтылайды және оны тексеруге қайта жібереді.
- Бұл цикл кодты тексеру агенті кодты бекіткенше жалғасады.
- Бекітілгеннен кейін бірлік сынақтары орындалады. Сәтті болса, код сақталады; болмаса, қате туралы есеп жасалады және цикл жалғасады.
Кері байланыс механизмін қосу арқылы жасалған кодтың сапасы оның қажетті стандарттарға сәйкес келуін және барлық сынақтардан сенімді өтуін қамтамасыз ете отырып, айтарлықтай жақсарады.
қорытынды
Генеративті AI-ны сынаққа негізделген әзірлеуге (TDD) біріктіру бағдарламалық жасақтаманы әзірлеуде төңкеріс жасау мүмкіндігіне ие. Бірлік сынақтарын және сәйкес кодты генерациялауды автоматтандыру арқылы әзірлеушілер кодтың жоғары сапасын қамтамасыз ете алады, қателерді азайтады және олардың жұмыс процесін жеңілдетеді. Жеңуге болатын қиындықтар болса да, артықшылықтар бастапқы кедергілерден әлдеқайда асып түседі, бұл кодтаудың болашағы үшін перспективалы тәсілге айналдырады. Сіз біздің Кодер AI генеративті AI көмегімен бағдарламалауды қолдауға қызығушылық танытсаңыз, жоба.
Болашақ бағыттар
Біз осы тәсілді құруды жоспарлап отырған үш элемент бар:
Тілдік қолдауды кеңейту: Біз Java тіліне назар аударған кезде, бұл әдістемені Python, JavaScript және т.б. сияқты басқа тілдерге де кеңейтуге болады.
Автоматтандырылған сынақ генерациясы: біз генеративті AI-ны қолмен жазылған сынақтардың орнына әзірлеушілер ұсынған жоғары деңгейлі талаптарға негізделген сынақтарды жазуға шақыра аламыз.
Agentic AI тобын кеңейту: Қарапайым кодты тексерушіден басқа, біз қосымша жағдайларды сынауға арналған QA агенті, код өнімділігін оңтайландыруға арналған өнімділік агенті және т.б. сияқты мамандандырылған агенттерді енгізе аламыз.
Әрбір бағдарламалық жасақтаманы әзірлеушіге өз уақытын неғұрлым сенімді және дәл сынақ жағдайларын жазуға жұмсауды ұсынамыз, содан кейін жоғары сапалы кодты шығару үшін Генеративті AI күшін пайдаланыңыз.