
Илья
15.02.2018
12:23:11

Daniel
15.02.2018
12:23:55
что происходит с коннектом, когда до транзакции добирается gc - я не в курсе, надо код смотреть.
но, скорее всего, ничего хорошего - деструкторов-то нет

Alex
15.02.2018
12:24:20
Да, я читал это. Жаль, что в го нет деструкторов(
Я просто даже не знаю, как поступить. Если вешать defer, то есть шанс, что паника случится уже после нормального коммита.

Google

Daniel
15.02.2018
12:24:53
а надо разбить код по функциям правильно
чтобы не было такой опасности
или выставлять по комиту флаг, и проверять его в deffer
но первый вариант лучше

Илья
15.02.2018
12:25:45
обычно именованный возвращаемый параметр + блок // Making sure the tx is closed regardless of the result
defer func() {
if err != nil {
tx.Rollback()
return
}
err = tx.Commit()
}()

Alex
15.02.2018
12:26:06
но первый вариант лучше
ага, лучше, когда у тебя не используются левые функции для отправки запроса в базу, которые могут паниковать

Daniel
15.02.2018
12:26:29
лучше, когда у вас код правильно структурирован

Alex
15.02.2018
12:28:26
Я понял, надо делать функцию, которая начинается с begin, а заканчивается коммитом) Тогда любая паника может случится только внутри транзакции (ну или при коммите, если соедниение пропало, но тут уже все равно)?

Daniel
15.02.2018
12:29:23
вообще, конечно, лучше бы панику не ловить.

Alex
15.02.2018
12:29:33
ну это понятно
но мало-ли что

Daniel
15.02.2018
12:29:45
ваша программа завершится, транзакция откатится по закрытию соединения
вот как раз на случай мало ли что лучше и не ловить

Google

Alex
15.02.2018
12:30:32
а если это сервер, который также обрабатывает еще 1000 клиентов, у которых все ок?)

Daniel
15.02.2018
12:30:41
если хлопнулся ваш код - лучше заменить панику на возврат ошибки

Pawel
15.02.2018
12:30:48

Daniel
15.02.2018
12:31:10
если не ваш - скорее всего, либа, которая панику кинула, продолжать работу не может

Dmytriy
15.02.2018
13:55:41
Вброшу про тестирование публичных/приватных методов: https://youtu.be/yszygk1cpEc?t=1925

Илья
15.02.2018
14:20:39
видимо, это тоже опилка ?

Daniel
15.02.2018
14:22:23
думаете?

Илья
15.02.2018
14:23:10
ну, аргументы у него такие же, если что-то внутри сложное, нужно это тестировать, - чтобы быть уверенным во всех слоях, и чтобы при ошибке - сразу понимать где именно и что сломали

Daniel
15.02.2018
14:25:43
аргументы в пользу какого тезиса у него такие же?
тут проблема та же, что и с большинством тестов, какие я видел
ваша позиция не основана ни на чем, кроме ваших же ощущений
и тесты вы такие же пишете - ни на чем не основанные, кроме ваших предположений
и необходимость их написания обосновываете вашими же соображениями о здравом смысле
я спросил - зачем нужны тесты
ответ был единственный: "чтобы ошибка не попала в прод"

Илья
15.02.2018
14:28:28
3 пункт на слайде, на который дана ссылка "some people take it too far and choose only integration/acceptance tests" - это то, о чем вы говорите

Daniel
15.02.2018
14:28:45
нет
не об этом
integration/acceptance - это не про юнит-тесты вообще

Илья
15.02.2018
14:29:05
как это - у вас есть спека - это acceptance - то, что волнует заказчика

Google

Daniel
15.02.2018
14:29:17
а вот это - опилки
про заказчика мы поговорили уже

Artem
15.02.2018
14:34:09

Илья
15.02.2018
14:34:10
что тут скажешь, поэтмоу и говорю, докладчик тоже опилка, как и часть этого чата

Daniel
15.02.2018
14:34:54
скажите - а вы всегда стоите на своем до конца?

Илья
15.02.2018
14:37:24
когда есть вермя, и спорим явно о цвете фламастеров, почему бы и нет, ваше подход правилен для 70% кода, который я писал, но говорить о том, что это абсолют - странно

Daniel
15.02.2018
14:38:06
абсолют...
если делать правильно
1. пишете спеку на внутреннюю функцию
2. утверждаете ее у тимлида, вносите как-то в доку (как?)
3. пишете в соответствии со спекой тесты
4. отправляете их тимлиду на ревью

Daniel
15.02.2018
14:39:49
5. он тратит примерно 10 минут, чтобы объяснить вам, почему отдельный тест не нужен, все, что надо, покрыто тестами публичной части
6. вы продолжаете стоять на своем
вот это настоящий абсолют, нерушимый

Илья
15.02.2018
14:42:29
если задача сделана в срок, то тимлида не волнует, на каком уровне разработчик тестирует пакет, также наличие спеки внутренних функций, а стайл гайды вырабатываются командой на основании личного опыта участников

Kirill
15.02.2018
14:42:49
вопрос
а есть ли у вас вообще тимлид?
или это тоже опилки?

Илья
15.02.2018
14:43:31
это кому вопрос?

Google

Kirill
15.02.2018
14:44:55

Илья
15.02.2018
14:45:28
оу, тимлид есть, с ним как раз согласовываются спеки для внешних интерфейсов

Kirill
15.02.2018
14:46:27
а кто будет проверять, что спеке всё соответствует? что спека покрыла все случаи? что реализация также покрыла все случаи?

Daniel
15.02.2018
14:47:14
примерно 90% того кода, что я написал, спеки не имели, не имели и тестов, соответственно

Kirill
15.02.2018
14:47:16
почему разработка спеки не включает в себя разработку тестов?

Daniel
15.02.2018
14:47:46
хорошо, когда имплементишь что-то по RFC - там спека есть

Kirill
15.02.2018
14:47:48

Илья
15.02.2018
14:47:49
может включать, может не вклюать, зависит от процесса, у нас такого нет

Daniel
15.02.2018
14:48:05

Admin
ERROR: S client not available

Kirill
15.02.2018
14:48:23
всем неудобно
ну вот. и я просто стараюсь не писать ничего без тестов

Илья
15.02.2018
14:48:33

Kirill
15.02.2018
14:49:25

Илья
15.02.2018
14:50:17
а так внешние (к сервису) интерфейсы обычно фиксирует qa, я не библиотеку разрабатываю, в этом случае было бы разумнее сразу готовить black box

Andrey
15.02.2018
14:55:33
Хотелось бы внедрить, но непонятно с какого конца начать, чтобы в итоге прийти к тестам, а не имитациям тестов.

Daniel
15.02.2018
14:57:13
вы считаете это нормой?
нормой в смысле "так и надо"? нет, не всегда.
нормой в смысле "заказчик не оплатил тесты"? да, в этом смысле это норма

Илья
15.02.2018
14:57:57
это грустно

Kirill
15.02.2018
14:58:22

Google

Kirill
15.02.2018
14:59:17

Andrey
15.02.2018
14:59:53

Daniel
15.02.2018
15:01:04

Kirill
15.02.2018
15:01:08
Спасибо.
не за что. идею, думаю, будет легко понять, как только фаззинг начнешь применять не только в целях тестирования безопасности, а и в целях поиска и предотвращения своих же ошибок

Илья
15.02.2018
15:01:10

Kirill
15.02.2018
15:02:21

Aleksandr
15.02.2018
15:03:05

Kirill
15.02.2018
15:03:40
работаю в компании, где уже есть mvp, и нужно довести всё до ума

Илья
15.02.2018
15:06:20
я работал в perl-c монолите без спеки и доки, с test coverage 5%, ? поэтому тема меня эта цепляет, если вы клепаете такие продукты без тестов, кто-то потом их будет саппортить и, чем больше тестов, тем лучше ?

Kirill
15.02.2018
15:07:52
у нас до code review таска не доходит, пока тестов нет. всё просто)

Илья
15.02.2018
15:08:22
это - хорошая морска практика ?

Daniel
15.02.2018
15:11:32
вопрос же не в том, писать тесты, или нет, а в том, как сделать их полезными

Kirill
15.02.2018
15:12:11
а бесполезные тесты кто-то считает вообще существующими тестами?
если тест бесполезен - его нет

Daniel
15.02.2018
15:12:49
я видел тесты, которые писались только для того, чтобы ci не жаловался на уменьшение coverage
вместо того, чтобы код удалить - его покрывали формально тестом

Kirill
15.02.2018
15:13:48
ну - я не сомневался, что ты повидал больше, чем я %)

Daniel
15.02.2018
15:14:05
(от этого тоже, кстати, помогает тест в отдельном пакете. мертвый код себя проявляет очевиднее)

Michael
15.02.2018
15:15:23

Kirill
15.02.2018
15:18:35