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

Что мы тестируем

Тест вызывает функцию на заданном входе и сравнивает результат с ожидаемым. Два принципа:

  1. Тесты могут показать наличие ошибки, но не её отсутствие.
  2. Ошибки обычно прячутся на границах: пустой ввод, один элемент, первый и последний индекс.
Чек-лист граничных случаев
Чек-лист граничных случаев
СлучайПримерЧто проверяет
Пустой ввод[]обращение к первому элементу
Один элемент[5]цикл, который не выполняется
Дубликаты[3, 3, 3]разницу < и <=
Отрицательные числа[-4, -1, -9]начальное значение

Простые тесты на assert

python
def find_max(items):
    best = items[0]
    for x in items:
        if x > best:
            best = x
    return best