Тест не доказывает отсутствие ошибок, но ловит большую их часть. Для алгоритмов важнее всего правильно выбрать граничные случаи.
Что мы тестируем
Тест вызывает функцию на заданном входе и сравнивает результат с ожидаемым. Два принципа:
- Тесты могут показать наличие ошибки, но не её отсутствие.
- Ошибки обычно прячутся на границах: пустой ввод, один элемент, первый и последний индекс.
| Случай | Пример | Что проверяет |
|---|---|---|
| Пустой ввод | [] | обращение к первому элементу |
| Один элемент | [5] | цикл, который не выполняется |
| Дубликаты | [3, 3, 3] | разницу < и <= |
| Отрицательные числа | [-4, -1, -9] | начальное значение |
Простые тесты на assert
def find_max(items):
best = items[0]
for x in items:
if x > best:
best = x
return best