Информация об изменениях

Сообщение Re[10]: Разработка через тестирование бесполезна от 18.06.2021 9:41

Изменено 18.06.2021 9:44 netch80

Re[10]: Разработка через тестирование бесполезна
Здравствуйте, Sharov, Вы писали:

N>>Ну а интеграционные, что, не абстрагируются от внешнего мира?

S>Ну это почти боевая эксплуатация, т.е. как реальный пользователь будет взаимодействовать с системой.
N>>Или речь про проведение границы между "чистыми" и "нечистыми" функциями?
S>В некотором роде да, речь про изоляцию.

Как-то всё это абстрактно. Вот у меня есть:
1. Transport layer.
2. Transaction layer, использует transport layer.
3. Dialog layer, использует transaction layer.
Остановимся на этом (там ещё уровня 4, но не усложняем).

Выше пока не поднимаемся, трёх достаточно. Transport layer незамоканный отправляет в сеть и принимает; замоканный зовёт нужные коллбэки.
Уровень транзакций незамоканный общается с транспортным, замоканный дёргает вызовы некоего мока.
Ну и с третьим точно так же.
Если я тестирую диалоговый уровень — что например по получению "200 OK" произошёл переход состояния объекта Dialog из Trying или Early в Confirmed, и посылаю это как вызов processResponse() от транзакционного модуля, это юнит-тест?
А если я сделаю то же самое, сэмулировав сетевой ответ от транспорта (тогда у транзакционного его processIncoming() опознает ответ, заматчит транзакцию, найдёт коллбэк диалога в её состоянии и вызовет его), это ещё юнит-тест или уже интеграционный?
А если я реально пришлю UDP пакет в транспорт, это уже интеграционный тест или ещё нет?
А если это будет TLS поверх TCP?

С моей точки зрения, это всё функциональные тесты, и пофиг, что из них считать "юнитами". А как в остальном мире?
Re[10]: Разработка через тестирование бесполезна
Здравствуйте, Sharov, Вы писали:

N>>Ну а интеграционные, что, не абстрагируются от внешнего мира?

S>Ну это почти боевая эксплуатация, т.е. как реальный пользователь будет взаимодействовать с системой.
N>>Или речь про проведение границы между "чистыми" и "нечистыми" функциями?
S>В некотором роде да, речь про изоляцию.

Как-то всё это абстрактно. Вот у меня есть:
1. Transport layer.
2. Transaction layer, использует transport layer.
3. Dialog layer, использует transaction layer.
Остановимся на этом (там ещё уровня 4, но не усложняем).

Transport layer незамоканный отправляет в сеть и принимает; замоканный зовёт нужные коллбэки.
Уровень транзакций незамоканный общается с транспортным, замоканный дёргает вызовы некоего мока.
Ну и с третьим точно так же.
Если я тестирую диалоговый уровень — что например по получению "200 OK" произошёл переход состояния объекта Dialog из Trying или Early в Confirmed, и посылаю это как вызов processResponse() от транзакционного модуля, это юнит-тест?
А если я сделаю то же самое, сэмулировав сетевой ответ от транспорта (тогда у транзакционного его processIncoming() опознает ответ, заматчит транзакцию, найдёт коллбэк диалога в её состоянии и вызовет его), это ещё юнит-тест или уже интеграционный?
А если я реально пришлю UDP пакет в транспорт, это уже интеграционный тест или ещё нет?
А если это будет TLS поверх TCP (расшифровка которого делается в third-party в лице OpenSSL)?

С моей точки зрения, это всё функциональные тесты, и пофиг, что из них считать "юнитами". А как в остальном мире?