Тестке негізделген даму: сенімділікпен уақытында орындаңыз

The source text is taken from here: http://bkhull2.blogspot.com/2016/05/test-driven-development-get-done-on.html

Брэдфорд К Халл (Bradford K Hull)

2016-05-09

Тестке негізделген дамуды бастапқы экстремалды түрде әзірлеушілерге сату өте қиын, өйткені ол дәстүрлі стильге қарағанда баяу жүреді.

Ол емес. Бұл жылдамырақ.

Мәселе мынада, бұл алғашқы екі сағатта пайда болмайды, оны ұстап тұру үшін бірнеше апта қажет.
Енді бұл шындық үшін тым жақсы естілетін шығар. Адамдар функционалды тілде айнымалысыз бағдарламалау тиімді және қанағаттанарлық деген кездегі ұқсастықтар – сіз оған шынайы тырысып көрмейінше сенбейсіз, ал адал әрекет кейбір терең әдеттерден арылуды талап етеді.

Сонымен қатар, сізге «алдымен кез-келген мүмкіндік үшін тест жазып, ол тексерілетін мүмкіндікті жүзеге асыратын кодты жазбаған кезде сәтсіздікке ұшырағанын дәлелдеу үшін тестті іске қосыңыз» деп барудың қажеті жоқ. Егер сіз өзіңіздің алғашқы тестіңізді әдеттегідей дұрыс жасағаныңызға көз жеткізу үшін жаңа шыққан кодты тексеретін жерге жазсаңыз, оны аздап ыңғайсыз ете аласыз.

Міне, сол жерде үлкен пайда көріне бастайды. Әзірлеушіге қойылатын кез-келген талап «өте егжей-тегжейлі» деген тіркесті қамтиды. Мұның мәні «бірінші рет дұрыс жұмыс істемейтін материалдарды жазбаудан сақтан» дегенді білдіреді. Дегенмен, көпшілігіміз бірінші рет жұмыс істейтін кодты ала бермейді, тіпті 50%-ы, өйткені бұл өте қиын. Қате болуы мүмкін көптеген нәрселер бар.

Сонымен, сіз жазып жатқан кодтың әрбір негізгі функционалдық қажеттілігі үшін жылдам жұмыс істейтін және есептер шығаратын тест жазсаңыз, оны файлды дискіге сақтаған әр уақытта орындай аласыз, сіз ойлаған нәрсені аласыз туралы: сіздің алғашқы кодтау жобаңызда мінсіз болуға тырысатын стрессіз сенімділік. Стрестің үлкен көзі қарусыздандырылды!

Ойланыңыз. Сарқырама әдісі жұмыс істемейтінін және ешқашан жұмыс істемейтінін бәріміз білеміз, өйткені тамаша спецификация деген ұғым жоқ – жоба барысында сіз әрқашан шынайы спектрдің жартысын табасыз. Сонымен, бұл кодтауға қатысты. Сіз оған жақсы түсірілім жасайсыз, содан кейін сіз оны тастай алатын кез-келген нәрсеге қарсы сыналған кезде қатты болғанға дейін тексересіз.

Енді мұны жоба кезеңінде ұзартыңыз. Ескі тәсілмен, өзіңіздің сенімділігіңіз келесі үлгі бойынша жүреді:

Сіз өзіңіздің алғашқы жобаңызға қаншалықты сенімді болғаныңызбен бастайсыз, бірақ тестілеу кестеден әлдеқайда ұзақ уақыт болғандықтан, сіздің сеніміңіз уақыт өте келе азая береді, әсіресе сипаттамалар айқынырақ бола бастағаннан кейін және олардың бөліктерін қайта жазуға ораласыз. бастапқы дұрыс емес болжамдармен жазылған. Содан кейін, сіз қабырғадағы затты сапа кепілдігі-ға лақтырып, өзіңізге сенімді бола бастайсыз.

Сапа кепілдігі қателер туралы есептерді жібереді және қателердің себептері сіз бұрын жазған кодқа терең еніп кетуі мүмкін және сіздің дизайныңыздағы өте қарапайым сыныптардың жанама әсерлері болуы мүмкін. Ақаулықтарды жою және түпкі себептерді жою ұзақ уақытты талап ететін және толықтай сәтті болатынына сенімді емес ұзақ, қиын, нәзік процесс.

Енді сіз өзіңіздің сыныптарыңыздың функционалдығы бірнеше минут сайын сіз дамып келе жатқан кезде тексерілетін кезде оны өзіңіздің сенімділігіңізбен салыстырайық:

Мұнда сіз үлкен сеніммен бастайсыз, өйткені сіз кез-келген нәрсеге қол тигізген сайын пайдалану үшін автоматтандырылған, қайталанатын, найзағай жылдамдықтағы тестілеуді бастамас бұрын көп жаза бермейсіз, содан кейін жасаған кез-келген өзгерісті сол арқылы қайта бастауға болады. Енді сізде тереңнен тамыр тартқан қателіктер жоқ, өйткені кейінгі кезеңдерде қиындықтар туындайды, өйткені сіз әр қатені бірден көресіз, ол әлі есіңізде.

QA осы кодты алып, функционалдылық пен интеграцияға және қабылдау мен өнімділікке тестілеуді кез-келген берілген жолды жұмыс істету үшін жеткілікті функция болғаннан кейін жасай алады, ал егер сіз дизайн проблемасын тапсаңыз, сіз тестілерді өзіңіз білген нәрсені көрсету үшін өзгерте аласыз және дизайндағы өзгерістердің дәл орынға сәйкес келетіндігіне және күтпеген жанама әсерлердің болмайтындығына көз жеткізіңіз, бұл ескі тәсілмен жасалған жобаларда жиі кездесетін мәселе.

Сонымен, егер сіз уақытында бітіріп, түнде жақсы ұйықтағыңыз келсе және өз жұмысыңызбен мақтанғыңыз келсе, сіз негізгі сабақтармен бірге барлық кейінгі кезеңдерде тесттер жазып, оларды үнемі жүргізіп отырасыз Мінсіз болу керек. Оның орнына сіз жай ғана нәтижелі бола аласыз.

Ия, бұл теориялық және сіздің жүгірісіңіз әр түрлі болуы мүмкін, бірақ егжей-тегжейлі тестілеуді циклыңызда ерте және жиі қолданып көргеннен кейін, сіз ешқашан оралмайсыз. Бұл өте қорқынышты болар еді.