JavaRush /Курси /Claude Code SELF /Що таке тест і навіщо він потрібен

Що таке тест і навіщо він потрібен

Claude Code SELF
Рівень 14 , Лекція 1
Відкрита

1. Перевіряти вручну — тупик

— Слухай, — пише Тьома, — а як я взагалі щось доведу? Ну, полагоджу. Відкрию гру, зберу три в ряд, подивлюся на табло. Показало три — значить, нормально.

— А якщо багів буде пʼять? — питає Льоха. — А зон у грі десять? Ти кожну з них будеш вручну клацати після кожної правки? Ти ось із цим одним багом скільки разів гру перезапускав, поки спіймав?

Тьома прикидає. Разів пʼять, точно. Зібрав, глянув, не повірив, ще раз, і ще раз.

— Ну, штук пʼять.

— Ось. Пʼять разів на один баг. А правок за день — десятки. Вручну перевіряти все після кожної — збожеволієш і все одно щось пропустиш. Втомишся, забудеш, проґавиш. Люди на цьому обпікалися, поки не придумали просту річ: нехай машина перевіряє за тебе.

2. Тест — це маленький перевіряльник

— Називається це тест, — продовжує Льоха. — Не лякайтеся слова. Тест — це маленька програма, у якої одна робота: взяти ваш код, дати йому відомий приклад і перевірити, чи вийшла правильна відповідь. Ви один раз описали, що вважається правильним, — і далі машина сама це проганяє, хоч сто разів на секунду, і не втомлюється, і не забуває.

— Тобто програма перевіряє програму?

— Саме так. Дивіться, я вам покажу тест на ваш баг із рахунком. Не лякайтеся, що це код, — читається по-людськи:

test("три в ряд дає 3 очки", () => {
  if (getScore(3) !== 3) {
    return "ПОМИЛКА: очки нараховано неправильно";
  }
  return "усе гаразд";
});

— Читайте просто словами, — Льоха веде по рядках. — «Перевірка під назвою „три в ряд дає 3 очки“. Нарахувати очки за три в ряд — це ось getScore(3). Якщо нараховане не дорівнює трьом — закричати „ПОМИЛКА“. Інакше — сказати „усе гаразд“.» Усе. Ось і весь тест.

Тьома читає ще раз, ворушачи губами. getScore(3) — нарахувати очки за три в ряд. !== 3 — «не дорівнює трьом». Якщо не три — помилка.

— Так це ж… просто, — каже він. — Тут і програмістом бути не треба. «Порахуй. Якщо не три — кричи: „ПОМИЛКА-а-а!“»

— А в цьому й уся суть, — киває Льоха. — Тест — це записане правило «як має бути» плюс крик, якщо стало інакше. У тебе зараз баг: три дає тридцять. Значить getScore(3) поверне тридцять. Тридцять не дорівнює трьом — тест закричить «ПОМИЛКА». Ось так він ловить твій баг, не відкриваючи гру й не клацаючи вручну.

3. Як тест запускають

— А як я його… запущу? — Тьома шукає кнопку.

— Однією командою. У проєкті це зазвичай команда npm test — «прогони всі тести». Її запускають, а далі машина сама бере кожен тест, проганяє його і доповідає. Дивіться, як виглядає звіт, коли тест знайшов твій баг:

  FAIL  score.test.js
    ● три в ряд дає 3 очки
      очікували: 3
      отримали: 30

FAIL — означає «провалено», червоним. — Льоха тицяє в рядки. — Тест чесно доповідає: очікували три, отримали тридцять. Не збіглося — закричав. А ось як він виглядає, коли баг виправлено і рахунок правильний:

  PASS  score.test.js
    ✓ три в ряд дає 3 очки

PASS«пройдено», зеленим. Порахував, збіглося з трійкою, промовчав і зрадів. Ось і вся абетка: червоний FAIL — перевірка щось упіймала, зелений PASS — усе збіглося.

Тьома киває — цю пару, червоне-зелене, він уже мигцем бачив, але тепер зрозумів, звідки вона береться.

4. Що взагалі перевіряють тестами

— І останнє, — каже Льоха. — Тестами покривають не все підряд, а те, де важливий точний результат і де легко непомітно помилитися. Лічильник очок, нарахування нагороди, правила гри — ось це. Дали вхідні дані, знаєте правильну відповідь — перевіряйте тестом.

— А що не покривають?

— Те, що легше перевіряється очима, а не числом. Чи красиво розташувалися кнопки, чи приємний колір, чи плавна анімація — це тесту не доручиш, тут дивиться людина. Тест сильний там, де є правильна відповідь, з якою можна звірити результат. Твій рахунок — саме такий випадок: три в ряд мають дати три. Є з чим звіряти — є що тестувати.

Тьома закриває приклад, і в голові складається проста картина: тест — це машина-перевіряльник, якій ви один раз кажете «ось так правильно», а вона стежить за цим замість вас. Не магія. Просто записане правило і крик, якщо його порушили.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ