61 тест, который потряс программу

В свое время я написал набор тестов для приемочного тестирования критически важного функционала, состоящий из шестидесяти одного теста. Основное желание, которое владело мной при написании данного документа – создать максимальные сложности для логики программы. Именно этот подход обеспечил высочайшую эффективность набора.
За все время существования программы этот набор тестов ни разу не был успешно пройден. Тесты прогоняли около сотни раз, и каждый раз находилась хотя бы одна ошибка.
Исправлялись ошибки. Код и БД подверглись существенному рефакторингу, но тесты не проходили. Выпускались новые версии, в которых отдельно указывалось, что некоторые действия не рекомендуется делать. А программа исправно падала то на одном, то на другом шаге.
Нет, по отдельности тесты проходили. Более того, если из набора выкидывались отдельные тесты, или они проводились в другом порядке, то все было нормально. А вот точно по плану не получалось никак.
Я много раз просматривал этот набор. Пытался уменьшить число тестов, искал, не нужны ли дополнительные проверки. Нет, все нормально. Именно так, а не по другому. Набор полностью охватывал тестируемую функциональность и создавал невероятные проблемы.
Прошло более года. В конце концов, изменились требования к программе, функциональность была обрезана, пользователю приходилось делать больше шагов для достижения той же цели. И программа, наконец, заработала без сбоев. Правда, и тестовый набор исчез. В соответствии с изменением требований изменился и он.

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

Оставьте комментарий

Вы должны войти, чтобы оставить свой комментарий.