Ответ
Автоматизация тестов не всегда дает положительный ROI. Ее стоит избегать в следующих сценариях:
- Часто меняющийся нестабильный функционал (особенно UI): Затраты на поддержку тестов превышают пользу.
- Одноразовые или редкие проверки: Ручное тестирование быстрее и дешевле.
- Тестирование, требующее человеческого восприятия: Проверка визуального дизайна, удобства использования (UX), сложных анимаций.
- Исследовательское (ad-hoc) тестирование: Когда нужно импровизировать, изучать систему и находить неочевидные проблемы.
- Очень сжатые сроки на старте проекта: Сначала нужно определить стабильные требования.
Пример хрупкого 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, блядь, отрицательный! И знаешь почему? Потому что не везде она нужна, эта твоя автоматизация. Вот тебе пять сценариев, где её лучше обойти за километр, как пьяного дядю Васю на районе.
- Функционал, который меняется чаще, чем твоё настроение. Особенно если это UI, эта самая верхушечка, интерфейс. Ты потратишь неделю, чтобы написать тест, а дизайнер придет, чих-пых, и перекрасит кнопку с синей в оранжевую, да ещё и класс ей новый даст. И всё, твой тест — труп. Ты будешь его чинить дольше, чем ручной проверкой всё протестируешь. Полный пиздец, а не экономия.
- Проверка, которую нужно сделать один раз в жизни. Ну, или раз в пятилетку. Зачем на это скрипт городить? Взял, руками ткнул, убедился — и свободен. Быстрее, дешевле, и в рот меня чих-пых!
- То, что требует глаз-алмаз и мозги. Как скриптом проверить, что анимация плавная, или что шрифт не режет глаза, или что кнопка находится именно там, где палец сам тянется? Да никак! Это ж человеческое восприятие, ёпта! Тут нужен живой тестировщик, а не бездушная железяка.
- Исследовательское тестирование. Это когда ты, как Шерлок Холмс, идёшь в систему и ищешь, где бы тут накосячить. Ты не знаешь, что ищешь. Ты импровизируешь! Как это автоматизировать-то? Это ж творческий процесс, блядь! Тут надо думать, а не скрипты гонять.
- Проект только стартанул, а дедлайны уже горят. Все бегают, требования меняются каждые пять минут, архитектура плавает. Какая нахуй автоматизация? Сначала надо понять, ЧТО вообще будем строить, а уж потом думать, как это автоматически ломать.
Вот, смотри, классический пример хрупкого теста, от которого волосы дыбом встают. Представь, что ты написал такую хуйню:
# Тест зависит от конкретного 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'. Фронтендер чихнул — и класса такого больше нет. И всё, тест красный. Ты тратишь время не на поиск багов, а на починку своих же костылей. Эффективность — ноль ебать.
В таких ситуациях, ей-богу, проще и надёжнее старый добрый чек-лист взять, руками пройтись, да ещё и в код глянуть — авось, что-то кривое увидишь. Не надо из всего делать космический корабль. Иногда велосипед — самое то.