@ProCxx

Страница 1362 из 2477
Anonym
05.10.2017
10:27:52
В какой программе лучше всего писать код на C++

Ilia
05.10.2017
10:27:56
теория unit-test говорит мне "развяжи зависимость модуля", они забывают добавить, как я должен развязать зависимость модуля, который требует данных операционной системы
Идея же простая. Мы делаем трактор. Он состоит из корпуса, двигателя и гусениц. И бака с горючим. Чтобы всё работало вместе, НЕОБХОДИМОЕ условие, чтобы всё работало по отдельности. Работало — значит, выполняло свою функцию. Бак с горючим не должет течь в ненужных местах, а должен из топливопровода. Берём бак, заливаем что-то ... Смотрим . Из бензопровода течёт? Течёт, ок. Из других мест течёт, ? Нет. ОК, С баком всё в порядкп.

Google
Дед Пегас
05.10.2017
10:28:58
Ilia
05.10.2017
10:30:34
#explain_like_i_am_five #unit_testing
Ну а чего делать-то если явно человек не понимает...

Berkus
05.10.2017
10:30:41
Ilia
05.10.2017
10:31:26
Глядим далее. Двигатель должен крутиться, должен заводится, набирать обороты с опред. параметрами, выдавать нужную мощность. .... Берём и смортим. Вот тут кстати нужен СТЕНД (mocking)
А ВОТ КОГДА МЫ ВСЕ части по отдельности проверим, и соберём весь трактор, НАДО ЕГО ТЕСТИРОВАТЬ ЦЕЛИКОМ, Это НЕ UNit-tests. Это уже функциональные тесты.

Constantine
05.10.2017
10:33:03
Глядим далее. Двигатель должен крутиться, должен заводится, набирать обороты с опред. параметрами, выдавать нужную мощность. .... Берём и смортим. Вот тут кстати нужен СТЕНД (mocking)
Я понимаю логическую компоненту unit-test, я не понимаю пользу от них. Смотри, по сути речь идет о фасаде, отгораживающем C++ код от winapi и дающем адекватную C++ модель. Ты мне говоришь - поставь стенд вместо системы и тестируй. Вот поверь, код, который проверен человеком по протоколу тестирования на этом фасаде будет проходить ВСЕ тесты, которые основаны на ДОКУМЕНТИРОВАННОМ поведении операционной системы. Написание этого стенда и последующее его использование для тестов займет время, в ТОЧНОСТИ равное написанию всего фасада, поскольку стенд В ТОЧНОСТИ основан на ТОЙ ЖЕ САМОЙ документации, что и фасад

Constantine
05.10.2017
10:33:51
Ручное тестирование в два раза дешевле разработки кода

Дед Пегас
05.10.2017
10:33:59
Оно же не даёт понимания причины выявляемых проблем.

Google
Дед Пегас
05.10.2017
10:34:45
Тебе придётся как-то воспроизводить ситуацию, дебажить...

Это трата времени разаботки.

Constantine
05.10.2017
10:35:09
@berkus вот что тебе не нравится? ты хочешь сказать, что стенд на самом деле не повторит логическую модель фасада с другой стороны?

Дед Пегас
05.10.2017
10:35:21
А можно было это потратить на написание теста и проще находить проблемы.

Constantine
05.10.2017
10:35:32
Тебе придётся как-то воспроизводить ситуацию, дебажить...
Мне и так придется, вряд ли найденная ошибка СООТВЕТСТВУЕТ документации входа со стороны ОС

Которому СООТВЕТСТВУЕТ стенд

Evgeniy
05.10.2017
10:35:53
Constantine
05.10.2017
10:36:14
как ты думаешь, насколько часто меняется реализация фасадов операционной системы?

Berkus
05.10.2017
10:37:18
ну и юнит тестами ты тестируешь не винапи

мое мде было про это

Constantine
05.10.2017
10:37:42
в этом и проблема

Berkus
05.10.2017
10:37:50
ты тестируешь адекватность поведения своей прослойки

Constantine
05.10.2017
10:38:08
ты тестируешь адекватность поведения своей прослойки
но 90% ошибок будет вызвано моим непониманием winapi

Berkus
05.10.2017
10:38:11
не исключая варианта что ты хочешь тестировать вообще не то что надо тестировать

Andrei
05.10.2017
10:38:43
Constantine
05.10.2017
10:39:06
в windows vista исправляют ошибку windows xp в comctrl, что поведение одной из функций не соответствует документации - и все ложится, но стенд соответствует не windows vista

Google
Constantine
05.10.2017
10:39:35
Ну, Я как мог, разъяснил... Более детально не смогу...
я примерно понимаю теорию, я лишь не понимаю, как её использовать на практике от слова совсем

то ФП над которым те смеешься как раз дает идеальные юнит-тестируемые штуки - функции без сайд эффектов
кстати, я не смеюсь над ФП, если ты обратил внимание я сторонник максимальной compile time строгости

Igor
05.10.2017
10:40:48
я примерно понимаю теорию, я лишь не понимаю, как её использовать на практике от слова совсем
Мне вообще кажется, что нормально протестировать систему целиком можно только когда она изначально написана по принципу "write test first, write code later" А если есть готовая связная система, то ее проще будет переписать "правильно" чем выгрызать тестируемые кусочки и писать юниттесты под них...

Alex Фэils?︙
05.10.2017
10:41:13
Всем хаюшки, Кому интересны корутины, посмотрите на https://stdcpp.ru/proposals/9e87c99d-226e-47e8-b88b-231b60e68989 Если есть идеи, предложения, замечания - с радостью выслушаю
привет) тут с шарповыми yield'ами недавно разобрался. Форнёвер говорит, что в плюсах хотят аналогичную функциональность занести

Andrei
05.10.2017
10:41:33
И зря.

Andrei
05.10.2017
10:42:41
Async-await сделает невозможным использовать легаси в асинхронном контексте, потому что возвращаемые значения надо либо разворачивать, либо заражать future<>

Alex Фэils?︙
05.10.2017
10:43:04
И зря.
ща посмотрел пример в stdcpp.ru, там они возвращают футуру. а в шарпе возрващают итератор (IEnumerator)

Andrei
05.10.2017
10:43:09
Лучше бы breakable-context-ы завезли.

По-моему это очень сильный шаг с awaitable значением не туда.

Я уже несколько лет работаю на плюсах с корутинами другого типа и представляю их удобства.

Тем более что если хочется, то одно через другое выражается.

Igor
05.10.2017
10:47:07
Моя проблема в том, что даже если я начну писать с тестов, я НЕ ПОНИМАЮ, что мне писать
Я тож не понимал, как мне писать тесты к задачке "рисовать в куте симуляцию притягивающихся и отталкивающихся шариков" Долго думал, потом пришел к "пусть будет система с шариками отдельным объектом, буду проверять что через 50 циклов симуляции, один шарик - не движется, а два - движутся навстречу друг другу", и завертелось

Andrei
05.10.2017
10:47:41
Это функциональное, а не unit тестирование.

Igor
05.10.2017
10:48:00
Чому нет?

Ilia
05.10.2017
10:48:03
Ну я уже пытался это втолковать.

Моя проблема в том, что даже если я начну писать с тестов, я НЕ ПОНИМАЮ, что мне писать
Константин, чтобы тебя утешить, я должен сказать, что не только ты один этого не понимаешь. Многие не поинимают. И многои не понимают, где заканчиваются юнит-тесты, и идут уже функциональные. Так и живём...

Andrei
05.10.2017
10:49:23
Unit тестирование, это скорее вайтбокс тестирование, когда ты знаешь код, и юнит-тесты как правило тестируют оооочень маленький кусочек. В идеальном мире, на каждый if в коде должно быть два юнит-теста, которые создают условия для попадания в разные бранчи и проверяют, что код в них попал.

Ilia
05.10.2017
10:49:48
Нет

Не так.

Google
Ilia
05.10.2017
10:50:07
Юнит не об этом.

Igor
05.10.2017
10:50:49
Ну, перед тем как тестировать симуляции, я писал отдельные тесты аля "если шарик сдвинуть на Х, он 1) сдвинется 2) на Х а не на чтонибудь еще"

Andrei
05.10.2017
10:51:34
Да нет, именно об этом. Главное назначение юнит-тестов — проверить, что после изменения кода, ничего не сломалось в тех местах, где код не менялся.

Ilia
05.10.2017
10:51:43
Ты хочешь построить дом. ТЕбе нужны крепкие кирпичи и балки. Если хоть одна балка ломается — у тебя весь дом упадёт. Тебе надо СНАЧАЛА проверить каждый кирпич и балку, ПОТОМ собирать дом. Это НЕ ДАСТ гарантии, что Дом целиком будет стоять. Но ЕСЛИ балка или кирпич будут ломанными, дом ТОЧНО УПАДЁТ.

Alex Фэils?︙
05.10.2017
10:52:09
гарантии, что дом будет стоять дают интеграцинные тесты ?

Ilia
05.10.2017
10:52:13
А white или black box для юнит-тесте — НЕ ВАЖНО.

Admin
ERROR: S client not available

Alex Фэils?︙
05.10.2017
10:53:13
про тесты рендереров вообще тема очень туманная

Ilia
05.10.2017
10:53:34
Да нет, именно об этом. Главное назначение юнит-тестов — проверить, что после изменения кода, ничего не сломалось в тех местах, где код не менялся.
Нет. Это — регрессионные тесты. ЭТо классификация тестов по назначению. Регрессионными могут быть любые тесты, и Unit, и FUnctinal и Intergarion И любые.

Alex Фэils?︙
05.10.2017
10:53:49
про тесты рендереров вообще тема очень туманная
авторы цсса хотели тестить корректность реализации цсс-правил через сравнение скринов

Igor
05.10.2017
10:54:01
Физика мира может быть протестирована, мне интересно, как ты тестируешь, что у тебя шарик рисуется на экране
Я хотел рисовать шарики в буфер и проверять что нужная область закрасилась, но время поджимало)

Andrei
05.10.2017
10:55:03
Юнит-тесты и являются по назначению регрессионными. Из всех регрессионых — они самые детальные. И по этой же причине — они обычно whitebox, и пишутся программистом, и дёргают не за публичные интерфейсы. Я здесь исключительно о практике говорю.

Constantine
05.10.2017
10:55:44
Я хотел рисовать шарики в буфер и проверять что нужная область закрасилась, но время поджимало)
И это просто верх бесполезности по сути; если поломана корневая функциональность, это выясняется мгновенно

Igor
05.10.2017
10:56:12
Нет. Это — регрессионные тесты. ЭТо классификация тестов по назначению. Регрессионными могут быть любые тесты, и Unit, и FUnctinal и Intergarion И любые.
А какие фреймворки есть в цпп под функциональные, системные и регресионные? Теория в универе это замечательно, но инструмента мне дать так и не смогли :/

Andrei
05.10.2017
10:56:47
Всё в кучу. Регрессионность ортогональна функциональности.

Google
Andrei
05.10.2017
10:57:45
Gtest/gmock. Но это скорее для unit тестов. Для интеграционных или функциональных по понятным причинам какой-то универсальный фреймворк написать сложно.

Ilia
05.10.2017
10:59:30
Некоторые фт можно и на базе юниттест фреймворков делать. Часто просто сами пишут, это просто

Очень часто там специфика прет, поэтому универсальный фреймворк не прокатит

Igor
05.10.2017
11:07:22
Gtest/gmock. Но это скорее для unit тестов. Для интеграционных или функциональных по понятным причинам какой-то универсальный фреймворк написать сложно.
ну, вот, как-то так да( на лекциях нам много рассказывали какая замечательная штука функциональные/системные/интеграционные тесты, но боевой пример был всего один, с вебом, когда какая-то фиговина эмулировала нажатия на кнопочки и переходы по ссылочкам, и проверяла что попала на ту страницу куда нужно это было очень здорово, но как функционально/системно/интеграционно тестировать какую-нибудь передачу видеопотока, работу CAD, и прочие прочие области далёкие от переходов по страницам, мне не смогли объяснить(

Andrei
05.10.2017
11:11:18
забудьте, чему вас учили в университетах (с)
Видимо, у меня был хороший университет — никогда такой глупости не слышал ни от кого.

Tema
05.10.2017
11:11:21
забудьте, чему вас учили в университетах (с)
бесит когда так грят, какоето дешовое оскарбление

Constantine
05.10.2017
11:12:39
бесит когда так грят, какоето дешовое оскарбление
Окай. You were right, John. It's not like in the books. (с)

Tema
05.10.2017
11:13:26
Berkus
05.10.2017
11:13:33
Чуваки, плюсоните плс https://gitlab.kitware.com/cmake/cmake/issues/16708#note_326478

Constantine
05.10.2017
11:13:45
тут как то менее резко
Это предсмертная цитата парниши из Constantine

Tema
05.10.2017
11:14:08
Constantine
05.10.2017
11:14:22
кстати Constantine это чьто?
фильм, достаточно забавный, рекомендую под попкорн

Berkus
05.10.2017
11:14:43
Constantine
05.10.2017
11:15:43
Видимо, у меня был хороший университет — никогда такой глупости не слышал ни от кого.
Университет не учит и не может учить практическим аспектам

Я с трудом представляю доктора наук, который на первой лекции по прикладному ПО скажет "сейчас я вас научу правильно ставить костыли"

Но это уже какой-то полный офтоп предлагаю /thread

А вот как в той же Qt написаны unit-test надо посмотреть

Stanislav
05.10.2017
11:19:41
https://miyuki.github.io/2017/10/04/gcc-archaeology-1.html

Страница 1362 из 2477