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 ★★★★★
()

Лишь бы работало.

sparkie ★★★★★
()

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

Прикинь, сколько стоит это лежание, если в организации работает 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)
Ответ на: комментарий от Zhbert

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

Это да. Но я немного о другом. Автор преподносит как некое откровение, что у написания тестов есть «ЦЕНА», и что надо соизмерять затраты (труда и времени) на покрытие тестами и пользу от оного (и потенциальный вред от отсутствия тестов, как частный случай их «пользы» в широком смысле). Как будто это не что-то общеизвестное и очевидное даже третьекласснику.

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

Слушай, в том случае с почтой я считаю виноваты все же люди. Они там сидят не для отмашек в стиле «computer said no!», а в том числе для того чтобы разобраться когда что-то идёт не так. А олимпиадники из Fujitsu были.

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

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

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

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

То, что он написал, не означает, что нужно писать тесты без необходимости. Для простого, критического API тесты очень даже нужны. Для API с развесистыми атрибутами и типами переменных в запросах полное покрытие тестами будет раза в 2 больше по размеру самого сервиса.

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

Тащем-то да.
Часто проблемой тестов являются сорванные сроки уже в самом начале проекта.
Как-то: «давай, давай, быстрей, быстрей», а то «на рынок не выйдем, заказчик ушлёпок, уйдёт с деньгами» начинают движ.
Т.к. сроки уже заужены, то они их упускают уже на этапе согласования.
Потом наступает момент «ХХиВП».
Тесты пишут только на то, что падает задним числом, если уж совсем без них нельзя.
Там, где заказчик не ушлёпок, то там он с самого начала прописывает испытательные тесты и продвигает сроки проекта по этим тестам. Но это коропоративные живодёры, которые хотят бонусов в конце года.

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

Тут справедливо будет заметить, что это подходит и не только для разработки ПО…

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

Wow 3.3.5, lua5.1 (весьма урезанный и со своими нюансами, например, полностью вырезана система ввода-вывода).

Я сейчас кластерами отключаю классы и сутки жду - наблюдаю, будут ли просадки. Иначе никак. Триггер просадок тоже неизвестен.

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

неплохо генерировать с помощью AI-агентов

Я был на конфах и общался с теми, кто может себе позволить собственный лунапарк. Никто верхнеуровневые тесты нейронкам не отдает. Точнее идиоты встречаются, но жестокая реальность их постоянно бьет по мордасам. Амазон уволил девопсов, получил даунтайм. МС уволил тестеров, получил сломанную 11. Я сам отдаю максимум 80% кода им, это юниты и контрактные, выше схема ломается. Если ты посмотришь на тестирование самих моделей в глубину, например на математике, то увидишь, что такой охват как минимум неприлично дорогой (пока воздержусь от слова невозможно). И даже когда у нейронок начнет что-то получаться, то все равно нужен будет этап валидации экспертом. А если эксперт сам не пишет тесты, то какой тогда он нахрен эксперт.

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

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

поэтому яндекс это для посмотреть где трамвай

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

Ты упускаешь что все серьезные проекты до сих пор делают по водопаду. Я работал с людьми, которые и АЭС тестили в том числе. Там сроки заложены на старте, а тестирование выделено в отдельный этап, пишется мощный план, утверждается и всё такое.

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

все серьезные проекты до сих пор делают по водопаду

А можно плз перевод?

P.S. А, каскадная модель, понял сам.

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

Говно из разряда аджайлов. Waterfall.

Waterfall — это линейный, последовательный подход, где каждый этап выполняется строго один за другим, что делает его малогибким.
Zhbert ★★★★★
()
Ответ на: комментарий от lesopilorama

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

Я так и делаю, НО я сам являюсь пользователем и единственным погромистом. Поэтому я могу в реальном времени видеть работу системы и её косяки. Ну, и выхода у меня другого нет, тут либо я что-то сделаю, либо просто буду теоретизировать. Но портированный Decimal так и не пущу в прод, нет времени на его глубокое тестирование.

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

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

нормальные люди пишут тесты.

Напиши мне тест для функции double sin(double x) который полностью покрывает весь диапазо возможных аргументов. :)

Тестописальщики, мля. А потом глазками тупят и рассказывают про «насралося».

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

Напиши мне тест для функции double sin(double x) который полностью покрывает весь диапазо возможных аргументов

Зойчем????

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

который полностью покрывает весь диапазо возможных аргументов

Тут еще один кандидат на курсы тестирования от скиллбокса. Выше уже написали зачем пишут тесты. Сам найдешь или нужна помощь зала?

нормальные люди пишут тесты... весь диапазон возможных аргументов... Зойчем... Я х.з

Что-то мне подсказывает, что не в тестах дело

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

Иногда молчание - не согласие и не глупость, а шок и отсутствие слов, чтобы объяснить, как же по проводам подаётся керосин.

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

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

Если бы пример не был таким идеологически провокационным, его бы можно было рассмотреть чуть более (да, там и кроме митмфлара есть отвлекающие факторы) по теме (впрочем Lordwind всё равно бы оказался в итоге не прав).

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

Все убытки, которые они за это получили - благо

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

Lordwind ★★★★★
()

Тут ещё вопрос - как быстро у вас меняется концепция. Если концепция меняется постоянно, дедлайны и без тестов просираются - смысл их писать? Всё равно, 99% кода в итоге (если он будет), пойдёт в помойку. Если вы пишете для армии, где всё чётко выверено, то тестами покрывается всё, что не входит в должностные инструкции человеков. Если человекам по уставу велено вбивать в поле целые значения от 0 до 30 - проверять ничего не надо, в случае чего человеков будет начальство… наказывать, это ж армия.

Промежуточные варианты - промежуточные. Там тесты и полезны, и нужны.

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

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

А да, ты к тому же ещё и сопроводил его неудачным переходом на личности, заявив что-то про меня.

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