Что нового
Форум Тупа-Германия

Приветствуем вас на форуме Тупа-Германия! Зарегистрируйтесь и станьте членом нашего сообщества! После входа в систему вы сможете участвовать в жизни сайта, создавать свои темы и сообщения, а также общаться с другими участниками через личные сообщения!

  • Политические дискусии на данном форуме разрешены только в разделе о политике https://forum.tupa-germania.ru/forums/politika/ Запрещено оскорблять и разжигать. За это в бан.

Программирование по принципу тесты вперёд TDD

Kittiket

Участник
Сообщения
14 193
TDD - это скорее про Integration tests, если уж на то пошло. По крайней мере, начинать надо с них. И конечно не надо фигачить в отрыве от производства.

Есть task, вот на неё и пиши сначала integration test - на всю таск во всём многообразии, да. Как раз хорошо проверяется, кто здесь PO, а кто погулять вышел...
Вот девочка и нафигачила интегрейшн тестов, они даже не так уж плохи были. Просто как-то сильно раньше функционала и прям все в одной таске, а функционал мы тасках в 5 писали, одна еще до сих пор не начата даже. А тесты у нее все еще в одном бранче и мержить надо вместе. С точки зрения черного ящика весь этот функцинал конечно нужен вместе и по отдельности смысла не имеет, но кто ж щас весь функционал в одной большой таске делает если можно разбить и по кусочкам мержить.
 
У

Удаленный 5203

Вот девочка и нафигачила интегрейшн тестов, они даже не так уж плохи были. Просто как-то сильно раньше функционала и прям все в одной таске, а функционал мы тасках в 5 писали, одна еще до сих пор не начата даже. А тесты у нее все еще в одном бранче и мержить надо вместе. С точки зрения черного ящика весь этот функцинал конечно нужен вместе и по отдельности смысла не имеет, но кто ж щас весь функционал в одной большой таске делает если можно разбить и по кусочкам мержить.
Ну так тдд в неправильном разбитии тасок (да, на тесты тоже) не виноват.
 

Kittiket

Участник
Сообщения
14 193
Ну так тдд в неправильном разбитии тасок (да, на тесты тоже) не виноват.
Да, не виноват. Их потом размержили из ее бранча. Но одна еще так и висит и ждет кода и бесит ПМа.
Это конечно был не настоящий ТДД, просто так случайно вышло. Новая девочка, ей сказали копать от забора и до обеда, она и старается. Нет чтобы всех послать нахрен.
 
У

Удаленный 5203

Да, не виноват. Их потом размержили из ее бранча. Но одна еще так и висит и ждет кода и бесит ПМа.
Это конечно был не настоящий ТДД, просто так случайно вышло. Новая девочка, ей сказали копать от забора и до обеда, она и старается. Нет чтобы всех послать нахрен.
Вообще мой коллега сказал как-то, и я с ним согласна, что писать тесты на свой код - это хорошо, потому что если неудобно писать тесты, они получаются громоздкими или требуют больших фикстур (говорим не об e2e, конечно), то код надо по-хорошему переписывать.
 

Boris

Участник
Сообщения
20 769
писать тесты на свой код
можно вопрос от динозавра?
Расскажите отсталому что такое "писать тесты"? Как это работает?
Конкретизирую вопрос:
в 2003 году я написал систему оперативного учета в торговле. Сам. Один. (Delphi + MS SQL Server)
Она работает и её используют до сих пор. Тестировал тогда сам. Ручками.
Что я делал не так?
Как это делается сейчас?
Просто интересно, не стеб вообще.
 

Kutlin Denis

Участник
Сообщения
11 366
Грубо говоря, если у вас есть функция (именно функция, не приложение), которая считает квадратное уравнение.
То написать тест - это написать еще несколько функций, которые вызывают вашу, передавая заранее определенные аргументы и сравнивая результаты работы вашей функции с правильным результатом. Если все правильно- green, если нет - red
 
  • 👍
Реакции: 1 user
У

Удаленный 5203

Как было:
Есть задача - есть НАСТОЯЩИЕ нормальные программисты - они пишут и тестируют свое _сами_, выдают работающий код - имеем результат.
А еще были неповоротливые монолиты, которые билдились овер-дофина времени, и релиз циклы в несколько месяцев, а потом на правку одного бага с прода (не надо про то, что их не было) уходили опять же месяцы релиз-цикла.
Современный мир быстрый. Некогда ждать фидбека, когда все "уже сдано" и разработчикв принципе переключился на другую задачу. Для примера, в эпоху тех же микросервисов в веб-разработке, когда приложение имеет минимальный функционал, но все компонены системы очень тесно взаимосвязаны, а над продюсерами или клиентами отдельноно микросервиса разработчика нет контроля, любое изменение требует проверки, что ничего не отвалилось ни с какой стороны. Автотесты не панацея, но они на определенных уровнях быстро покажут, если кто-то где-то налажал, плюс к тому хорошие тесты так же являются своеобразной живой документацией.
Но да, я не тот человек, которого можнл убедить, что тестирование ее нужно и разработчик сам может прекрасно протестировать (кстати, он и должен, на определённом уровне!), - потому что я тестировщик (на самом деле я еще хуже, я тот человек, который всю эту автоматизацию в компаниях ставит на рельсы).
И я восхищаюсь разработчиками, это правда. За всю карьеру я видела, кажется, только одного, который лажал откровенно и по ленности своей. В основном мои коллеги прекрасные ребята и мы отлично работаем вместе. И разумеется, качество их кода куда выше, чем если бы тот же код писала я (мой код заточен под другое...). Но все мы люди и все мы ошибаемся порой. Увидеть свой собственный косяк, особенно если человек уверен, что вот именно так и должно работать, довольно сложно.
 
  • 👍
Реакции: 5 users

Kutlin Denis

Участник
Сообщения
11 366
2 @Boris
Совершенно верно.
И, да, на первый взгляд это кажется диким бредом. Но при большом проекте (реально большом, а не что-то сотворенное на коленке за месяц) - при ПРАВИЛЬНОМ подходе и руководстве, существенно экономит ресурсы. А уж как здорово экономит ресурсы при поддержке и последующей модернизации...
 
  • 👍
Реакции: 1 users

Boris

Участник
Сообщения
20 769
реально большом, а не что-то сотворенное на коленке за месяц
если это отсыл к тому что я писал, то это было не на коленке, не за месяц и, на мой взгляд, реально не маленькое. Не огромное, но не маленькое точно.
И вот я не понимаю.
Условно говоря, есть (1) высококвалифицированный программист(ы). Которому платят хорошие деньги за качественный код.
И есть еще (2) высококвалифицированный тестер, который пишет отдельную программу (я пока так и не понял как это реально осуществляется) которая проверяет не накосячил ли (1)
Внимание вопросы: не много ли мы платим (1) если за ним надо гов-о подчищать?
Если (2) такой умный, что знает как найти баги (1) может пусть сразу пишет собственно софт а не тесты?
ну и главное - НАХЕРА такая спешка:
Современный мир быстрый.
Чтобы наделать очень быстро кучу дерьма? :)
Я на самом деле недопонимаю.
Возможно я отстал слишком сильно, но с другой стороны... ых. И трава раньше была зеленее.:)
У меня был опыт разработки софта не в одно лицо. Не знаю, как прям щас это точно делается,
но тогда у каждого был его "фронт ответственности" и было четко понятно, если есть баг, то кто это сделал.
У меня стойкое ощущение, что как и большинство товаров стали "одноразовыми" так и софт современный - в ту же сторону идет, или пришел уже.:(

Есть совершенно гениальная штука. Видел первый раз в виде объявления в одном сервисе. Мне лично очень нравится. Вот она:
"Быстро. Качественно. Недорого." - вы можете выбрать любые ДВА варианта.
 

Kittiket

Участник
Сообщения
14 193
Вообще мой коллега сказал как-то, и я с ним согласна, что писать тесты на свой код - это хорошо, потому что если неудобно писать тесты, они получаются громоздкими или требуют больших фикстур (говорим не об e2e, конечно), то код надо по-хорошему переписывать.
Юнит тесты пишут программисты обычно. А интегрейшн и компонент - уже могут и программисты и тестеры и там неважно как код написан, код это черный ящик с апи.
А чтоб юнит тесты писались гладко, особенно на сложном коде, иногда приходится раком вставать и я бы не сказала что это проблема кода. Просто юнит тесты это уже маст хев и один из критериев хорошего кода это покрываемость тестами, так что приходится.
 

Boris

Участник
Сообщения
20 769
на самом деле я еще хуже, я тот человек, который всю эту автоматизацию в компаниях ставит на рельсы
А где вы этому учились? Это вообще что за область знаний/умений?
ППЦ мне интересно стало. :)
 

Kittiket

Участник
Сообщения
14 193
если это отсыл к тому что я писал, то это было не на коленке, не за месяц и, на мой взгляд, реально не маленькое. Не огромное, но не маленькое точно.
И вот я не понимаю.
Условно говоря, есть (1) высококвалифицированный программист(ы). Которому платят хорошие деньги за качественный код.
И есть еще (2) высококвалифицированный тестер, который пишет отдельную программу (я пока так и не понял как это реально осуществляется) которая проверяет не накосячил ли (1)
Внимание вопросы: не много ли мы платим (1) если за ним надо гов-о подчищать?
Если (2) такой умный, что знает как найти баги (1) может пусть сразу пишет собственно софт а не тесты?
ну и главное - НАХЕРА такая спешка:

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

Есть совершенно гениальная штука. Видел первый раз в виде объявления в одном сервисе. Мне лично очень нравится. Вот она:
"Быстро. Качественно. Недорого." - вы можете выбрать любые ДВА варианта.
Вы отстали, да. Лет на 10-20 :)
Проблема не в том что вы за говнокодером подчищаете. Проблема в том что современный софт в одну морду не пишется просто потому что он слишком большой. И софт этот после написания еще довольно долго живет и в него постоянно добавляют что-то или изменяют. Зачастую совсем не те люди, которые писали его изначально. И тесты это не только проверка что условный говнокодер не накосячил вот здесь с этой новой функцией, но и проверка что если тут вытащили носик, там хвостик не отвалился.
 
  • 👍
  • 😲
Реакции: 2 users
У

Удаленный 5203

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

Kutlin Denis

Участник
Сообщения
11 366
2 @Boris
Я уже спать иду, так что в двух словах.
Нет, месяц и коленке это не отсылка к вашему проекту, а образное определение когда есть смысл использовать написание тестов, а когда нет.
Качественную работу программиста никто не отменял.
Равно как и качественную работу тестировщика.
Автосервис может начаться с одного мастера, но если он развивается, то рано или поздно в нем появится диагност, электрик, спец по покраске... "Нельзя объять необъятное" К. Прутков

Основной плюс тестов появлениется, когда приложение или модуль модернизируют. Тесты (уже написанные) позволяют легко увидеть, если в ходе модернизации функций перестала работать изначальная логика.
 
  • 👍
Реакции: 1 user

Степан Бабкин

Админ
Команда проекта
Владелец форума
Сообщения
17 749
Странное заявление, когда я училась мне в один из годов тоже было 18, не поверите :cool:
Ну хорошо, сформулирую иначе. Много ли разработчиков в 1998 понимало принцип и философию TDD?

Что я делал не так?
Это может сказать только клиент. Если клиенты довольны, значит, всё так ? Есть области применения тех или иных методов. С пушки по воробьям не стоит палить.

Я тему поднял как философскую. Откинуть первое решение - это сложно и интуитивно не понятно. Мозг хитрый ? И ленивый ?
 
  • 😍
  • 👍
Реакции: 1 users

SimRe

Участник
Сообщения
3 681
В принципе у нас в дизайне чипов последние лет 15 похожая методология применяется. До того как лезть в транзисторы (для аналоговой части) или описание уровня регистровых передач (для цифровой) должно быть готово тестовое окружение и высокоуровневая модель системы. Во-первых, это готовая и исполняемая спецификация для отдельных блоков, во-вторых каждый блок сразу проверяется в контексте всей системы, в-третьих вероятность того, что разработчик блока сделает ошибку резко снижается.
 
  • 👍
Реакции: 3 users

irinaR

Осваивается
Сообщения
148
сижу и смертельно завидую зеленой завистью.
в моей области тестов нет как класса, совсем. да я и затрудняюсь придумать, как бы это протестить так, чтобы все проверить и все промоделировать.
приходишь на пусконаладку и начинааааается радость.
 
  • 😂
  • 👍
Реакции: 3 users
Верх