LINUX.ORG.RU
ФорумTalks

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

 


0

3

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

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

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

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

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



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

А я не делаю никаких «уборок в комнате». Просто если видишь что где-то лежит мусор надо его отнести в мусорку, а не ждать каких-то уборок чтобы это сделать.

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

От уверенности что в доме нет мусора - прекрасно вылечивает белый глянец ;)

windows10 ★★★★★
()

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

goingUp ★★★★★
()

Спасибо, что рассказал. Кстати, ещё вода мокрая, а если ударить по пальцу молотком, то будет больно.

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

Но ведь ты реально не понимаешь зачем это делается.

  1. Ого, оказывается я не знаю зачем писать тесты, нифига какой я тупой!

  2. Так и не в этом вопрос.

lesopilorama
() автор топика
Ответ на: комментарий от cobold

Расскажи чувакам, которым виртуалки из облака удалили без возможности восстановления ))

Полностью их поддерживаю. Данных в интернете и так дофига, пора бы и поудалять что-нибудь. А людишки ещё насрут.

lesopilorama
() автор топика
Ответ на: комментарий от Lordwind

Кек, ты даже не понял о чем речь, IBM только исследование делал, Integrating Software Assurance into the Software Development Life Cycle (SDLC). Спорить с апологетами «херак-херак и в продакшен» не собираюсь. Это уровень говностартапов и монополистов.

Зощитываем те слив тогда.

lesopilorama
() автор топика
Ответ на: комментарий от lesopilorama

писания тестов без необходимости

Просто у него был опыт написания кода не в идеальных условиях.

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

для функции умножения 8-битных чисел, то тебе надо написать 65536 тестов

Это фигня. Я вот с C# на Java вручную Decimal портировал. У мелкомягких тесты на этот класс очень слабенькие. Так я думал целый кластер поднимать, чтобы протестить все арифметические операции на всех разрядах числа.

Оно конечно может и не нужно, но когда у тебя от этого Decimal зависят твои же деньги и твоё будущее благосостояние, то немного по другому смотришь на эти тесты.

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

P.S. Кстати, неплохая история на эту тему недавно всплывала в новостях с почтой в Англии. Там из-за подобных олимпиадников, вроде из IBM, куча невиновных людей за решетку уехало. А кто-то даже вдоль сделал.

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

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

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

Единственные вещи, которые надо тестировать в гриву и хвост:

  1. банки и платёжные системы
  2. движки субд
  3. авионика
  4. радары и ракеты
  5. всё шифрование
  6. ядро OS
  7. алгоритмы консенсусов - все реализации paxos, raft, TRR
  8. прошивки станков и лифтов и кардиостимуляторов
  9. фиреволлы, роутеры (магистральные)
  10. коНпеляторы

Остальное - делай жопой и кати в прод, господь рассортирует!

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

Тестирование нужно тем, кто не умеет писать сразу правильно.

Psilocybe ★★★★★
()

Упадёт на проде - тогда и починим (убьют - тогда и приходите). Бизнесу дешевле полдня полежать

Прикинь, сколько стоит это лежание, если в организации работает 10к сотрудников. Просто в плане того, что все сотрудники получили зарплату за эти пол-дня простоя, но де-факто нормально работать не могли.

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

Если каждая из многочисленных ойти-систем будет ненадёжной, то работать вообще не получится. Сегодня один сервис прилёг, завтра другой, послезавтра третий, потом опять первый. Нахер тогда эти сервисы вообще нужны?

как экономят - на ваших зарплатах, времени на тесты и на зарплаты технических писателей и архитекторов - их бабло - имеют полное право

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

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

какие-то клоуны под полным покрытием имеют ввиду что-то другое

Ну ты-то, конечно, не клоун, твоё мнение истина.

Zhbert ★★★★★
()

Я работал и работаю в компаниях, где проектам по 15-30 лет (да, на поза-поза-прошлой работе реально был проект, написанный на гибриде C++ с Python, которому 30 лет). Где каждая минута простоя может приносить ощутимые убытки.

И также в части этих проектов было хорошее покрытие тестами, а в части не было вообще никакого или было плохое.

Потому по собственному опыту могу сказать, что с тестами намного лучше.

В легаси проекте из сотен тысяч, даже миллионов строк, невозможно одному человеку разобраться до конца. И всегда понимать, как повлияет любое изменение. И протестировать вручную все части приложения после каждого изменения невозможно хотя бы потому что это займёт нереальное время. А быть уверенным, что правка в модуле X не затронет Y и Z - невозможно. Со временем, любой проект превращается в тесно связанную лапшу. Любое изменение может не изменить ничего, а может изменить поведение каких-то других частей совершенно неожиданным образом.

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

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

Баги это благо, крутяк… Иди расскажи это бизнесу. Лучше сразу боингу.

Вы немного на разных уровнях общаетесь. Ты понимаешь, что там происходит со второны «бизнеса», а фирках витает в подкроватном сервере.

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

Кстати, ещё вода мокрая, а если ударить по пальцу молотком, то будет больно.

Палец предварительно можно отсидеть. Вот для этого и нужны тесты :)

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

P.S. Кстати, неплохая история на эту тему недавно всплывала в новостях с почтой в Англии. Там из-за подобных олимпиадников, вроде из IBM, куча невиновных людей за решетку уехало. А кто-то даже вдоль сделал.

Я что-то пропустил, кажется. Как гуглить-то хоть?

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

предполагается, что нормальные люди судьбы на ссаные компьютеры не сильно завязывают

Чего-чего?

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

Можно продать доп услугу по обслуживанию. Ну круто же - прибыль.

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

Это не недавно было. На почте Велико_британии пропадало бабло, не сходился бухгалтерский баланс. Сотрудников обвиняли в воровсте и сажали. Через N лет выяснилось, что сотрудники были не при чём, а ошибка была в софте от IBM.

По каким словам гуглить, не знаю, но история относительно известная.

Chiffchaff
()
Ответ на: комментарий от lesopilorama

Я больше 10 лет пишу программы для промышленного оборудования под разные ПЛК и у нас методология тестирования принципиально не применяется :) Ну, может, в симуляторе прогу погоняешь чутка, чтобы совсем уж криминал устранить – и на объект. И так работают практически все в отрасли. Итальянцы приезжали на ПНР и также писали программу по ходу дела «на коленке», сидя с ноутом в шкафу, как и мы.

Alden ★★★★
()
Последнее исправление: Alden (всего исправлений: 2)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)