В каких случаях автоматизация тестирования нецелесообразна?

Ответ

Автоматизация тестов не всегда дает положительный ROI. Ее стоит избегать в следующих сценариях:

  1. Часто меняющийся нестабильный функционал (особенно UI): Затраты на поддержку тестов превышают пользу.
  2. Одноразовые или редкие проверки: Ручное тестирование быстрее и дешевле.
  3. Тестирование, требующее человеческого восприятия: Проверка визуального дизайна, удобства использования (UX), сложных анимаций.
  4. Исследовательское (ad-hoc) тестирование: Когда нужно импровизировать, изучать систему и находить неочевидные проблемы.
  5. Очень сжатые сроки на старте проекта: Сначала нужно определить стабильные требования.

Пример хрупкого UI-теста на Selenium:

# Тест зависит от конкретного CSS-селектора, который часто меняется
login_button = driver.find_element(By.CSS_SELECTOR, "button[class='btn-login primary']")
login_button.click()
assert driver.current_url == "/dashboard"
# При изменении класса кнопки или структуры страницы тест сломается

В таких случаях эффективнее использовать ручные проверки по чек-листам или инспекцию кода.

Ответ 18+ 🔞

А, ну ты смотри, опять про автоматизацию заговорили, как будто это панацея от всех бед! Слушай сюда, дружище, иногда эта самая автоматизация — это как пытаться забивать гвозди микроскопом: вроде инструмент крутой, а нахуя? Только испортишь и то, и другое.

Вот представь, ты такой весь из себя крутой инженер, накодил тестов на овердохуища, а потом бац — и нихуя не окупилось. ROI, блядь, отрицательный! И знаешь почему? Потому что не везде она нужна, эта твоя автоматизация. Вот тебе пять сценариев, где её лучше обойти за километр, как пьяного дядю Васю на районе.

  1. Функционал, который меняется чаще, чем твоё настроение. Особенно если это UI, эта самая верхушечка, интерфейс. Ты потратишь неделю, чтобы написать тест, а дизайнер придет, чих-пых, и перекрасит кнопку с синей в оранжевую, да ещё и класс ей новый даст. И всё, твой тест — труп. Ты будешь его чинить дольше, чем ручной проверкой всё протестируешь. Полный пиздец, а не экономия.
  2. Проверка, которую нужно сделать один раз в жизни. Ну, или раз в пятилетку. Зачем на это скрипт городить? Взял, руками ткнул, убедился — и свободен. Быстрее, дешевле, и в рот меня чих-пых!
  3. То, что требует глаз-алмаз и мозги. Как скриптом проверить, что анимация плавная, или что шрифт не режет глаза, или что кнопка находится именно там, где палец сам тянется? Да никак! Это ж человеческое восприятие, ёпта! Тут нужен живой тестировщик, а не бездушная железяка.
  4. Исследовательское тестирование. Это когда ты, как Шерлок Холмс, идёшь в систему и ищешь, где бы тут накосячить. Ты не знаешь, что ищешь. Ты импровизируешь! Как это автоматизировать-то? Это ж творческий процесс, блядь! Тут надо думать, а не скрипты гонять.
  5. Проект только стартанул, а дедлайны уже горят. Все бегают, требования меняются каждые пять минут, архитектура плавает. Какая нахуй автоматизация? Сначала надо понять, ЧТО вообще будем строить, а уж потом думать, как это автоматически ломать.

Вот, смотри, классический пример хрупкого теста, от которого волосы дыбом встают. Представь, что ты написал такую хуйню:

# Тест зависит от конкретного CSS-селектора, который часто меняется
login_button = driver.find_element(By.CSS_SELECTOR, "button[class='btn-login primary']")
login_button.click()
assert driver.current_url == "/dashboard"
# При изменении класса кнопки или структуры страницы тест сломается

Видишь? Весь этот код висит на одном-единственном классе кнопки 'btn-login primary'. Фронтендер чихнул — и класса такого больше нет. И всё, тест красный. Ты тратишь время не на поиск багов, а на починку своих же костылей. Эффективность — ноль ебать.

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