LINUX.ORG.RU

Как юнит-тестить распределенные проприетарные системы?

 , ,


1

2

Вот допустим у вас есть клиент, которого разрабатываете вы (ваша команда). И есть сервер, который разрабатывает заказчик. Сервер разрабатывается «как есть», без всяких прототипов и симуляторов. Вам доступны только спеки протокола уровней с сессии до приложения нашей всеми любимой модели OSI/RM, причем, не всегда исчерпывающие, периодически в реализации протоколов находят баги, которые фиксят. Нет контроля за тем, какие данные выдает сервер. Если нужно покрыть определенную часть кода, нужно связываться с заказчиком и просить «а вот такие вот данные отправьте, пожалуйста».

Как в таких условиях можно выработать хоть сколько внятную стратегию тестирования? Получается только «попробовал по спекам реализовать клиента вот так вот -> протестировал -> фейл -> забагрепортил проблему заказчику -> пофиксил. Т.е. нужен специальный чел, который будет дописывать юнит-тесты постфактум, когда проблема уже решена. Т.е. ни о каком test-driven-development при таком подходе к разработке не может идти речи. Или?

★★★★★

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

Операционная система среди них есть? Я сильно сомневаюсь :)

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

или другими словами «мы говношлепы, ни тесты ни код писать не умеем, но во всех проблемах виновата agile методология вообще и CI/CD в частности»

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

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

Кента Бека твоего уже давно в мусорную корзину выкинули «риальные руками-водители» :) Но продолжают цитировать, это да. Преимущественно для защиты своей жеппы.

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

Один тут так хеллуворлд«сокобан» обкладывал тестами... Хотел показать, как надо. Только игры писать не умел — дальше тестов его «бест практис» не ушла.

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

Прочитал твой исходный тест

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

артефакты остающиеся после TDD-программирования можно использовать как высокоуровневую документацию, воплощение бэклога в виде кода

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

такие тесты имеют ценность в первую очередь ВО ВРЕМЯ написания, а не после него

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

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

это способ документирования кода и формализации требований

«Вы жарьте, рыба будет!» (ТМ)

в кои то веки анонимус прав, после того как код уже написан, тесты - это документация

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

У нас текущий проект был получен в наследство от людей у которых было «100% покрытие!» и «N-лет не было проблем» :) У заказчика «все по ITIL(ТМ)!», бугога. Больше буззвордов богу буззвордов. Открываем тесты — ну да «покрытие 75%+» — только чтоб фильтр деплоя в облако обмануть — тесты ниочем (они дергают методы классов... проверяют ничего — ни одного ассерта :) В жесткие ограничения системы не лезет ни одна запланированная допилка (точнее, лезет... если выкинуть целыми кусками написанное ранее (бывшими джавистами(ТМ)) гуано и переписать по-человечески (на языке системы, как он должен использоваться, а не «похожем на джаву языке» (с развесистыми, но ненужными в этом облаке «фабриками»), который им померещился). Аналитик заказчика (которого недавно допрашивали в сенате США о сотрудничестве с русскими хакерами :))) хочет чтоб ей «показали на схеме», где падает существующий код при допилках, делаемых представителями заказчика в визуальном редакторе (их подсадили на этот редактор предыдущие... гм... разработчики, забыв рассказать что сами выбрали лимиты почти в ноль), у нее есть блок-схемы, сама рисовала :) Омг... «Как же мы русские хакеры ей политкорректно объясним... что код в принципе не соответствует ее схемам?» Ну кааак... Если нужно объяснять — то не нужно объяснять. Пригласим эсперта, проведем эвалюацию процессов... Ага. ЩАС :)

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

В идеальном мире — безусловно. Если тесты писались с благой целью :) А не для срезания углов и срочного покидания парохода (проявление гибкости позвоночника :)

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

такие тесты имеют ценность в первую очередь ВО ВРЕМЯ написания, а не после него

в кои то веки анонимус прав, после того как код уже написан, тесты - это документация

Или /0 или документация эта только на подтирку годится :)

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

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

эта документация понятна разработчикам (в отличие 700-страничных талмудов, написанных аналитиками, которые через месяц уже не понимают, «что как бы хотел сказать автор». Иногда по TDD тестам можно восстановить логику работы и задним числом записать ее в ТЗ и контракт :))

эта документация понятна разработчикам (в отличие от говнокода, который является _реализацией_ этой документации. Т.е. может быть простой тест «проверить добавлление элемента в список»: добавить элемент, проверить что он там есть. И реализация - десять страниц чистейшей байтоебской лапши, которая как-то что-то высокооптимизированно куда-то вставляет - последний человек который понимал как это работает давно уволился).

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

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

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

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

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

И да... Предыдущая команда палюбас делала по Кенту Беку, если их спросить. Они «хорошие парни» — спихнули шнягу к сроку, успели на шлюпку. Мы заговорили об объективных проблемах — первое время чувствовали себя непонятыми. Т.е. «плохими». «Парни, ну как же... у нас же не было проблем N-лет». А мы им логи заканчивающихся на продакшене ресурсов (которых не будет больше ни за какие деньги — потому что это «жесткие лимиты» и неоправданно щедрые фильтры запросов к базе по всему коду) и дампы «скрытых эксепшонов», забивающих очередь фоновых процессов недообработанными данными, которые непременно вызовут «странные сбои» в неожиданных местах (со ссылками в жире на раньшие прецеденты, «непонятных багов», которые почему-то дружно N-лет назад замели под ковер как «разовые сбои»).

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

Иногда по TDD тестам можно восстановить логику работы и задним числом записать ее в ТЗ и контракт :))

Иногда по ним невозможно ничего восстановить — мы идем в гит... и что мы видим? Радостные «фиксы» на N-страниц, в коде, который никогда не работал и не мог работать — т.е. фиксы исправляют в нем... ничего :)

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

При восстановлении логики, которой... не было :) Ты же упомянул про «восстановить логику». А ее не было. И восстановишь ты шыш с маслом в один глаз и во второй.

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

Иногда по ним невозможно ничего восстановить — мы идем в гит... и что мы видим? Радостные «фиксы» на N-страниц, в коде, который никогда не работал и не мог работать :)

заведи четкое правило: при коммите в репозиторий, код-ревью проходит только тот код, для которого есть тест. Этот тест глазами смотрит человек. Пока тест не будет отражать суть пул-риквеста, этот пул-риквест не принимается, никогда, ни под каким соусом. Ревьюеры пул-риквестов - ведущие разработчики (в маленькой команде - тупо тимлид), одна из основных обязанностей которого - заниматься таким ревью. НИКТО кроме этих привилегированных персон не может мерджить пул-риквесты в develop, master, и release-бранчи. Всё.

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

заведи четкое правило: при коммите в репозиторий, код-ревью проходит только тот код, для которого есть тест.

Кэп, ты сегодня звездочки обмыл (не лоровские, а на погон)? :)

Это все прекрасно, когда проект с нуля пишешь лично ты :) Когда кот вот он, а спека в мусорном ведре предыдущих разрабов вместе с «процессами», Кентом Беком, книгой о вкусной и здоровой пище, ПДД и т.д. — я тебя поздравляю, ты выиграл супер-игру «как сделать хорошо, когда все уже плохо».

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

у меня такое было. В.. одном госпроекте. В результате уволился и пошел в игростроительную фирму. Отработал там 4 месяца, встретил то же говно, уволился. Когда искал новую контору, предъявлял работодателю два требования: или мы пишем все с нуля, или это действительно хороший проект и там все в порядке по ряду критериев, иначе иди на фиг. Нашел такую контору, это был БАРС Груп, там мы делали одну новую фичу для Минздрава. Дальше нам дали легаси проект, я сделал один этап и уволился. Дальше устроился в Сбертех, и там мы долго делали совершенно новую подсистему, используя исключительно описанные выше принципы. Теперь я вообще не программист и рассказываю людям как делать правильно, но суть ясна. Есть такая книжка даже: https://www.mann-ivanov-ferber.ru/books/rabota_bez_vreditelej/

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

а ими уже занимаются тестировщики

Если их купили на проект — оно конешно. Занимаются. Если нет — нет :) Зато все премии получают «за вовремя сданый проЭкт».

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

чувак, не порти себе нервы, попробуй устроиться в какой-нибудь условный Jetbrains или Яндекс, чтобы работать с адекватными людьми и никогда больше не копаться в этом говне

stevejobs ★★★★☆
()

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

Deleted
()
Ответ на: комментарий от stevejobs

У меня такое было в... Аж дежавю колдобится: в N-коммерческих проектах, сделаных «саперными лопатками джунами за еду под руководством „создающего велью компании“(ТМ) ПМа», которых сразу уволили по окончании (но ПМ получил премию и повышение), и нам принесли в клювике на срочное переписывание :) Все хотят сэкономить, как скупой, который тупой. Но без лоха жизнь плоха. «Покуда живы жадины вокруг...» «Война... Война никогда не меняется». Бабло победит. Все верят и платят еще. Алсо, именно всеобщий цирковой дроч на разнообразный аджайл, начавшийся где-то в районе начала прежнего крысиса, там где он даже не впился в органы размножения (потому что надо б-ть иногда нормально планировать все-таки, а не прогибаться под «возможные хотелки», которые внесут сложность... которой никто не будет пользоваться), — ну разумеется тот аджайл «применяли неправильно», как любят говорить «кризисные менеджеры» в сияющих доспехах, когда их разумеется приглашают порулить тонущими кораблями. Они тоже любят поразбирать «объективные недостатки» в духе всех затрахавшего до печенок кэпа, который еще и слоупок, страдает избирательной памятью — забывая разумеется про внезапно подвинутые влево сроки, превращающие любое «адекватное планирование» в тыкву ради «премии за экономию» — а «правильные процессы» прикладывая болтом, когда выгодно в краткосрочной перспективе.

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

Ты мне сделал похохотать: И от них к нам приходили :) (Я прямо щас в условно одной из них работаю над «совместным проЭктом» с условно другой — отзывы человеков «переманенных» как бы тоже имеются. И отзывы вернувшихся. Шило-намылинг и рассказы «про все хорошее» — они буквально везде. «Индустрия во мгле» :) (Да. Все хорошо примерно у всех в периоде «молодой динамичной компании» — примерно до выхода на IPO)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)

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

seiken ★★★★★
() автор топика

«Жалуйся в соответствующий раздел» — да ты не только ортодокс, а еще и формалист. А про бюрократов тебе просто обидно стало — вот и все твои «нецензурные выражения» — себя узнал :)

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

Это всё ты из зависти написал. Я-то как раз свободный и независимый владелец подкроватного CI (и согласен с анонимусом, что если у вас нет CI - это исключительно ваша вина).

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

раз свободный и независимый

Не ты самоутверждаться в модераторы пролез :)

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

что если у вас нет CI - это исключительно ваша вина)

Это твое мнение как дырка пониже спины :)

И да. CI есть, но вносить в него изменения бывает от случая к случаю обставлено формальностями — потому что щас вылупилась когорта любителей «ставить процессы» — которые в основном этим и заняты. Нужно же отчетики составить о внедрении методик, а как людям это зафорсить через горло? А пусть они все ходят вот сюда и заявки шлют. Ну а паранойя заказчиков — это вообще никак не связано с завистью к твоему лолхосту. Она просто есть :)

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)

Всем спасибо, но дискуссия себя исчерпала (забыл проставить причину удаления: 4.1, 4.3. 4.7, 5.2, 5.4). Если кто-то хочет пожаловаться - в профильный раздел.

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

У кого «у нас»? Мы можем заниматься интеграцией только в рамках нашего проекта. Хотя меня подмывает иногда продублировать CI на пустующем воркстейшене. Но это приведёт к двойной работе, т.к. доставка билдов на сервер релизов с какого-то наколеночного CI всё равно не будет разрешена менеджментом интеграции (и правильно!). И, во-вторых, мне не платят за решение глобальных проблем интеграции на проекте.

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

И, как сказал, аноним в удалённых комментариях, в больших компаниях ты даже не хозяин своего собственного компа. Например, поставить Линукс в нативе ты не имеешь право, потому что он «не поддерживается политикой партии», даже если ты сможешь его настроить в насквозь виндовой инфраструктуре. Есть куча проприетарных кастомных аппов win-only, и если ты в своем линуксе по какой-то причине не сможешь их запустить - это твои проблемы.

Ну, и разумеется если произойдет какая-то утечка инфы с твоего компа, то после выяснения того факта, что ты использовал неодобренный софт, ты лично (а не IT) получишь по полной программе от начальства.

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

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

Цель «наколеночного CI» - не в том, чтобы «доставлять билды на сервер релизов», а в том, чтобы находить проблемы (которые исправляются в кодовой базе, и исправления попадают на «сервер релизов» обычным путем). Если это невозможно или не стоит усилий, то непонятно, зачем ты создал тему.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.