Michael
тестят то, чем будут пользоваться
Илья
странно это, я тестирую то, что хочу протестировать, оно может быть публичным или нет, если есть публичный враппер, который json ами плюётся, а есть внутренняя функция, который struct для json а готовит, я тестирую ее, а не внешний враппер, тк это удобнее.
Daniel
личный опыт как критерий истинности
Daniel
даже не опыт в данном случае, а мнение
Daniel
но есть еще методология
Daniel
и методология говорит нам - тестить надо внешний интерфейс
Илья
что за методология, где тестируют только публичный интерфейс?
Michael
здравый смысл
Aleksandr
Ты тестируешь работоспособность либы, а либа - это ее внешнее апи. Ты можешь тестировать внутренние функции, для себя - для консьюмеров твоего кода оно не нужно
Michael 🌌
Это ж два разных вида тестирований - ты говоришь про интеграционное
Daniel
не-не-не
Daniel
это все те же юнит-тесты
Michael 🌌
А юнит-тесты вполне можно к внутренней части программы применять, не?
Aleksandr
Но тестируя внутренние функции ты тратишь время - реализация может меняться
Илья
так здравый смысл или методология, или "стандарт индустрии"?
Daniel
методология
Andrei 🦉
методология
а какое название у этой методологии?)
Daniel
TDD
Daniel
по чистому TDD разрабатывать приходится редко, но unit-тесты - это оттуда
Илья
тдд - о том, что начинаешь с написание теста
Daniel
да
Илья
где там про публичность?
Daniel
а тест пишешь в соответствии с ТЗ
Michael
https://en.wikipedia.org/wiki/Black-box_testing
Daniel
в ТЗ нет ничего про детали реализации - соответственно, и тест на них написать невозможно
Daniel
аминь
Илья
бюлк бокс - уже ближе к делу, и это одна из методик, там не про юниты, а про интеграционные тесты
Илья
хоть бы прочитал
не прав, почитал
Илья
т.е. тут есть несколько адептов блэк бокс тестирования, и это выдается за единственную верну религию?
Michael
значит не внимательно или зэ нью трололо, диалектика йопта
Daniel
коллеги
Eugeny
всем привет! один из парметров вызова функции это структура с URL и AcceessTocken, собственно вопрос, а потестировать такую функцию - сейчас она валится из-за неверного AT
Daniel
а как ты ее потестируешь без сервера
Daniel
т.е. тут есть несколько адептов блэк бокс тестирования, и это выдается за единственную верну религию?
еще раз - исходя из каких соображений вы пишете тесты на внутренние функции? экспортируемые понятно - их вход и выход прописаны в спеке. а внутренние? сами выдумываете? а смысл?
Илья
есть какие-то особенности текущей реализации, о которых внешний контракт не знает, и знать не должен, их тоже, иногда, стоит протестировать
Daniel
зачем?
Daniel
если они на контракт не влияют - их м писать-то не надо, не то, что тестировать
Vladislav
еще раз - исходя из каких соображений вы пишете тесты на внутренние функции? экспортируемые понятно - их вход и выход прописаны в спеке. а внутренние? сами выдумываете? а смысл?
Если функция делает не самые лекгкие преобразования хочется быть уверенным в том, что она делает их правильно. Это можно заметить и на внешнем интерфейсе, но такие тесты помогают локализовать проблему.
Илья
++
Andrei 🦉
еще раз - исходя из каких соображений вы пишете тесты на внутренние функции? экспортируемые понятно - их вход и выход прописаны в спеке. а внутренние? сами выдумываете? а смысл?
1. спека это прекрасно, но у меня она как правило отсутствует 2. есть, например, локальная функция, которая как то хитро преобразует вывод из базы в структуру. Она больше нигде не используется и экспортировать ее смысла не имеет, но она довольно сложная и поэтому на нее желательно иметь тесты
Daniel
нет спеки - нет тестов
Daniel
вы как дети, ей-богу
Vladislav
Цель тестов не только в том чтобы установить корректность а также в том чтобы понять какой кусок кода некорректен.
Andrei 🦉
нет спеки - нет тестов
ага, ты еще скажи "нет ТЗ - нет сервиса"
Michael
может просто нечем заняться и let's go writing godlike functions)
Daniel
что вы тестировать-то собираетесь без спеки? "неужели я молодец?!" - "да, я молодец!"
Vladislav
что вы тестировать-то собираетесь без спеки? "неужели я молодец?!" - "да, я молодец!"
С точки зрения спеки там вообще http api на сервисе, но в коде там разделение на пакеты, может только api и тестировать?
Michael 🌌
Тесты могут писаться ещё и с расчётом на будущее, чтобы новый разраб не сломал что-то важное
Daniel
дорогая редакция, я худею
Илья
это я все к чему, вкусовщина это, тестировать внешний интерфейс - стоит обязательно, но это не мешает писать тесты для внутреннеей реализации, не мешает писать тесты на вспомогательные функции. И делать тесты локальнее и проще.
Daniel
давайте тогда с начала начнем
Daniel
зачем вы пишете тесты, тратите на них время и деньги?
Vladislav
зачем вы пишете тесты, тратите на них время и деньги?
Чтобы найти ошибки до попадания в продакшн.
Daniel
а?!
Daniel
а как тесты помогают находить ошибки?
Илья
ТДД же, пишешь тест, пишешь реализацию
Vladislav
а как тесты помогают находить ошибки?
Они ожидают результат и сверяют его.
Daniel
а откуда берется эталон, с которым сверять?
Vladislav
От того чего я хочу от этого кода.
Daniel
а в сам код вы их отчего не заложили?
Илья
напоминаю про ТДД
Aleksandr
не прав, почитал
This method of test can be applied virtually to every level of software testing: unit, integration, system and acceptance
Michael
всё интереснее...
Илья
This method of test can be applied virtually to every level of software testing: unit, integration, system and acceptance
* был не прав* поправился ниже :S в смысле хотел написать "был не прав"
Pawel
еще раз - исходя из каких соображений вы пишете тесты на внутренние функции? экспортируемые понятно - их вход и выход прописаны в спеке. а внутренние? сами выдумываете? а смысл?
для себя. Пакет может быть сложным внутри. Я что-то поменяю в нём - паблик апи ломается, паблик тест фейлятся. Как мне понять, что именно сломалось внутри,если нет тестов на private функции ?
Daniel
то есть - у вас есть нетривиальный код (тривиальный тестирования не требует), и есть представления о том, как он должен работать, недокументированные, и вы на их основании написали тесты, и веруете, что это поможет в поиске ошибок? я ничего не упустил?
Daniel
на основании спеки
Vladislav
на основании спеки
То есть вы весь код в Публичных функциях пишете?
Daniel
нельзя считать тесты документацией
Daniel
То есть вы весь код в Публичных функциях пишете?
я тестирую только то, что могу оттестировать. только то, для чего определен эталон