LINUX.ORG.RU
ФорумTalks

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

 


0

2

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

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

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

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

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



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

Пришла в голову чёткая понятная формулировка - НЕНУЖНО, потому что не бесплатно

Пока тебе в голову приходят очередные мысли, нормальные люди пишут тесты. Не потому что «так надо», а потому что они знают для чего тесты нужны, в отличие от тебя. Ты уже поставил супер-мега-защищенную дверь или продолжаешь познавать мир в интернете?

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

Пока тебе в голову приходят очередные мысли, нормальные люди пишут тесты. Не потому что «так надо», а потому что они знают для чего тесты нужны, в отличие от тебя. Ты уже поставил супер-мега-защищенную дверь или продолжаешь познавать мир в интернете?

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

lesopilorama
() автор топика

Если за это платят – делайте. Если не платят – не делайте.

За деньги – да, – как сказал классик.

На самом деле это вот так просто. Вы не должны для кого-то что-то делать бесплатно.

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

Твоя аргументация ничем не лучше. Это вы в яндексе пытаетесь на всё сэкономить, поэтому и качесто у вас соответствующее. А есть проекты, в которых качество стоит не на последнем месте, поэтому в них пишут и тесты в том числе.

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

Твоя аргументация ничем не лучше. Это вы в яндексе пытаетесь на всё сэкономить, поэтому и качесто у вас соответствующее. А есть проекты, в которых качество стоит не на последнем месте, поэтому в них пишут и тесты в том числе.

Довольно общие слова ни о чём. Яндекс по качеству довольно топовое поделие, никогда не видел error 500 в проде, хотя продом и тестируют.

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

Так речь же не про «считаем», а как реально. Считать-то там могут что угодно, это бесплатно. Ссылаться на IBM с огромными капиталами, которые они могут тратить на любые закидоны, в том числе на ненужные никому тесты - прикол конечно. Это то же самое, что сказать «ну хер ли вы голодаете, посмотрите на меня, на царя, просто жрите пирожные и не будет голода».

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

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

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

Яндекс по качеству довольно топовое поделие, никогда не видел error 500 в проде, хотя продом и тестируют.

Это потому что они электричество отключают в своих ДЦ во время появления таких ошибок? Нет электричества - нет проблем!

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

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

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

пытаетесь на всё сэкономить

начиная с дизайна

мне понравилась возможность оплачивать покупки с пульта телевизора случайным нажатием кнопки «ок»

или то, что логин по номеру телефона и логин по юзернейму с этим же привязанным телефоном - это разные логины

sergej ★★★★★
()

Да и сам код не нужно писать. Все уже написано, хватит притворяться занятыми. Выключайте компьютеры, трудовую книжку получите в отделе кадров, и помните: пицца сама себя не развезет.

thesis ★★★★★
()

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

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

Не люблю такие общие набросы. ТС, приведи пример где они нужны или не нужны, тогда можно более предметно пообсуждать.

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

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

На самом деле ты можешь просто подождать и посмотреть, сколько тебе понаставят клоунов и фейспалмов, чтоб увидеть количество несогласных с тобой лоровцев и подумать над тем, где ты допустил ошибку в своих суждениях ;)

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

мне понравилась возможность оплачивать покупки с пульта телевизора случайным нажатием кнопки «ок»

Дак это не баг же :)

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

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

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

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

Для банков и медицины покрывать надо всё.

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

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

praseodim ★★★★★
()

Полного покрытия тестами, фаззинга и не на Rust.

Ты это сам выдумал и борешься с этим?

Фаззинг надо руками настраивать. Это только у Гугла есть ресурсы, чтобы дрочить фаззингом сишные библиотеки.

Полное покрытие тестами не нужно. Обычно полное покрытие достигается только формально — зайти в каждый блок. Но этого недостаточно, нужно не просто зайти, а зайти с разными значениями и проверить краевые случаи. Так никто пердолиться не будет. Видят «зелёный» отчёт по покрытию и всё.

На раст переписывают только чтобы пол интернета уронить. Для остального он бесполезен.

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

Нормальные люди пишут тесты когда чувствуют в этом нужду и когда степень этой нужды превышает степень желания тратить время на что-то конструктивное или на отдых.

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

firkax ★★★★★
()

Ты просто не работал с большими проектами. Попробуешь — полюбишь тесты. Они экономят время, а не тратят. Без них у тебя проекты будут прямо в руках разваливаться.

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

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

я понимаю, кстати поддержка мне сказала тоже самое :)

sergej ★★★★★
()

А ты вылавливал баги в проекте из 85 тысяч строк месяцами, потому что тот был написан без тестов?

Вот у меня сейчас где то утечка. Всего жалкие 2,5 тысячи строк кода. Утекает память и просаживаются фпс. Тестов не было. Ну давай, умник, расскаи мне - где. Третью неделю копаюсь.

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

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

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

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

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

Да я довольно плотно общался с профессиональным тестером и он о такой ереси про «полное покрытие» рассказывал как раз. Что это бессмысленно и не применяется. Зато применяются всякие «хаки» на этот случай.

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

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

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

Скажи, а ты когда в комнате делаешь уборку - заметаешь\пылесосишь\вытираешь - везде? Или по необходимости?

Ну типа в этом углу позаметал, а тот на глазок чист - ненужно? :D

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

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

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

Не. У меня все сложнее. Это игровая песочница с крайне убогими инструментами дебага (принт). Там нельзя практически ничего смотреть. Я вот даже подумывал всю глобальную таблицу выкачать (луа), но не влезет - физически нельзя.

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

Какой ещё ереси? Это не ересь, это факт. А то что какие-то клоуны под полным покрытием имеют ввиду что-то другое - это к ним вопросы.

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

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

Ограничение на размер сохраняемой информации от 130 до 560 тысяч строк. Переменно В прошлый раз все дропнулось на файле 229 тысяч строк. Это wow 3.3.5 lua5.1.

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

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

firkax ★★★★★
()

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

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

В случае с тестами они, конечно, требуют времени (зато, как правило, стимулируют более качественную архитектуру), но не угрожают сломать что-нибудь.

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

Уборка это не только про мусор. Эх, если бы только мусор. Та же пыль просто копится сама по себе на всех поверхностях. У меня дом 100 квадратов. Если просто не протирать все поверхности, за год на них нарастет до 0.5-1мм пыли. И не только на горизонтальных, что самое мерзкое.

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

Для приложения для выпечки пирожков можно ничего не покрывать.

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

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

тебе надо написать 65536 тестов на все варианты

Обожаю когда про тесты пишут люди, не осилившие даже теорию тестирования. Ту самую, что все скиллбоксы за миску риса рассказывают.

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

Зачем ты о себе в третьем лице пишешь?

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

Вот видишь что какая-то поверхность запылилась и она тебе доставляет эстетическую травму - протираешь. Ждать глобального мероприятия для этого не нужно.

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

Ты их тайком подсовываешь и смотришь на реакцию?!

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

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

Печально когда половина интернета отъехала т.к. такие дурачки в cloudflare даже граничные значения в расте не смогли покрыть. А вот скилбоксовые джуны могут. Так что ты даже до их уровня еще не дорос.

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

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

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

это наоборот было благо

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

Lordwind ★★★★★
()

Сейчас автотесты можно довольно неплохо генерировать с помощью AI-агентов в любых количествах за копейки времени и денег.

Главное представлять себе общую картину что именно и как ты хочешь тестировать.

Поэтому вопрос смысла не имеет.

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