🦥Alex Fails
Berkus
на пехапе
Constantine
Ну тогда расскажи мне, какие юнит-тесты я должен написать, скажем, для модуля преобразования документа из RTF в HTML
Крылатый
Berkus
тут 4 слоя тестов понадобится пожалуй
Крылатый
На каждую функцию же!
Крылатый
// серьёно, ну блин...
Berkus
ну не умеют люди в тестирование не кипятись)
Berkus
жирные не компилящиеся системы умеют писать, а тестировать их - для лохов
Крылатый
Constantine
я просто не верю в unit-тесты от слова совсем, кроме 5% задач
Berkus
самопроверки это ассерты или таки юнит тесты?
Constantine
ассерты
Berkus
одно дело инварианты в рантайме и другое дело ловить фаззинг какой-нибудь ДО релиза
Berkus
и то и другое, очевидно, необходимо
Constantine
проблема, что все модули, которые любят отказывать, могут быть протестированы только человеческой оценкой работоспособности
🐙 Antony
Всем хаюшки,
Кому интересны корутины, посмотрите на https://stdcpp.ru/proposals/9e87c99d-226e-47e8-b88b-231b60e68989
Если есть идеи, предложения, замечания - с радостью выслушаю
Крылатый
Constantine
например, как я должен развязать зависимость между winapi сообщениями, которые триггерит операционная система, и внешней мордой комбобокса для C++ кода
Evgenii
запруфь обратное
Evgenii
пока от тебя ничего значащего не услышал
Evgenii
Dead
В какой программе лучше всего писать код на C++
Berkus
Крылатый
Berkus
#explain_like_i_am_five #unit_testing
Berkus
Constantine
Я понимаю логическую компоненту unit-test, я не понимаю пользу от них. Смотри, по сути речь идет о фасаде, отгораживающем C++ код от winapi и дающем адекватную C++ модель. Ты мне говоришь - поставь стенд вместо системы и тестируй. Вот поверь, код, который проверен человеком по протоколу тестирования на этом фасаде будет проходить ВСЕ тесты, которые основаны на ДОКУМЕНТИРОВАННОМ поведении операционной системы. Написание этого стенда и последующее его использование для тестов займет время, в ТОЧНОСТИ равное написанию всего фасада, поскольку стенд В ТОЧНОСТИ основан на ТОЙ ЖЕ САМОЙ документации, что и фасад
Крылатый
Constantine
Ручное тестирование в два раза дешевле разработки кода
Крылатый
Оно же не даёт понимания причины выявляемых проблем.
Berkus
Крылатый
Тебе придётся как-то воспроизводить ситуацию, дебажить...
Крылатый
Это трата времени разаботки.
Constantine
@berkus вот что тебе не нравится? ты хочешь сказать, что стенд на самом деле не повторит логическую модель фасада с другой стороны?
Крылатый
А можно было это потратить на написание теста и проще находить проблемы.
Constantine
Которому СООТВЕТСТВУЕТ стенд
Evgenii
Constantine
Constantine
как ты думаешь, насколько часто меняется реализация фасадов операционной системы?
Berkus
Berkus
ну и юнит тестами ты тестируешь не винапи
Berkus
мое мде было про это
Constantine
в этом и проблема
Berkus
ты тестируешь адекватность поведения своей прослойки
Berkus
не исключая варианта что ты хочешь тестировать вообще не то что надо тестировать
Andrei
Constantine
в windows vista исправляют ошибку windows xp в comctrl, что поведение одной из функций не соответствует документации - и все ложится, но стенд соответствует не windows vista
Constantine
я примерно понимаю теорию, я лишь не понимаю, как её использовать на практике от слова совсем
Berkus
Constantine
🦥Alex Fails
Andrei
И зря.
Constantine
Andrei
Async-await сделает невозможным использовать легаси в асинхронном контексте, потому что возвращаемые значения надо либо разворачивать, либо заражать future<>
🦥Alex Fails
И зря.
ща посмотрел пример в stdcpp.ru, там они возвращают футуру. а в шарпе возрващают итератор (IEnumerator)
Andrei
Лучше бы breakable-context-ы завезли.
Andrei
По-моему это очень сильный шаг с awaitable значением не туда.
Andrei
Я уже несколько лет работаю на плюсах с корутинами другого типа и представляю их удобства.
Andrei
Тем более что если хочется, то одно через другое выражается.
Igor
Моя проблема в том, что даже если я начну писать с тестов, я НЕ ПОНИМАЮ, что мне писать
Я тож не понимал, как мне писать тесты к задачке "рисовать в куте симуляцию притягивающихся и отталкивающихся шариков"
Долго думал, потом пришел к "пусть будет система с шариками отдельным объектом, буду проверять что через 50 циклов симуляции, один шарик - не движется, а два - движутся навстречу друг другу", и завертелось
Andrei
Это функциональное, а не unit тестирование.
Igor
Чому нет?
Andrei
Unit тестирование, это скорее вайтбокс тестирование, когда ты знаешь код, и юнит-тесты как правило тестируют оооочень маленький кусочек. В идеальном мире, на каждый if в коде должно быть два юнит-теста, которые создают условия для попадания в разные бранчи и проверяют, что код в них попал.
Igor
Ну, перед тем как тестировать симуляции, я писал отдельные тесты аля "если шарик сдвинуть на Х, он 1) сдвинется 2) на Х а не на чтонибудь еще"
Andrei
Да нет, именно об этом. Главное назначение юнит-тестов — проверить, что после изменения кода, ничего не сломалось в тех местах, где код не менялся.
🦥Alex Fails
гарантии, что дом будет стоять дают интеграцинные тесты 😂