LINUX.ORG.RU
ФорумTalks

Культура разработки. Написание тестов на каждый пук своего кода, фаззинг и т.п. Почему это НЕНУЖНО.

 


0

2

Некоторые разводят срачи, мол как можно в 2025 писать без полного покрытия тестами, фаззинга и не на Rust. Стоит бурлёж до неба. Факт бурлежа указывает на неоднозначность вопросика и на отсутствие чётких формулировок у каждой из сторон, скорее всего у той, которая предлагает забить на тесты хрен.

Пришла в голову чёткая понятная формулировка НЕНУЖНОСТИ. Потому, что это как предварительная оптимизация. Аналогия абсолютно точна! Утверждать, что всё должно быть покрыто тестами и фаззингом и быть написано на rust - то же самое, что утверждать, что всё должно быть написано крайне оптимально сразу, ведь ты не знаешь решат ли твою функцию повызвать 1 млн раз в наносекунду и дадут ли потом время переделать!

И предварительно оптимизировать можно, и писать на всё тесты, но у этого есть ЦЕНА. В среднем платить её никому не усралось, ценнее выкатить фичу. Упадёт на проде - тогда и починим (убьют - тогда и приходите). Бизнесу дешевле полдня полежать, чем инвестировать в сотни кнопкодаво-часов, которые будут полгода всё обмазывать своими автоматическими технологиями доказательсва корректности всех веток кода на всех данных, а потом потерять бизнес вообще по другой причине.

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

Короче, краткий ответ: НЕНУЖНО, потому что не бесплатно.



Последнее исправление: lesopilorama (всего исправлений: 5)
Ответ на: комментарий от ugoday

Ещё раз - на самом деле очень малую часть кода можно полноценно протестировать кодом же. Попытка насаждать дебильное заблуждение о всемерной пользе «покрытия тестами» всего и вся - это как минимум идиотизм, а как максимум - намеренное вредительство, коего в сфере программирования выше крыши.

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

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Ещё раз - на самом деле очень малую часть кода можно полноценно протестировать кодом же.

Но как раз синус — очень даже можно.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

Но как раз синус — очень даже можно.

Полноценно - нет. Только на органиченном количестве значений аргумента.

Stanson ★★★★★
()

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

А затем пришел Google со своим Android и оказывается не все покрыто тестами.

Пришлось еще раз засучить рукава и написать еще тестов, чтобы SQLite нормально работал и на мобильных устройствах.

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

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

Nurmukh ★★★★
()
Последнее исправление: Nurmukh (всего исправлений: 1)
Ответ на: комментарий от Stanson

на самом деле очень малую часть кода можно полноценно протестировать кодом же.

У вас специфичный случай. Всякое формошлепство, веб и остальные 95% индустрии прекрасно натягиваются на юнит и функциональные тесты. Да и в вашем случае, как то странно, как вы тестируете релизы вручную, переводите несколько десятков банок краски?)

goingUp ★★★★★
()
Ответ на: комментарий от Stanson

/me разводит руками. Если с первого раза не понятно, то и повторяться не стану.

ugoday ★★★★★
()
Ответ на: комментарий от Stanson

Если разорвать обратную связь, то изменяется функция.

Тут на выбор 2 опции:
- не разрывать обратную связь, тестировать вместе с ней
- поставлять обратную связь не от тестируемого модуля, а от некоего эталона, который узко заточен под конкретные тестовые данные

Ещё раз - есть масса задач для которых «покрытие тестами» вообще никак не сократит количество багов, причём таких задач намного больше чем тех, для которых «покрытие тестами» имеет смысл.

Всё в точности наоборот. Задачи, для которых тесты писать нет смысла - это экзотика.

Покрытие тестами, например, весьма традиционно для перловых модулей уже десятилетия.

Покрытие тестами традиционно для любых приличных проектов, последние лет 10.

Manhunt ★★★★★
()
Ответ на: комментарий от Dimez

АЭС тоже?

А что в код АЭС накатывают апдейты каждую неделю?

no-such-file ★★★★★
()
Ответ на: комментарий от Lordwind

Недавно знакомый PM спрашивал совета в духе «как объяснить разработчикам что нужно писать тесты».

Странный какой-то ПМ. Объяснять про тесты нужно инвесторам и гендиректору. В частности почему на фичу X нужно потратить не две недели, как обычно, а месяц. Разрабам-то обычно пофиг, скажут – напишут. Любой каприз за ваши деньги.

no-such-file ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)