@ru_python

Страница 2490 из 9768
Artem
13.03.2017
08:44:39
arisu
13.03.2017
08:45:42
http://amir.rachum.com/blog/2017/03/03/generator-cleanup/ кстати, сам пост

Artem
13.03.2017
08:46:24
в сентри есть breadcrumbs, которые намного полезней просто логов
Чем они намного полезнее обычных структурированных логов?

Artem
13.03.2017
08:47:16
структурированные норм

Google
Artem
13.03.2017
08:48:17
Ну так мы не про дебаг принтэфами говорим

Artem
13.03.2017
08:49:15
какой-нибудь ELK тоже неплохой вариант

Kirill
13.03.2017
09:40:16
Всем привет! Объединяем VR разработчиков https://t.me/vr_developers

Dmitry
13.03.2017
10:40:48
что скажете по поводу написания тестов?
тесты нужны, особенно там где бизнес-логика, генерить много поломанного JSON имхо так себе занятие

Aragaer
13.03.2017
10:43:37
А я скажу, что тдд работает

Dmitry
13.03.2017
10:44:06
А я скажу, что тдд работает
Так же как и социализм

:)

Igor
13.03.2017
10:44:14
какую СИ посоветуете?
gitlab ci, если гитлаб уже есть :)

Aragaer
13.03.2017
10:44:22
когда ты пишешь ровно столько кода, чтобы пройти тест, и ни строчкой больше, то ты получаешь очень надежный и понятный код

Artem
13.03.2017
10:44:37
который проходит тесты и ничего больше?

Aragaer
13.03.2017
10:44:49
потом сам сидишь и думаешь, неужели вот эта задача действительно полностью решается в 20 строк кода

если оно проходит все те тесты, которые ты смог придумать, то оно сможет все, что ты от него хочешь

естессно надо уметь видеть всякие граничные условия

Google
Aragaer
13.03.2017
10:45:58
и естессно не должно быть стандартных проблем кода типа хардкода. Но оно там постепенно вырастает

Artem
13.03.2017
10:46:21
ну так когда ты поставил задачу нормально так, что смог ее описать в тдд с более-менее конкретными тестами, ты уже большую часть работы выполнил

Aragaer
13.03.2017
10:46:26
то есть чтобы пройти тест надо сначала вернуть захардкоженную константу, а уже потом (не ломая теста) исправить это

ну да

это из разряда "я еще пока не знаю, какой мне надо написать код, но интерфейс работы с ним должен быть вот таким"

да, речь идет об отдельных юнитах, интеграция это все-таки сложнее

Artem
13.03.2017
10:48:30
тесты это неявное описание системы через требования, код - явное через реализацию

Aragaer
13.03.2017
10:48:48
да. Но тесты это и еще документация по использованию

Artem
13.03.2017
10:48:59
Код тоже :)

Aragaer
13.03.2017
10:49:07
и некоторая страховка, что код действительно себя ведет так, как написано в тестах

еще один хороший подход - REPL-driven development

когда ты пишешь куски кода и тут же в шелле проверяешь

но тут беда, что у тебя не сохраняется эта страховка на будущее, когда ты будешь вносить правки в этот код

Artem
13.03.2017
10:51:05
ну да, в этом случае через тесты лучше

Aragaer
13.03.2017
10:51:09
ну вобщем да, у меня мозг достаточно хорошо усвоил TDD by example и я уже закоренелый фанатик 8)

еще потом начинаю говорить про Transformation Priority Premise

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

Artem
13.03.2017
10:53:27
проблема в том, что когда у тебя бизнес не очень четко понимает, чего в результате хочет от системы, то чем точнее твои тесты, тем чаще ты их переписываешь

Aragaer
13.03.2017
10:54:32
ну поэтому не надо за бизнес додумывать и писать "точные тесты" до окончательного согласования того, что требуется от конкретно этого юнита

Artem
13.03.2017
10:54:38
и у тебя получается, что поддержка превращается в переписывание 20 строк тестов на 1 строчку кода

Google
Artem
13.03.2017
10:55:09
особенно если ты занимаешься тем, что мокаешь окружение, проверяешь, че сколько раз вызывается, вот это все

Aragaer
13.03.2017
10:55:14
но тут уже наверно я не обладаю нужным опытом - ни разу пока (к счастью) не сталкивался с таким бизнесом

почему же?

Dmitry
13.03.2017
10:55:35
почему же?
Если тест не проверяет логику, можно сказать его нет

Aragaer
13.03.2017
10:55:41
тдд. Сначала тесты, потом код.

без тестов нет кода

но без согласования с бизнесом тестов тоже нет

Dmitry
13.03.2017
10:56:02
Я понял, но если тест "размытый" то можно сказать его нет

Aragaer
13.03.2017
10:56:23
размытого теста тоже нет

Dmitry
13.03.2017
10:56:30
А бизнес говорит "сделай пока как-нибудь так, мы тут посмотрим и переделаем позже"

Aragaer
13.03.2017
10:56:34
тест будет точный, но соответствующий реальным требованиям

Aragaer
13.03.2017
10:56:53
ну вот я говорю, я с таким в жизни не сталкивался.

53r63rn4r
13.03.2017
10:57:06
Dmitry
13.03.2017
10:57:10
Тут ещё мне кажется важно, что если тв пишешь с нуля вообще то там еще сложнее :)

Aragaer
13.03.2017
10:57:34
а, еще

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

хотя да, если тестов много, то это много писанины для изменения одной строки кода

но тут стоит вспомнить о том, что тесты это тоже полноценный код. И их тоже не надо писать методом копипасты

Dmitry
13.03.2017
10:59:13
Ну то есть тебе говорят, есть входные данные, пока они выглядят так (хаос), и вот на выходе нужно получить что-то такое (жесть). Ну а внутри тв сам как-нибудь разберись. Ты делаешь, через 3 дня это все меняется, когда все готово тебе ставят новую задачу: поменять выходные данные, дописать туда ещё что-то, добавить ещё функционал, и переделать часть старого.

Google
Dmitry
13.03.2017
11:00:02
И как бы ты будешь писать овер 100+ тестов каждые 2 дня?

Aragaer
13.03.2017
11:00:20
тесты не пишутся в отрыве от кода

Dmitry
13.03.2017
11:00:35
тесты не пишутся в отрыве от кода
Я ж говорю, код меняется каждые 2 дня

Aragaer
13.03.2017
11:00:46
поменялись входные данные - надо писать другой код для анализа входных данных. Не поменялась внутренняя логика - код для внутренней логики не меняется

Dmitry
13.03.2017
11:00:58
Я не про дописывание функций и методов, я про случай когда ты с нуля строишь сервис

Aragaer
13.03.2017
11:00:59
писать код одновременно с тестами это не +100% к работе.

Dmitriy
13.03.2017
11:01:13
Какбы rgr

Aragaer
13.03.2017
11:01:14
это кажется, что "если ты кроме кода еще и тесты пишешь, то ты пишешь в 2 раза больше"

Admin
ERROR: S client not available

Dmitry
13.03.2017
11:01:16
Aragaer
13.03.2017
11:01:17
не, нифига

light
13.03.2017
11:01:19
Народ

Посоветуйте чтиво по селениуму

Aragaer
13.03.2017
11:01:39
я же говорю, у меня по тдд сам код получается крайне компактный и очевидный

я потом встаю от компа и думаю "не, ну я думал это будет сложнее, чем 20 строк кода"

Dmitry
13.03.2017
11:02:14
light
13.03.2017
11:02:30
Нет

Литература

Aragaer
13.03.2017
11:03:06
http://www.obeythetestinggoat.com/pages/book.html#toc

там чувак вроде селениумом пользуется

Google
light
13.03.2017
11:03:34
Спасиб

Dmitry
13.03.2017
11:03:51
BTW а как в ТДД ты мокаешь базу?

Там же ещё миграции, например

Aragaer
13.03.2017
11:04:13
есть разные варианты

Dmitry
13.03.2017
11:04:14
Или по ходу дела нужно ещё табличку добавить

Или дропнуть

Aragaer
13.03.2017
11:04:24
первый - выделить базу в отдельный юнит и мокать его

Artem
13.03.2017
11:04:30
Ну интерфейсом к юниту, ага

Dmitry
13.03.2017
11:04:33
И это получается тебе нужно видеть наперёд на месяц

Aragaer
13.03.2017
11:04:41
второй - использовать готовые решения для мока чего-либо

например для монги есть mongo-mock

Igelko
13.03.2017
11:05:00
мы кстати БД в тестах с нуля каждый раз накатываем.

Aragaer
13.03.2017
11:05:06
миграции по тдд тоже делаются на самом деле

Igelko
13.03.2017
11:05:10
со всеми миграциями.

Aragaer
13.03.2017
11:05:39
да, делать тестовую базу тоже можно, но это не совсем юнит тесты - или юнит тесты для твоего юнита работы с базой

а так это как раз интеграционные/функциональные тесты

которые я лично предпочитаю писать на чем-то более высокоуровневом. В случае питона беру behave

Eugene
13.03.2017
11:13:03
Ребята, как в nginx в location указать например /uploads/ Чтобы раздавал все папки из uploads кроме например одной ?

Думаю к каждой папке прописывать отдельный location не очень

Страница 2490 из 9768