макалалар

Test Driven Development деген эмне, ыкмалар жана артыкчылыктар

Test Driven Development (TDD) бул программалык камсыздоону иштеп чыгуу ыкмасы, анда тесттик учурлар коддун эмне кылаарын аныктоо жана текшерүү үчүн иштелип чыгат.

Ар бир өзгөчөлүк үчүн иш жүзүндө сыноо учурлары программалык камсыздоону чыгаруунун алдында түзүлөт жана текшерилет, жана эгер сыноо ийгиликсиз болсо, тесттен өтүү жана кодду жөнөкөй жана мүчүлүштүксүз кылуу үчүн жаңы код жазылат (же кайра жазылат же жаңыртылды).

Test Driven Development (TDD) колдонмодогу ар бир кичинекей функция үчүн тесттерди иштеп чыгуу жана иштеп чыгуу менен башталат. TDD алкагы иштеп чыгуучуларга автоматташтырылган сыноо ийгиликсиз болгондо гана жаңы код жазууну буйруйт. Бул ыкма кодду кайталоодон сактайт. Толук TDD модулу сыноого негизделген иштеп чыгуу болуп саналат.

Test Driven Development (TDD) Agile программалык камсыздоону иштеп чыгуу методологиясынын бир бөлүгү болуп саналган Extreme Programming (XP) деп аталган ири программалык камсыздоону долбоорлоо парадигмасынын бир бөлүгү катары келип чыккан.

TDDдин жөнөкөй түшүнүгү жаңы кодду жазуудан мурун (иштеп чыгуудан мурун) ийгиликсиз болгон тесттерди жазуу жана оңдоо. Бул кодду кайталоодон качууга жардам берет, анткени биз тесттерден өтүү үчүн бир убакта аз сандагы кодду жазабыз. (Тесттер биз аларды канааттандыруу үчүн сынап көрүшүбүз керек болгон талаптардан башка нерсе эмес).

Сыноого негизделген иштеп чыгуу - бул тиркемени иш жүзүндө иштеп чыгуунун алдында автоматташтырылган тесттерди иштеп чыгуу жана жүргүзүү процесси. Демек, TDD кээде Test First Development деп да аталат.

TDD мамилесинин фазалары

Кандайдыр бир жаңы код жазылаардан мурун, программист адегенде ийгиликсиз бирдик сынагын түзүшү керек. Андан кийин, программист - же жубайлар же моб - бул талапты канааттандыруу үчүн жетиштүү кодду түзөт. Сыноодон өткөндөн кийин, программист жүрүм-турумун өзгөртпөстөн, долбоорду рефакциялай алат.

TDD бирдик деңгээлиндеги программисттердин өз ара аракеттенүүсүнө басым жасаганы менен, кардарлар түшүнө турган тесттерге багытталган кабыл алуу сынагына негизделген иштеп чыгуу (ATDD) же жүрүм-турумга негизделген өнүгүү (BDD) сыяктуу башка популярдуу методдор бар.


Бул ыкмалар коддоодон мурун инженердик персонал менен кардар ортосунда биргелешкен тесттер катары реалдуу мисалдарды курууну, андан кийин коддун ишке ашырылганын көрсөтүү үчүн коддоодон кийин тесттерди жүргүзүүнү камтыйт. Тесттердин алдын ала белгилүү болушу биринчи жолу сапатты жакшыртат. ATDD жана BDD иштеп чыгуучулардан, тестирлөөчүлөрдөн жана бизнес тараптан код түзүлгөнгө чейин программалык камсыздоону жана анын кесепеттерин элестетүү жана талкуулоо үчүн чогуу иштешин талап кылат.

TDD артыкчылыктары

Сыноого негизделген иштеп чыгуулар эски ыкмаларга караганда аз убакыттын ичинде жогорку сапаттагы тиркемелерди чыгара алат. TDDди ийгиликтүү ишке ашыруу иштеп чыгуучулардан жана тестирлөөчүлөрдөн тиркеме жана анын функционалдуулугу реалдуу дүйнөдө кандайча колдонулаарын так алдын ала билишин талап кылат.

Инновациялык бюллетень
Инновация боюнча эң маанилүү жаңылыктарды өткөрүп жибербеңиз. Аларды электрондук почта аркылуу алуу үчүн катталыңыз.

TDD адамдын кол менен тестирлөөсүн минималдаштырууга, көйгөйлөрдү эрте таап, тезирээк чечимдерге алып келүүчү терс эффект катары регрессиялык тест топтомун түзөт. TDD методикалык мүнөзү классикалык баскычтуу код циклдерине караганда биринчи жолу камтууну жана сапатын бир кыйла жогору камсыздайт > тест > оңдоо > кайра сыноо. Сыноо долбоорлоо циклинин башталышында жүргүзүлгөндүктөн, кийинчерээк мүчүлүштүктөрдү оңдоого сарпталган убакыт жана акча минималдуу кыскартылат.

Күтүлгөн пайдалар:

  • баштапкы иштеп чыгуу күч-аракетинин орточо жогорулашынын эсебинен кемчиликтердин көрсөткүчтөрүн олуттуу кыскартуу
  • кошумча чыгымдар долбоорлордун акыркы этаптарында күч-аракетти кыскартуу менен компенсацияланат
  • TDD коддогу жакшыраак дизайн сапаттарына жана жалпысынан алганда, "ички" же техникалык сапаттын жогорку даражасына алып келет, мисалы, бириктирүү жана туташтыруу көрсөткүчтөрүн жакшыртуу аркылуу

TDD кемчиликтери

TDD ийгиликтүү болушу үчүн, өзгөчө бирдик деңгээлинде бир топ чеберчиликти талап кылат. Көптөгөн эски системалар жөн гана бирдикти тестирлөө менен курулган эмес, бул тестирлөө үчүн компоненттерди бөлүп коюуга мүмкүн эмес.

Ошондой эле, көптөгөн программисттер обочолонуу жана таза кодду түзүү жөндөмдөрү жок. Команданын бардык мүчөлөрү бирдик тесттерин түзүп, кармап турушу керек, болбосо алар тез эле эскирип калат. Ал эми TDD карап жаткан уюм кийинчерээк тезирээк баруу үчүн убакытты жумшап, азыр бир аз жайлатышы керек.

Акыр-аягы, ар кандай ыкмалар сыяктуу эле, TDDнин акыркы натыйжалары колдонулган тесттер, алар канчалык так аткарылганы жана акыркы продукттун колдонуучулары туш болгон шарттарды канчалык туурагандай эле жакшы.

Жалпы каталар:

  • тесттерди тез-тез жүргүзүүнү унутуп
  • бир эле учурда өтө көп тест жазуу
  • өтө чоң же одоно сыноолорду жаз
  • ырастоолорду өткөрүп жиберүү сыяктуу өтө маанилүү тесттерди жазуу
  • арзыбаган код үчүн тесттерди жаз
  • жарым-жартылай кабыл алуу: жумушчу топтун бир нече иштеп чыгуучулары TDD колдонушат
  • тесттик топтомдун начар тейлөөсү, көбүнчө узакка созулган тесттик топтомго алып келет
  • сыноо топтому ташталган (б.а. сейрек же эч качан иштебейт) – кээде начар тейлөөдөн, кээде команданын алмашуусунан улам

TDD философиясы

TDD программалык камсыздоону жазууда программистке бала кадамдарын жасоого мүмкүндүк берет. Сыноо функционалдуулукту текшерүүдөн мурун жазылган жана колдонмонун сыноого ылайыктуулугун камсыздайт. Сыналган коддо пайда болгон каталарды аныктоо үчүн аз сандагы кодду тестирлөө жүргүзүлөт. Андан кийин функция ишке ашырылат. Бул "кызыл жашыл рефактор" деп аталат, мында кызыл - ийгиликсиздикти билдирет, ал эми жашыл өтүүнү көрсөтөт. Бул кадамдар андан кийин кайталанат. Программисттин биринчи максаты – алдыдагы милдетке көңүл буруу жана аны жеңүү.

Сыноого негизделген өнүгүү циклинин ар кандай этаптары төмөнкүлөр:
  • Сыноо кошуу: TDDдеги ар бир жаңы функция кандайдыр бир функция ишке ашырылганга чейин орнотулгандыктан, ийгиликсиз болушу керек болгон сыноо менен башталат. Функцияны ишке ашыруудан мурун тест жазуу үчүн зарыл шарт - бул иштеп чыгуучу тарабынан талапты так түшүнүү. Бул колдонуучу окуялары жана колдонуу учурлары аркылуу жетишилет. Ошентип, иштеп чыгуучу программанын кодун жазуудан мурун талапты түшүнөт.
  • Бардык тесттерди иштетиңиз жана жаңы код ишке ашпай калганын текшериңиз: бул сыноо жабдыктары туура иштешин жана жаңы кодсуз жаңы тест ийгиликсиз болуп калбасын камсыздайт. Бул кадам ошондой эле тестти текшерет жана жаңы тесттен ар дайым өтүп кетүү мүмкүнчүлүгүн жокко чыгарат.
  • Кодду жазуу: Кийинки кадам тестти тазалаган кодду жазуу. Жаңы код идеалдуу эмес, бирок кийинчерээк талаптарга ылайык өзгөртүлгөн. Бул жөн гана сыноо үчүн иштелип чыккан жана башка эч кандай функцияларды камтыбайт.
  • Автоматташтырылган тесттерди иштетүү: Эгерде ар бир чыгарылган тест иши тесттен оңой өтсө, бул код бардык талап кылынган спецификацияларга жооп берет дегенди билдирет. Андан кийин циклдин акыркы этабын баштоого болот.
  • Рефакторинг коду: Бул кайталанмаларды алып салууга окшош. Рефакторинг учурдагы функцияларды бузбайт жана өндүрүш менен сыноо кодунун ортосундагы кайталанууну жок кылууга жардам берет. Код азыр талапка ылайык тазаланды.
  • Кайталоо: цикл жаңы сыноо менен мурунку учурлардагыдай кайталанат. Негизги талап - кадамдын көлөмү кичинекей, ар бир сыноонун ортосунда болжол менен 1-10 өзгөртүү. Эгерде жаңы код жаңы сыноодон өтпөй калса, программист көбүрөөк мүчүлүштүктөрдү оңдоону жасашы керек. Үзгүлтүксүз интеграция кайтарым текшерүү пункттарын камсыз кылат.

Ercole Palmeri

Инновациялык бюллетень
Инновация боюнча эң маанилүү жаңылыктарды өткөрүп жибербеңиз. Аларды электрондук почта аркылуу алуу үчүн катталыңыз.

акыркы макалалар

Veeam ransomware үчүн коргоодон баштап жооп кайтарууга жана калыбына келтирүүгө чейин эң комплекстүү колдоону камтыйт

Veeam тарабынан Coveware кибер опузалап инциденттерге жооп берүү кызматтарын көрсөтүүнү улантат. Coveware криминалистика жана ремедиация мүмкүнчүлүктөрүн сунуштайт ...

April 23 2024

Жашыл жана санариптик революция: алдын ала тейлөө мунай жана газ өнөр жайын кантип өзгөртөт

Болжолдуу тейлөө заводду башкарууга инновациялык жана жигердүү мамиле кылуу менен мунай жана газ секторун революция кылып жатат.…

April 22 2024

Улуу Британиянын монополияга каршы жөнгө салуучу органы GenAI боюнча BigTech коңгуроосун көтөрөт

Улуу Британиянын CMA жасалма интеллект рыногунда Big Tech жүрүм-туруму жөнүндө эскертүү берди. Ал жерде…

April 18 2024

Casa Green: Италияда туруктуу келечек үчүн энергетикалык революция

Имараттардын энергетикалык натыйжалуулугун жогорулатуу үчүн Европа Биримдиги тарабынан иштелип чыккан "Case Green" Декрети өзүнүн мыйзам чыгаруу процессин аяктады ...

April 18 2024

Инновацияны өз тилиңизде окуңуз

Инновациялык бюллетень
Инновация боюнча эң маанилүү жаңылыктарды өткөрүп жибербеңиз. Аларды электрондук почта аркылуу алуу үчүн катталыңыз.

бизди ээрчи