Отладка и тестирование: как находить ошибки в решениях

Отладка — это поиск причины ошибки в программе. Тестирование — проверка решения на заранее выбранных примерах.

Краткий ответ

Отладка — это поиск причины ошибки в программе. Тестирование — проверка решения на заранее выбранных примерах.

Отладка — это поиск причины ошибки в программе. Тестирование — проверка решения на заранее выбранных примерах. Для школьника эти навыки так же важны, как условия, циклы и списки, потому что большинство неправильных ответов появляется из-за невнимательности к деталям.

Начинайте тестирование не с большого набора данных, а с простого примера, который можно проверить вручную. Затем добавляйте граничные случаи: минимальное значение, одно число, пустую строку, одинаковые элементы, отрицательные числа, максимальную границу.

Печать промежуточных значений

Самый доступный способ отладки — временно вывести значения переменных.

numbers = [2, 4, 6]
total = 0

for number in numbers:
    total += number
    print('number =', number, 'total =', total)

print('answer =', total)

После того как ошибка найдена, отладочные print нужно убрать, чтобы программа выводила только ответ.

Проверка функции тестами

Если часть решения оформлена функцией, ее удобно проверять отдельно.

def digit_sum(number):
    total = 0

    while number > 0:
        total += number % 10
        number //= 10

    return total

assert digit_sum(123) == 6
assert digit_sum(900) == 9
assert digit_sum(0) == 0

Третий тест показывает ошибку: текущая функция возвращает 0 для нуля, и это может быть правильным ответом, если условие просит сумму цифр числа. Такой пример нужно явно продумать, а не надеяться, что он не встретится.

Чек-лист перед отправкой

1. Правильно ли прочитаны все входные данные? 2. Совпадает ли формат вывода с условием? 3. Проверены ли границы диапазонов? 4. Нет ли деления на ноль? 5. Работает ли код на минимальном примере?

Отладка экономит время на ОГЭ, ЕГЭ и олимпиадах. Вместо случайных исправлений школьник получает понятный процесс: воспроизвести ошибку, увидеть значения переменных, найти место расхождения с идеей и проверить исправление на нескольких тестах.

Что важно запомнить

https://yadro-code.ru/lessons/without-university/school-programming-basics/school-programming-14