Практические советы по тестированию собственных реализаций

Вот категории тестов, которые стоит рассмотреть при тестировании:

1. Прогнать программу на примере

Как правило, в условии задач даётся не менее одного примера с входными данными и верным ответом для них. Эти тесты должны быть проверены в первую очередь, с высокой долей вероятности они есть в проверочном наборе. Более того, на тестах из условия обычно можно проверить формат и вид выводимого ответа. В данном случае нужно быть предельно внимательным - часто даже небольшое отличие (не хватает пробелов между элементами, символы в разных регистрах) может привести к вердикту WRONG ANSWER, даже если по сути ответ правильный.

2. Тесты наименьшего размера и тривиальные тесты

Самое простое что можно протестировать самостоятельно - тесты наименьшего размера. Например, если речь идет о некоторой коллекции элементов, всегда нужно проверять случаи когда элементов всего 1 или даже 0 (конечно, если это предусмотрено интервалами входных параметров). Часто на таких маленьких примерах программы даже ломаются, уходят в бесконечные циклы или даже получают ошибки при обращении к неразрешенному участку памяти. В других случаях, для наименьших тестов может отличаться или не работать логика, корректная для остальных.

Пример: В задаче про обмены можно рассмотреть тесты с массивом из всего 1 элемента, в задаче про 2D массив - массив из одной строки, из одного столбца или совсем из 1 элемента.

3. Тесты с наибольшими возможными данными

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

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

Пример из задачи про суммы:

contest.yandex.ru, Ilya Bychkov’s contest

contest.yandex.ru, Ilya Bychkov’s contest

В задаче про суммы максимальными тестами можно считать:

4. Тесты с различными типами ответов