Re[2]: откуда такая любовь к мокам?
От: Codealot Земля  
Дата: 17.02.22 22:16
Оценка: :))
Здравствуйте, Aquilaware, Вы писали:

A>Теперь, чтобы протестировать все эти алгоритмы интеграционными тестами понадобится M * N * L тестов, что очень много.


Зачем? Тестируй только те комбинации сценариев для каждого слоя, которые тебе нужны. Если твоя бизнес-логика работает корректно с одной базой данных, то тестировать ее подробно для всех остальных баз данных не имеет большого смысла. Это в качестве примера.

A>Но если слои тестировать отдельно, как бы изолируя их друг от друга, то понадобится всего лишь M + N + L тестов чтобы полностью покрыть все алгоритмы проекта.


То есть ты решил вообще не тестировать разные комбинации сценариев и тебе показалось, что ты потестировал все. Не, это так не работает.

Кроме того, ты уклонился от вопроса. Какова мотивация вообще не делать интеграционные тесты?
Ад пуст, все бесы здесь.
Re[10]: откуда такая любовь к мокам?
От: Codealot Земля  
Дата: 17.02.22 22:18
Оценка:
Здравствуйте, baxton_ulf, Вы писали:

_>этот что-ли "Расскажи мне что за клиент..."?

_>в моем понимании так быть не должно если в клиенте нет багов. вот что-бы их найти и нужен мок сервера

Да-да, этот. Только ты опять написал бессвязицу.

_>хе хе, начал огрызаться в ответ. релакс бро




_>что именно не понятно? есть (должен быть) контракт между клиентом и сервером. в своем коде ты вправе ожидать соблюдения этого контракта == спокойно написать мок сервера, который возвращает корректные данные


Ну а когда контракт поменяли, то все моки сами автоматически все обновят. Да же?
Ад пуст, все бесы здесь.
Re[11]: откуда такая любовь к мокам?
От: baxton_ulf США  
Дата: 17.02.22 22:24
Оценка:
Здравствуйте, Codealot, Вы писали:

_>>что именно не понятно? есть (должен быть) контракт между клиентом и сервером. в своем коде ты вправе ожидать соблюдения этого контракта == спокойно написать мок сервера, который возвращает корректные данные


C>Ну а когда контракт поменяли, то все моки сами автоматически все обновят. Да же?


это еще почему? ручками будешь править, как еще? и время на это должно быть запланировано и никакого сарказма
Re: откуда такая любовь к мокам?
От: Sharov Россия  
Дата: 17.02.22 22:33
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Если ты написал интеграционные тесты — ты полностью уверен, что данный конкретный сценарий работает. Если ты написал тест с моками — может быть работает, может нет, хрен его знает.

C>Я чего-то не понимаю?

А какой code coverage у интеграционных тестов, branch coverage?
Кодом людям нужно помогать!
Re[12]: откуда такая любовь к мокам?
От: Codealot Земля  
Дата: 17.02.22 22:33
Оценка:
Здравствуйте, baxton_ulf, Вы писали:

_>это еще почему? ручками будешь править, как еще? и время на это должно быть запланировано и никакого сарказма


Именно, будешь править ручками. А если где-то кто-то недоглядел, то никакого способа узнать о проблеме у тебя нет, пока у юзеров не бомбанет.
Ад пуст, все бесы здесь.
Re[2]: откуда такая любовь к мокам?
От: Codealot Земля  
Дата: 17.02.22 22:35
Оценка:
Здравствуйте, Sharov, Вы писали:

S>А какой code coverage у интеграционных тестов, branch coverage?


А какое это имеет отношение к заданному мной вопросу?
Ад пуст, все бесы здесь.
Re[3]: откуда такая любовь к мокам?
От: Sharov Россия  
Дата: 17.02.22 22:58
Оценка:
Здравствуйте, Codealot, Вы писали:

S>>А какой code coverage у интеграционных тестов, branch coverage?

C>А какое это имеет отношение к заданному мной вопросу?

Если ты написал интеграционные тесты — ты полностью уверен, что данный конкретный сценарий работает.


Откуда такая уверенность? Какой процент кода хотя бы выполняется? Может какой-то if не учтен?
Кодом людям нужно помогать!
Re[4]: откуда такая любовь к мокам?
От: Codealot Земля  
Дата: 17.02.22 23:10
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Откуда такая уверенность? Какой процент кода хотя бы выполняется? Может какой-то if не учтен?


Оттуда, что код который выполняется во время теста и выдает корректные результаты — работает.
Но ты опять уклоняешься от вопроса. Ключевое слово — вместо.
Ад пуст, все бесы здесь.
Re[5]: откуда такая любовь к мокам?
От: baxton_ulf США  
Дата: 17.02.22 23:33
Оценка: +1
Здравствуйте, Codealot, Вы писали:

C>Здравствуйте, Sharov, Вы писали:


S>>Откуда такая уверенность? Какой процент кода хотя бы выполняется? Может какой-то if не учтен?


C>Оттуда, что код который выполняется во время теста и выдает корректные результаты — работает.

C>Но ты опять уклоняешься от вопроса. Ключевое слово — вместо.

да почему же вместо? нужны и те и те. только юнит-тесты (с моками ) позволяют покрыть 100% твоего кода.
тот факт, что в твоем проекте нет интеграционных тестов означает, что его писали люди не слишком высокой квалификации. они не утруждали себя вопросом как гарантировать корректность всего кода при внесении туда изменений или при изменениях в зависимостях. возможно они целиком полагались на QA команду.
Re[6]: откуда такая любовь к мокам?
От: Codealot Земля  
Дата: 17.02.22 23:42
Оценка:
Здравствуйте, baxton_ulf, Вы писали:

_>да почему же вместо? нужны и те и те. только юнит-тесты (с моками ) позволяют покрыть 100% твоего кода.


Потому что многие делают именно вместо, вот почему
Ад пуст, все бесы здесь.
Re[5]: откуда такая любовь к мокам?
От: Sharov Россия  
Дата: 18.02.22 00:05
Оценка: +1
Здравствуйте, Codealot, Вы писали:

S>>Откуда такая уверенность? Какой процент кода хотя бы выполняется? Может какой-то if не учтен?

C>Оттуда, что код который выполняется во время теста и выдает корректные результаты — работает.
C>Но ты опять уклоняешься от вопроса. Ключевое слово — вместо.

Вместо может и не надо. Скажем так, при ограниченных ресурсах и времени я бы предпочел интеграционные тесты --
меньше подвержены изменениям, реально тестируют взаимодействие с др. сервисами. Но качество покрытия кода будет
скорее всего небольшим.
Вот хорошая статья (https://martinfowler.com/articles/practical-test-pyramid.html),
которую я пока сам не осилил, вот цитата оттуда:

1)Write tests with different granularity
2)The more high-level you get the fewer tests you should have


Авторы рекомендуют иметь не очень много интеграционных тестов, по сравнению с юнит, что автоматом
влечет более низкое покрытие.
Но во варианте или-или я бы выбрал интеграционные, конечно. Минимальный показатель, что хоть что-то
работает. Но это не скажет о качестве кода практически ничего.
Кодом людям нужно помогать!
Re[7]: откуда такая любовь к мокам?
От: baxton_ulf США  
Дата: 18.02.22 00:05
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Здравствуйте, baxton_ulf, Вы писали:


_>>да почему же вместо? нужны и те и те. только юнит-тесты (с моками ) позволяют покрыть 100% твоего кода.


C>Потому что многие делают именно вместо, вот почему


может ты просто чего-то не заметил / не знаешь? (просто предположение, никаких наездов )
например в моей предыдущей команде интеграционные тесты писали сами программисты, а в текущей это обязанность QA команды. и где они там у них хранятся лично я не имею понятия
Re: откуда такая любовь к мокам?
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.02.22 02:04
Оценка:
Здравствуйте, Codealot, Вы писали:

C>В чем смысл использовать тесты с моками вместо интеграционных тестов? При условии что интеграционные тесты возможны в данном случае, естественно.


Использование моков не противоречит концепции итреграционных тестов. Ты вполне можешь написать интеграционные тесты для системы где часть компонентов заменена моками.

C>Если ты написал интеграционные тесты — ты полностью уверен, что данный конкретный сценарий работает. Если ты написал тест с моками — может быть работает, может нет, хрен его знает.


Причин на использование моков очень много. Наверное самая очевидная причина это размер проекта и сферы ответственности команд. Если проект достаточно крупный, то сделать интеграционный тест для всей системы может не быть возможным, т.к. надо слишком много данных и симуляций, в то время как моки позволяют сильно сузит объем тестирования. Вторая причина — это возможность зафиксировать конкретное поведение и отслеживать регрессии. Если тестируется система целиком, то регрессия может быть не заметной, т.к. функционал системы (ещё/временно) не используется или используется не правильно.
Re: откуда такая любовь к мокам?
От: vaa  
Дата: 18.02.22 03:28
Оценка:
Здравствуйте, Codealot, Вы писали:

C>В чем смысл использовать тесты с моками вместо интеграционных тестов? При условии что интеграционные тесты возможны в данном случае, естественно.

C>Если ты написал интеграционные тесты — ты полностью уверен, что данный конкретный сценарий работает. Если ты написал тест с моками — может быть работает, может нет, хрен его знает.
C>Я чего-то не понимаю?

https://www.youtube.com/watch?v=9zpG_hJsrL8&t=253s
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[11]: откуда такая любовь к мокам?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 18.02.22 06:44
Оценка:
Здравствуйте, Codealot, Вы писали:

N>>Подход "или-или" я не приемлю с самого начала, он деструктивен.

C>Это не ко мне вопрос. Вот прямо сейчас я гляжу на проект, в котором есть тесты с моками и нет ни одного интеграционного теста. И это не в первый раз.

Ну если подходить именно через "или-или"... вот на текущем проекте есть N компонент. Они разрабатываются по единому плану (например, общее управление конфигурацией). Но при этом есть межвендорские стандарты на взаимодействие, по которым вместо каждого из компонентов можно подставить чужой, если он выполняет все необходимые требования стандартов.
Как по-твоему их лучше тестировать — делать общие интеграционные тесты или таки по частям, каждый отдельно, со своими моками? Я буду толкать в первую очередь именно второй вариант.

N>>Это не определение сценария, в том и проблема.


C>Для данного случая, тесты с моками не имеют никаких плюсов перед прочими тестами. Собственно, все.


Имеют. Если ты проверяешь только во взаимодействии, ты не знаешь, что происходит внутри. Там могут быть любые отклонения от предполагаемого интерфейса взаимодействия.
Но если ты тестируешь каждый компонент сам по себе, то
1) У тебя определены интерфейсы, которые они должны соблюдать.
2) При любой проблеме ты можешь воспрозведением бага у себя проверить это взаимодействие, определить конкретные данные, при которых происходит проблема, снять точный обмен данными, сделать его повторяемым для воспроизведения бага в конкретном компоненте и для последующего автотеста на этот случай.

Как известно, каждая локализация бага или теста на уровень ниже уменьшает стоимость лечения и тестирования в несколько раз. Так что — сплошная польза.
The God is real, unless declared integer.
Re[3]: откуда такая любовь к мокам?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 18.02.22 06:48
Оценка: +4 -1
Здравствуйте, Codealot, Вы писали:

A>>Теперь, чтобы протестировать все эти алгоритмы интеграционными тестами понадобится M * N * L тестов, что очень много.


C>Зачем? Тестируй только те комбинации сценариев для каждого слоя, которые тебе нужны.


Затем, что ты никогда не предугадаешь, как твой софт будут использовать у клиентов. Часто это оказывается такой вариант, который вообще не соответствует предполагаемой начальной цели.

C> Если твоя бизнес-логика работает корректно с одной базой данных, то тестировать ее подробно для всех остальных баз данных не имеет большого смысла. Это в качестве примера.


Если твоя бизнес-логика "работает корректно с одной базой данных", то ты остальные просто не поддерживаешь.

C>Кроме того, ты уклонился от вопроса. Какова мотивация вообще не делать интеграционные тесты?


Я понимаю, что тут типа КСВ, но заведомо обструктивная постановка вопроса скучна.
The God is real, unless declared integer.
Re[2]: откуда такая любовь к мокам?
От: Слава  
Дата: 18.02.22 07:16
Оценка: 3 (2) :))
Здравствуйте, Sharov, Вы писали:

S>А какой code coverage у интеграционных тестов, branch coverage?


Happy path покрыт, а больше в общем-то и не надо. Уж если оно не работает — значит ничего не работает, а если оно работает — значит и проектом можно пользоваться, если не заниматься ерундой.
Re[3]: откуда такая любовь к мокам?
От: Aquilaware  
Дата: 18.02.22 09:23
Оценка: 2 (1)
Здравствуйте, Codealot, Вы писали:

C>То есть ты решил вообще не тестировать разные комбинации сценариев и тебе показалось, что ты потестировал все. Не, это так не работает.


Вы заблуждаетесь. Я как раз решил ультимативно протестировать все комбинации используя всего 30 наборов тестов (при условии что M = N = L = 10), т. е. по одному для каждого алгоритма.

А вы же решили, сделать 1000 интеграционных тестов. Ваше право.
Re[3]: откуда такая любовь к мокам?
От: Mr.Delphist  
Дата: 18.02.22 10:41
Оценка:
Здравствуйте, Слава, Вы писали:

С>Happy path покрыт, а больше в общем-то и не надо. Уж если оно не работает — значит ничего не работает, а если оно работает — значит и проектом можно пользоваться, если не заниматься ерундой.


Я недавно приводил пример, когда happy path у архиватора Ain работал, но когда ему подсунули большой датасет, то полученный архив (свой же!) он распаковать не смог — алгоритм ожидал выделить слишком много памяти. Вот такой сценарий вплоне можно покрыть моками через генерацию соответствующего data stream:
Re: откуда такая любовь к мокам?
От: Ночной Смотрящий Россия  
Дата: 18.02.22 11:28
Оценка: 1 (1) +1 -1 :))
Здравствуйте, Codealot, Вы писали:

C>В чем смысл использовать тесты с моками вместо интеграционных тестов?


Когда счет за запуск интеграционных тестов каждым разработчиком на всех стадиях разработки содержит 6 нулей в долларах, понимание смысла появляется.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.