Как тестировать

Как понять, что алгоритм, который ты придумал — не работает для всех случаев?

Нужно построить контрпример. Можно это делать ручками перебирая различные тесты, а можно автоматически.

Автоматическое нахождение контрпримера

Cтресс-тестирование — это метод, с помощью которого мы можем запустить наше решение (которое, не правильное) на случайных тестах и сопоставить его результат с вывод решения, которое является решением грубой силы (скорее всего медленное, но точно правильное).

Правильность медленного решения можно проверить, отослав код и получив TL.

Что надо :

  • Решение, которое мы хотим протестировать.
  • Решение методом грубой силы, которое даёт правильные ответы.
  • Генератор для генерации тестовых примеров, которые соответствуют задачи.

Принцип работы:

  1. Генерировать случайный тест. Лучше его записать в файл.
  2. Запустить решение, которое даёт правильный ответ.
  3. Запустить решение, которое неправильное.
  4. Сравнить результаты вывода двух решений. Скорее всего просто на равенство строк, но иногда чекер может быть сложнее.

Можно всё сделать в одном файле, но это менее удобнее.

Написание скрипта

  1. Напишите генератор теста и проверку ответов двух решений в одном файле.
  2. Лучше использовать python/bash. Получается очень кратко и быстро писать.
  3. Используйте seed для генератора. Чтобы при перезапуске стресс-теста проверять предыдущие тесты.

Вот простой пример

Last change: 2023-09-27, commit: 3f8b5e1