Кодуңузду текшерүү: модулдук тесттер жана бекитүүлөр
Функцияларыңыз иштээрин далилдеп, рефакторинг учурунда алардын иштешин сактаңыз
Негизги идея: модулдук тест - бул кодуңуздун бир кичине бөлүгүн белгилүү киргизүү маалыматтары менен чакырып, ал күтүлгөн натыйжаны чыгарарын текшерген кичинекей программа. Экранга үңүлүп, ар жолу натыйжа "туурадай көрүнөбү" деп кол менен чечмектин ордуна, сиз текшерүүнү бир жолу жазып, компьютерге аны түбөлүк аткарганга уруксат бересиз. Айлар өткөндөн кийин өзгөртүү жүрүм-турумду бузганда, кулаган тест муну сизге дароо, так сапта көрсөтөт, колдонуучу катаны продакшенде тапканга чейин.
Аягында сиз төмөнкүлөрдү жасай аласыз:
- коддо эмне чын болушу керектигин билдирген бекитүүлөрдү жазуу;
- каалаган тестти Arrange-Act-Assert (Даярдоо-Аракет-Текшерүү) үлгүсү боюнча куруу;
- каталарды ачыкка чыгаруу ыктымалдыгы эң жогору болгон чектик учурларды аңдап тандоо;
- таза C++ тилинде кичинекей, фреймворктон көз каранды эмес тесттик каркас куруп, анын өтүү/кулоо отчётун окуу.
Сиз мурунтан эле көп функциялуу программаларды жазасыз. Тестирлөө - алар менен ишенимдүү иштеп, коркпой өзгөртүүгө мүмкүндүк берген кесипкөй адат. Баштоо үчүн тышкы китепкана керек эмес: стандарттык C++ керектүүнүн баарын берет.
1. Эмне үчүн тест жазуу керек?
"Кол менен" тестирлөө, программаны иштетип, маалымат киргизип, чыгууну окуу, так бир жолу гана иштейт. Ал масштабдалбайт жана эч качан эртең сизди коргобойт. Автоматтык тесттер төрт конкреттүү пайда берет:
- Регрессиядан коргоо. Регрессия - бул мурун иштеген коддо кайра пайда болгон ката. Кечээ өтүп, бүгүн кулаган тест сиздин өзгөртүүңүз бузган жүрүм-турумга так көрсөтөт.
- Рефакторингдеги коопсуздук тору. Сиз кодду кайра түзүп, аттарын өзгөртүп, функцияны бөлүп, алгоритмди алмаштырып, тесттерди кайра иштете аласыз. Эгер алар дагы эле өтсө, байкалуучу жүрүм-турум өзгөргөн жок. Бул тажрыйбалуу инженерлер тест жазуунун эң башкы себеби.
- Аткарылуучу документация. Жакшы тест: "ушул киргизүүдө жооп - мындай" дейт. Жаңы окурман функция кантип колдонулушу керектигин прозадан алда канча тезирээк түшүнөт.
- Тезирээк кайтарым байланыш. Тесттер топтому миллисекундда аткарылып, сиз эч качан кол менен кайра текшербей турган ондогон учурларды текшерет.
Салыштыруу. Учкуч ар бир учуштан мурун ошол эле жазма текшерүү тизмесин өткөрөт. Бул учкуч унутчаак болгондон эмес; белгиленген, кайталанма текшерүүлөр топтому бош эмес адам көзү өткөрүп жиберчү жалгыз көйгөйдү кармаганынан. Сиздин тесттер топтомуңуз - бул кодуңуз үчүн ошондой текшерүү тизмеси.