Size: a a a

2020 February 22

E

Egor in django_jobs
🔐{% ɹoƃǝʎ %}
Ты думаешь кто то в здравом уме будет пихать всё в 1 кейс? В 1 файл?
История про то что если код слишком сильно связан, то его и тестировать будет сложно, и тесты писать, и поддерживать. Сделать код модульным и удобным для написания тестов под него без переписывания этого кода не получится. Можно, конечно, всё мокнуть, но возникнет вопрос а как это всё рефакторить и действительно тесты тестируют всё что необходимо.
источник

🔐

🔐{% ɹoƃǝʎ %} in django_jobs
Egor
История про то что если код слишком сильно связан, то его и тестировать будет сложно, и тесты писать, и поддерживать. Сделать код модульным и удобным для написания тестов под него без переписывания этого кода не получится. Можно, конечно, всё мокнуть, но возникнет вопрос а как это всё рефакторить и действительно тесты тестируют всё что необходимо.
Это проблема проектирования архитектуры, если ты изначально наворотил тех долга, что к тебе коллекторы домой по ночам стучат, то тут молиться остаётся или тратить тонну часов на рефактор.
источник
2020 February 23

MB

Muslim Beibytuly in django_jobs
Egor
История про то что если код слишком сильно связан, то его и тестировать будет сложно, и тесты писать, и поддерживать. Сделать код модульным и удобным для написания тестов под него без переписывания этого кода не получится. Можно, конечно, всё мокнуть, но возникнет вопрос а как это всё рефакторить и действительно тесты тестируют всё что необходимо.
Можно пойти в другую сторону:
1) использовать моки по минимуму(только внешние платные api),dependency rejection
2) использовать сценарий для описания тестов(pytest-bdd), чем изолированней и атомарный сценарий - тем и чище реализация и тем легче разбивать на модули
источник

AO

Alexander Ovchinnikov 🦁 in django_jobs
источник

MB

Muslim Beibytuly in django_jobs
Как раз этого мы не делаем:D воссоздаём практически все окружение, а так как все orm-odm и запросы создают побочные эффекты - патчим их и так создаём уничтожаемые тестовые среды
источник

E

Egor in django_jobs
🔐{% ɹoƃǝʎ %}
Это проблема проектирования архитектуры, если ты изначально наворотил тех долга, что к тебе коллекторы домой по ночам стучат, то тут молиться остаётся или тратить тонну часов на рефактор.
Какой-то юношеский максимализм, рефакторить то что уже работает и ради того что бы обзавестись тестами, обзавестись просто для галочки. Бизнес твои порывы вряд-ли поймёт.
источник

MB

Muslim Beibytuly in django_jobs
Egor
Какой-то юношеский максимализм, рефакторить то что уже работает и ради того что бы обзавестись тестами, обзавестись просто для галочки. Бизнес твои порывы вряд-ли поймёт.
Прямо сейчас в одном проекте переписываем весь код разработчика, который считал также. В один момент бизнес понял что ошибок и дырок от нового кода больше чем самих фич, сам разработчик в этот момент слился, потому что понял что не сможет все быстро исправлять, один фикс создавал 2 проблемы. Сначала инфраструктура, правила и гайдлайны, затем - быстрые фичи и релизы
источник

E

Egor in django_jobs
Muslim Beibytuly
Прямо сейчас в одном проекте переписываем весь код разработчика, который считал также. В один момент бизнес понял что ошибок и дырок от нового кода больше чем самих фич, сам разработчик в этот момент слился, потому что понял что не сможет все быстро исправлять, один фикс создавал 2 проблемы. Сначала инфраструктура, правила и гайдлайны, затем - быстрые фичи и релизы
Как доперепишите расскажите какой у вас код хороший получился.
источник

MB

Muslim Beibytuly in django_jobs
Egor
Как доперепишите расскажите какой у вас код хороший получился.
Уже переписали один сервис, уменьшили количество уникальных событий в sentry от 215 в день до 3 в неделю и фикс их гораздо проще, в эту неделю было всего 1 событие, которое легко закроем завтра:) поддержка этого сервиса и новые фичи добавляются проще, а ttm уменьшили с месяца до 1-1.5 недели, для бизнеса важна эта часть. Таких метрик не добиться без дисциплины и работы над качеством проекта на уровне кода и инфраструктуры
источник

E

Egor in django_jobs
Muslim Beibytuly
Уже переписали один сервис, уменьшили количество уникальных событий в sentry от 215 в день до 3 в неделю и фикс их гораздо проще, в эту неделю было всего 1 событие, которое легко закроем завтра:) поддержка этого сервиса и новые фичи добавляются проще, а ttm уменьшили с месяца до 1-1.5 недели, для бизнеса важна эта часть. Таких метрик не добиться без дисциплины и работы над качеством проекта на уровне кода и инфраструктуры
А покрытие тестами какое?
источник

MB

Muslim Beibytuly in django_jobs
Egor
А покрытие тестами какое?
94%, поднимаем сейчас
источник

E

Egor in django_jobs
Muslim Beibytuly
94%, поднимаем сейчас
Получилось бы старый код тестами покрыть не переписывая?
источник

MB

Muslim Beibytuly in django_jobs
Egor
Получилось бы старый код тестами покрыть не переписывая?
Нет, потому и пришлось переписать. Была куча каскадных зависимостей, любая проблема окружения могла сломать весь флоу и непонятно как дебажить, сейчас все в ограниченных определённых переходах состоянии и лишних изменений нет
источник

E

Egor in django_jobs
Muslim Beibytuly
Нет, потому и пришлось переписать. Была куча каскадных зависимостей, любая проблема окружения могла сломать весь флоу и непонятно как дебажить, сейчас все в ограниченных определённых переходах состоянии и лишних изменений нет
Ну вот про это я и хотел сказать.
источник

MB

Muslim Beibytuly in django_jobs
Egor
Ну вот про это я и хотел сказать.
О чем? Код-то работал, просто баги мало кто замечал и он потихоньку ломал кучу вещей
источник

E

Egor in django_jobs
История про то что если код слишком сильно связан, то его и тестировать будет сложно, и тесты писать, и поддерживать. Сделать код модульным и удобным для написания тестов под него без переписывания этого кода не получится. Можно, конечно, всё мокнуть, но возникнет вопрос а как это всё рефакторить и действительно тесты тестируют всё что необходимо.
источник

MB

Muslim Beibytuly in django_jobs
Egor
История про то что если код слишком сильно связан, то его и тестировать будет сложно, и тесты писать, и поддерживать. Сделать код модульным и удобным для написания тестов под него без переписывания этого кода не получится. Можно, конечно, всё мокнуть, но возникнет вопрос а как это всё рефакторить и действительно тесты тестируют всё что необходимо.
Любой продукт без тестов - лишь отсрочка времени до полного переписывания этого продукта
источник

🔐

🔐{% ɹoƃǝʎ %} in django_jobs
Egor
Какой-то юношеский максимализм, рефакторить то что уже работает и ради того что бы обзавестись тестами, обзавестись просто для галочки. Бизнес твои порывы вряд-ли поймёт.
Работать то работает, но что то новое внедрять или изменять существующее - бизнес твои порывы вряд ли поймет.
источник

🔐

🔐{% ɹoƃǝʎ %} in django_jobs
Да и рефакторить надо в тот момент, когда ты начнешь понимать что внедрение фич и масштабируемость становится очень трудозатратным процессом.
источник

E

Egor in django_jobs
🔐{% ɹoƃǝʎ %}
Работать то работает, но что то новое внедрять или изменять существующее - бизнес твои порывы вряд ли поймет.
В смысле?
источник