Як знайти помилки в коді - hexlet help

Код на Хекслете перевіряється за допомогою так званих автоматичних тестів. Зазвичай вони написані на тій же мові, на якому і сам код. Загальний принцип роботи такого виду тестування досить простий. Тестована програма завантажується в пам'ять і викликається з різними параметрами, а тести стежать за тим, щоб її поведінка відповідала очікуваному.







Коли код не проходить тести, то зазвичай говорять що тести впали. У цей момент починається найцікавіше. Необхідно зрозуміти де і чому виникла помилка. І висновок тестів в цьому процесі відіграє ключову роль, це головний помічник і провідник. Але необхідна деяка вправність щоб почати робити правильні висновки з того, що пишуть тести.

твердження

Затвердження - це перевірка (функція), яка викликає ваш код з певними параметрами і перевіряє, що функція повертає очікуваний результат. наприклад:

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

Висновок в такому випадку виглядає приблизно так:







Висновок можна розділити на дві частини. Перша - це текстові повідомлення з описом, того що очікувалося (від функції), а що було отримано. Подробиця виведення залежить від виду затвердження і можливостей тестового середовища. У коді вище це рядок AssertionError: 3 == 1. Читається вона наступним чином: "очікувалося що функція поверне 3, але вона повернула 1". Це вже добре, але ще хотілося б побачити з якими параметрами була викликана функція. І в цьому нам допоможе друга частина виведення.

Друга частина називається "backtrace", вона містить список функцій, які послідовно викликалися в коді. Порядок виведення, найчастіше, зворотний: на початку те, що створювалося останнім. В першу чергу потрібно, починаючи з кінця, знайти перша згадка функції з файлу, який схожий на тестовий. Зазвичай його називання містить слово `test`. В наведеному вище прикладі це рядок at Object. (Test.js: 4: 8). У цьому рядку завжди є вказівка ​​на рядок, на якій і буде виклик цього твердження. В даному випадку це рядок 4. Все що тепер залишається, це зайти в відповідний файл і подивитися те, як викликалася ваша функція.

Попередження компілятора / інтерпретатора

синтаксичні помилки

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

інші помилки

Великий клас помилок, які можуть виникати в процесі розробки. У висновку завжди присутній повідомлення про помилку, яке дуже важливо зрозуміти. Це те саме місце, де відбувається дуже багато гугленія. Так само ці помилки містити висновок `backtrace`, за яким можна знайти те місце, в якому виникла помилка і спробувати його проаналізувати.

Багато з цих помилок легко знаходяться за допомогою отладочной друку (див. Урок "Отладочная друк" в курсі "Основи програмування").

Нічого не знайдено







Схожі статті