Пайдалар:
- AI менен бирдикти тестирлөө, четтөө учурларын жана камтуу боштугун анализдөө мүмкүнчүлүгү
- Коддун учурдагы жүрүм-турумуна эмес, спецификацияга негизделген сыноо күтүүлөрүн басып чыгаруу мүмкүнчүлүгү
- Сыноо чындыгында каталарды киргизүү менен коргойбу же жокпу текшерүү мүмкүнчүлүгү
Тесттерди жазуу - көпчүлүк иштеп чыгуучулар кийинкиге калтырган эң баалуу милдеттердин бири. Жакшы тест пакети коддун күтүлгөндөй иштешинин далили жана келечектеги өзгөрүүлөр үчүн өмүр линиясы болуп саналат. Маселе, жазуу тесттери кайталануучу жана көп убакытты талап кылат - AI жаркыраган жумуштун түрү. Бирок бир нерсе бар: AI көп учурда коддун жүрүм-турумун эмес, учурдагы жүрүм-турумун текшерет. Бул айырмачылыкты башкаруу бул бирдиктин маңызы.
Бул бөлүмдө сиз бирдикти тестирлөө (функцияны өзүнчө, өзүнчө сынаган тестирлөө), кырдуу тесттерди жана AI менен тест маалыматтарын түзүүнү үйрөнөсүз; тестти камтуудагы боштуктарды жабуу; жана AI тесттерине сокур ишенүү эмне үчүн коркунучтуу.
Тесттин эки тарабы: Жүрүм-турумду аныктоо жана текшерүү
Сыноо эки башка максатты аткарышы мүмкүн. Биринчиси - текшерүү: ал коддун туура экенин, спецификацияга туура келерин текшерет. Экинчиси - регрессиядан коргоо: ал бүгүн коддун жүрүм-турумун тоңдурат, ошондуктан эртең кокусунан бирөө аны өзгөртсө, тест бузулуп, кабар берет.
AI акыркы учурда абдан жакшы; Ал кодду карап, "учурда эмне кылып жатканын" текшерген учурларды түзөт. Бирок эгер код башынан туура эмес болсо, AI бул туура эмес жүрүм-турумду "туура" деп белгилей алат. Ошентип, сиз AI чыгарган ар бир тесттин ырастоосун карап чыгышыңыз керек: "Код 42ни кайтарат жана тест 42ни күтөт" бул 42 туура жооп дегенди билдирбейт.
Эскертүү: Эгерде AI тесттен өтсө, бул код "иштеп жатат" дегенди билдирбейт; бул жөн гана "ал AI күткөндөй мамиле кылат" дегенди билдирет. Күтүүнүн туура же туура эместигин спецификацияны карап чечесиз.
Кадам сайын: AI менен күчтүү тесттерди жазуу
- Кодду эле эмес, спецификацияны бериңиз. Эгер сиз "Бул функция муну кылышы керек" деген маалыматты кошсоңуз, AI туура күтүүнү жаза алат; Эгер сиз жөн гана кодду берсеңиз, ал учурдагы жүрүм-турумду текшерет.
- Чектүү учурларды сураңыз. Бош, нөл, нөл, терс, өтө чоң, начар формат, параллелдүүлүк - бактылуу жолдон ачык доо.
- Сыноо алкагын жана стилин көрсөтүңүз. "pytest колдонуңуз", "Орнотуу-иш-аракет кылуу-тастыктоо", "ар бир тест бир нерсени сынап көрсүн" ж.б.
- күтүүлөрдү текшерүү (тастыктоо). Ар бир ырастоо туура маанини текшерген спецификация менен салыштырыңыз.
- чөйрөсүндөгү боштуктарды жабуу. Учурдагы тесттерди бериңиз жана "кайсы филиалдар жана иштер текшерилген эмес?" сен сура андан кийин өндүрүлгөн кошумча сыноолорду текшерүү.
Үч мини Case
1-жагдай — Камтуу 52%дан 85%ке чейин. Бир сервистик модулдун тесттик камтуусу 52% түздү. Команда AI үчүн учурдагы тесттерди берип, текшерилбеген бутактарды тизмектеп, алар үчүн тесттерди түзүүнү талап кылды. Адамдын кароосу менен камтуу 85% га чейин көбөйдү; Процесстин жүрүшүндө, AI мүчүлүштүктөрдүн бутагынан мурда эч качан текшерилбеген чыныгы катаны (туура эмес ката кодун кайтарган жол) ачты.
2-жагдай - Жалган күтүү тузак. Акчаны тегеректөө функциясы чындыгында туура эмес болгон; 2,675тен 2,67ге тегеректөөнүн ордуна 2,68дин ордуна 2,67ге тегеректелген. AI кодду карап, assert round_money(2.675) == 2.67 деп жазды - катаны "чындык" деп катып койду. Иштеп чыгуучу спецификацияны окуганда, ал күтүүнү оңдоп, чыныгы катаны кармады. Кодду эмес, эрежени сыноо айырмачылыкты жаратты.
3-жагдай - Чет абалындагы жарылуу. Дата диапазону функциясы үчүн AIдан "четтик учурларды" гана сураганда; Ал 8 учурду чыгарды, мисалы, башталыш=аяктоо, тескери интервал, 29-февраль, кибирек жыл, ар кандай убакыт алкактары жана нөл аралык. Алардын экөө (кайтарым аралык жана кибирек жыл) чындыгында катага себеп болгон. Бул иштерди кол менен кароо көп учурда өткөрүп жиберилет; AI бул жерде "чектеги мээ чабуулунун" өнөктөшү болуп калды.
Көчүрмө төрт шаблон
Спецификацияга негизделген тестти түзүү:
Рол: Тесттерди жазган иштеп чыгуучу. Framework: {{pytest/JUnit/Jest...}}. Функция ЭМНЕ КЫЛУУ КЕРЕК (спецификация): {{ эреже}}Төмөнкү функция үчүн тесттерди жазыңыз. Коддун учурдагы чыгарылышына ЭМЕС, спецификацияга ылайык күтүүлөрдү жазыңыз. Бактылуу жол + кеминде 4 кырдуу учурду кошуңуз. Ар бир тест бир нерсени сынап көрсүн, сүрөттөмө атын колдонуңуз. {{функция}}
Edge Case мээ чабуулу:
Бул функцияны тестирлөөдө сыналышы керек болгон чет/катар учурларды тизмектеңиз (нөл, нөл, үзүү чекиттери, начар формат, параллелдүүлүк, тышкы ката). Ар бир учур үчүн: киргизүү, күтүлгөн жүрүм-турум. Азырынча код ЖАЗБА, жөн гана тизмеле.{{функция}}
Камтуу боштугун талдоо:
Төмөндө функциялар жана жеткиликтүү тесттер. Кайсы филиалдар, шарттар жана иштер текшерилген эмес? Кемчиликтерди тизмектеп, жаңы сыноолорду кемчиликтерге гана жазыңыз. Бар болгондорду кайталабагыла. Функция:{{функция}}Тесттер:{{existing_tests}}
Сыноо маалыматтары / жасалма объектти түзүү:
{{функция/кызмат}} сыноолор үчүн реалдуу тест маалыматтарын жаратыңыз: жарактуу үлгүлөр, чек ара үлгүлөрү жана жараксыз үлгүлөр өзүнчө. Тышкы көз карандылык {{X}} үчүн жөнөкөй жасалма жүрүм-турумду сунуштаңыз. Чыныгы купуя маалыматтарды / PIIди колдонуу; Жасалма маалыматтарды түзүү.
Алсыз тездик / Күчтүү тездик
Алсыз: "Бул функция үчүн тест жазыңыз."
Күчтүү: "pytest менен. apply_discount(жалпы, пайыз) — эреже: арзандатуу 0%–30% болушу керек, чектен тышкары ValueError ыргытышы керек, натыйжа 2 ондукка чейин тегеректелиши керек. Күтүүлөрдү ушул ЭРЕЖЕ боюнча жазыңыз (код боюнча эмес). Бактылуу жол + бул четтөө учурлары: 0%, 30% (жалпы, пайыз) [30%, терс (жалпы, пайыз) , 30%, .
Ал күчтүү бошотуу эрежесин берет жана "күтүүнү кодго эмес, эрежеге ылайык жаз" дейт; Бул жалгыз сүйлөм AI туура эмес жүрүм-турумун оңдоонун тузагын жаап салат.
Сыноо түрү
AI салымы
адам башкаруу
Бактылуу жол бирдиги сыноо
тез скелет
күтүү туурабы?
Edge учурлары
Кеңири мээ чабуулу
Маанисизди жок кылуу
Колдонмонун боштугун толтуруу
Өткөрүлгөн бутактарды табат
Маанилүүлүгүн ырастоо
Сыноо берилиштери/максат
Реалдуу үлгүсүн чыгарат
PII жок, реализмди көзөмөлдөө
Тесттер сапатты башкарат, ага кепилдик бербейт
Сынактын жогорку камтуусу ишенимди берет, бирок ал жаңылыштырышы да мүмкүн: 100 пайыз камтуу "ар бир сап туура" эмес, "ар бир сап иштетилди" дегенди билдирет. AI менен камтууну жогорулатуу оңой; Чыныгы баалуулук - бул маанилүү күтүүлөрдү жазуу. Сынактын баалуулугу - анын бузуп, код бузулганда сизге эскертүү берүү жөндөмдүүлүгү. Ошондуктан AI тарабынан түзүлгөн тесттер “код өзгөргөндө чындап эле бузулабы?” деген суроого негизделген. Аны суроо менен сынап көрүңүз; Атайылап бир сызыкты бузуп, тест үзүлүшүн көрүү (мутация идеясы) тесттин иштегенинин далили.
Кеңеш: AI жазган тесттин иштээрин көрүү үчүн, коддо кичинекей мүчүлүштүктөрдү түзүңүз (мисалы, а + белгисин - деп өзгөртүңүз) жана сыноо бузулганын көрүңүз. Эгерде ал сынбаса, анда ал сыноо сени коргобойт.
Жалпы каталар
- Эрежени бербестен тест сурап. Модель учурдагы жүрүм-турумду токтотот; катаны "чындык" деп оңдойт.
- Аларды окубай туруп күтүүлөрдү кабыл алуу. Эгер ырастоолордун туура маанини текшерип жатканын текшербесеңиз, тестирлөө адаштырышат.
- Жөн гана бактылуу жолду сыноо. Чыныгы каталар чектерде жашайт; Чектүү учурларды ачык сураңыз.
- Максат үчүн масштабды жаңылыштык. Жогорку пайыз туура жүрүм-турумга кепилдик бербейт.
- Чыныгы/жашыруун маалыматтарды тесттик маалыматтар катары кабыл алуу. Кардар маалыматтары же сырлары тестирлөөгө жана сактоого кирбеши керек; Синтетикалык маалыматтарды түзүү.
Кыскача айтканда
AI жазуу сыноолорунан кайталануучу жүктүн көбүн алат: ал тез скелеттерди, четки учурлардын чоң тизмесин жана камтуу боштугун талдоолорду чыгарат. Бирок эң маанилүү жагдай - бул күтүүлөр: AI коддун учурдагы жүрүм-турумун сынайт, ал эми тестирлөө спецификацияга ылайык жазылышы керек. Эрежени бериңиз, күтүүлөрдү текшериңиз, четки учурларды ишке ашырыңыз жана катаны сайып, тесттер чындап коргойбу же жокпу, текшериңиз. Сыноо - бул максат эмес, курал.
Колдонмо тапшырмасы
Функцияны тандап, алгач анын кодун берүү менен AI үчүн тестти басып чыгарыңыз; Күтүүлөргө көңүл буруңуз. Андан кийин ошол эле функция үчүн спецификацияны (талап кылынган жүрүм-турумду) берип, тестти кайра басып чыгарыңыз. Эки тесттик топтомдун күтүүлөрүн салыштырыңыз: айырмасы барбы, кайсынысы чыныгы мүчүлүштүктөрдү ачат? Акырында, кодго атайылап мүчүлүштүктөрдү кошуу жана тесттик тыныгууну көрүү менен түзүлгөн тесттердин бири иштегенин текшериңиз.
текшерүү тизмеси
- [ ] Мен сыноо жүрүм-турумду оңдообу же текшерүүбү деп айырмалаймын.
- [ ] Мен сыноону талап кылганда кодду эмес, ордунда болушу керек болгон эрежени (спецификацияны) берем.
- [ ] Мен ар бир түзүлгөн ырастоону спецификацияга салыштырам.
- [ ] Мен ачыктан-ачык чек жана ката учурларын сурайм.
- [ ] Мен пайыздык камтууну максат эмес, курал катары карайм.
- [ ] Мен тесттин чындыгында каталарды киргизүү менен коргойбу же жокпу, текшерем.