Daniel
а вот что тестируете вы - я пока не понял
Vladislav
я тестирую только то, что могу оттестировать. только то, для чего определен эталон
Ну вы когда приватную функцию пишете вы же вкладываете в нее какой-то смысл?
Pawel
нельзя считать тесты документацией
докой для прикладного кода - нельзя конечно. для себя и колег по проекту - почему нет?
Илья
то есть - у вас есть нетривиальный код (тривиальный тестирования не требует), и есть представления о том, как он должен работать, недокументированные, и вы на их основании написали тесты, и веруете, что это поможет в поиске ошибок? я ничего не упустил?
если есть спека, касающаяся внутренней реализации, что мешает ее тестировать? публичный интерфейс может быть очень высокоуровневым, тест сьют не удобно собирать, и вполне можно протестировать все во внутренней реализации
Vladislav
при чем тут тесты?
Ну при том, что если вы вынесли что-то в независимый кусок кода, значит, то ожидаете от этого куска какого то поведения.
Daniel
свои ожидания?
Vladislav
и что я тестировать-то буду?
Что эта функция выполняет ваши ожидания.
Vladislav
если спека содержит детали реализации - это говно, а не спека
Если мне только http api опрделено, то мне не тестировать go код. Только внешний интерфейс?
Daniel
Что эта функция выполняет ваши ожидания.
какие-то из моих ожиданий, полное покрытие даже самых простых алгоритмов стоит очень дорого
Pawel
потому, что тесты - это не дока
пусть будет не дока. Но даёт достаточно представления о коде чтобы его сопровождать и читать. Пойнт в том, что (иногда) нет мне смысла делать нетривиальный код отдельным пакетом и писать на него документацию, поскольку не будет он повторно использоваться. Но какие-то гарантии что он работает - таки хочется иметь
Daniel
смотрите
Daniel
самые серьезные ошибки - это неправильно понятая спека
Daniel
именно с тестирования кода на соответствие спеке и надо начинать
Daniel
где заканчивать - ваше дело
Daniel
но обычно заканчивать надо там, где достигнут минимально приемлемый результат
Daniel
а это ровно там, где закончилась спека
Vladislav
для других тестов у вас нет оснований
Отлично. Вашей команде пришло задание на целую систему. Мобильное приложение и бэкенд. По факту у вас есть утвержденный дизайн в спеке и логика. Что тестируем?
Daniel
с этого места мы не то, что тестировать - мы разрабатывать не можем начать
Vladislav
Можете.
Vladislav
Заказчику все равно какое api у вас там.
Daniel
сейчас архитектор разрисует нам структуру и напишет спеки на интерфейсы - и можно будет начинать. тесты на соответствие интерфейсам мы напишем на основании этих спек
Daniel
при чем тут заказчик вообще?
Daniel
более того - это я сам
Daniel
и что?
Vladislav
Вы и архитектор и программист. Вы разрисовываете интерфейс и тестируете его?
Daniel
и что?
Vladislav
Что вы тестируете? свои ожидания от того что вы напроектировали?
Daniel
документированные ожидания
Vladislav
Эта документация живет только среди вашей команды.
Daniel
и что?
Vladislav
Я также могу задокуметировать внутреннее устройства пакета. Мало того это и нужно делать.
Daniel
зачем?!
Vladislav
Просто когда я пишу пакет я и архитектор его и реализатор.
Vladislav
зачем?!
Чтобы когда кто-то в него полез он понимал что происходит.
Daniel
он и так поймет, не беспокойтесь.
Daniel
если уж до деталей реализации доберется
Vladislav
Если там нетривиальный код, то с доками проще.
Daniel
рили?
Daniel
код я все равно прочту, потому, что дока врет все время
Vladislav
Ну то как вы пишете доки это уже ваш опыт.
Vladislav
Или комменты внутри реализации вы тоже не пишете?
Daniel
при чем тут комменты? при чем тут дока на детали реализации? вы помните, о чем разговор?
Pawel
он и так поймет, не беспокойтесь.
понять то поймёт, но с юнит тестами боли меньше кмк
Daniel
конечно, меньше
Daniel
безусловно
Илья
так почему не стоит писать тесты?
Илья
если есть время и желание
Daniel
стоит, конечно! на все, на что есть спека
Vladislav
при чем тут комменты? при чем тут дока на детали реализации? вы помните, о чем разговор?
Доки в го генерятся из комментов. Коммены я пишу и они почти что дока описывающая что я пишу. И я это тестирую.
Daniel
хотите тест - напишите спеку сначала
Илья
хотите тест - напишите спеку сначала
спеку на внутреннюю реализацию? это же говноспека!
Daniel
тогда не пишите
Daniel
но и тестов тогда тоже не надо
Илья
т.е. у вас в комманде так, ок
Daniel
потому, что тесты без спеки - это просто способ убить время
Vladislav
Знаете для заказчика все то что вы как архитектор там наваяли тоже детали реализации.
Daniel
у вас заказчик юнит-тесты пишет?
Vladislav
Нет конечно.
Daniel
вы с какой-то простой мыслью спорите
Daniel
для тестирования нужен эталонный вход и эталонный выход
Daniel
они должны быть документированы и каким-то образом проверены
Vladislav
Отлично. Для заказчика эталон это кнопку в приложении и получить сообщение на экране.
Pawel
хотите тест - напишите спеку сначала
да, это бесспорное утверждение. То есть грубо говоря на каждую тестируемую функцию писать осмысленный Го-стайл коммент
Daniel
вообще, конечно, я от этого разговора устал
Vladislav
именно это и будет тестировать заказчик
Ну тогда не имеет смысла тестировать все что внутри.
Daniel
опилки
Vladislav
Ибо отношение заказчик комманда отлично отбражается в потребитель библиотеки и разработчик.
Daniel
зачем я опять разговариваю с опилками?
Илья
подитожим, по сути вы утверждаете что "но обычно заканчивать надо там, где достигнут минимально приемлемый результат", является абсолютом, почему "обычно" превратилось в "всегда", неясно, насчет тестирования публичного АПИ никто не спорит, но вы продолжаете гнуть свою линию
Daniel
илья, у вас тимлид есть?