Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Можете скинуть дельные статьи или пример где бы использовалось и как использовалось, говорят в MS SQL можно писать тесты (я не знаю где этот раздел даже находится), которые тестируют процедуры, триггеры и тд, если кто то что то знает по этой теме поделитесь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2018, 13:03 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Pabl0, VS + SQL Data Tools, tutorial на сайте MS. Придется создать проект базы данных и в нем вести разработку. Тестировочные самописки оказались сложны и не покрывали всех потребностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2018, 13:07 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Pabl0Можете скинуть дельные статьи или пример где бы использовалось и как использовалось, говорят в MS SQL можно писать тесты (я не знаю где этот раздел даже находится), которые тестируют процедуры, триггеры и тд, если кто то что то знает по этой теме поделитесь :) Вообще надо понимать, что unit tests тестируют модули кода. Ключевое слово "модули". Ваша БД -- она существует сама по себе или у неё есть клиентское приложение? Так вот надо тестировать клиентское приложение, его классы и методы, которые будут обращаться в БД и потом проверят результат этого теста, например факт появления или изменения записей. Вы не тестируете таблицу пользователей или процедуру создания пользователя или триггер на таблице пользователя, вы тестируете класс пользователя, метод создать пользователя, метод обновить пользователя, метод дать права пользователю и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2018, 16:59 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
По рефакторингу и, в том числе и о вопросах тестирования рекомендую изучить Эмблер Скотт, Садаладж Прамодкумар Дж. Рефакторинг баз данных: эволюционное проектирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2018, 18:36 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
a_voroninВообще надо понимать, что unit tests тестируют модули кода. Ключевое слово "модули". Ваша БД -- она существует сама по себе или у неё есть клиентское приложение? Если в вашей базе есть функции-триггеры-процедуры - но они могут тестироватся точно также как и на других языках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2018, 20:05 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
a_voroninВы не тестируете таблицу пользователей или процедуру создания пользователя или триггер на таблице пользователя, вы тестируете класс пользователя, метод создать пользователя, метод обновить пользователя, метод дать права пользователю и т.д.Это противоречит вашему же:a_voroninВообще надо понимать, что unit tests тестируют модули кода. Ключевое слово "модули". Идея юнит тестов в том, что бы покрыть тестами не только интерфейс программы, а именно модули кода. То есть, если какой то метод не вызывается непосредственно нажатием кнопки в UI, то это не значит, что его не надо тестировать. Тестируется весь код, даже если какой то код вызывается другим, уже протестированным кодом, а тот в свою очередь ещё каким то кодом, тоже протестированым. Ну и если у вас какой то код написан не на C#, а, например, на джаве, или на T-SQL, то это не значит, что его не надо покрывать тестами, это точно такая же часть системы, как и метод "создать пользователя" Уж не говоря о том, что клиентским приложением может быть макрос в Экселе, или нарисованная мышкой страничка в SSIS, и что же, если нету классов, то нету юнит-тестов? Далее уже вопрос в технологичности, стоимости и т.д. Может, в какой то разработке разумнее будет не покрывать юнит-тестами код на T-SQL, в другой исключить код на PowerShell или оставить в покое макросы экселя. Но это уже решается теми, кто ведёт проект. Если десяток сиквелистов настукивают на T-SQL тыщу строк в день, то идея покрыть это юнит тестами выглядит вполне разумной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2018, 23:24 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
a_voronin, По-моему, вы написали про integration tests, это другой вид тестирования, который нет отменяет unit tests. Иногда рисуют пирамиду из разных видов тестирования, в которой чем ниже уровень, тем большее количество тестов этого вида пишут, т.к. они более простые в написании, быстрее выполняются на выделенном сервере и в результате дают большее покрытие кода тестами. unit tests в ней - самые многочисленные тесты. Адепты CI\CD рекомендуют писать такое количество unit tests, чтобы получать 80% покрытие, и при успешном прохождении тестов автоматически выкладывать полученное в прод. Я, правда, не сторонник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 01:01 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Eleanora_voronin, По-моему, вы написали про integration tests, это другой вид тестирования, который нет отменяет unit tests. Иногда рисуют пирамиду из разных видов тестирования, в которой чем ниже уровень, тем большее количество тестов этого вида пишут, т.к. они более простые в написании, быстрее выполняются на выделенном сервере и в результате дают большее покрытие кода тестами. unit tests в ней - самые многочисленные тесты. Адепты CI\CD рекомендуют писать такое количество unit tests, чтобы получать 80% покрытие, и при успешном прохождении тестов автоматически выкладывать полученное в прод. Я, правда, не сторонник. Нет, я имел ввиду unit-tests , и ими тестируют бизнес-логику, во всяком случае так было в моей время 2005-2010 годах. Когда ими тестируют UI или базу, это выгладит странно, если только база не тестируется в контексте бизнес логики. И вообще эту тему пора отправить в раздел проектирования ПО или куда-то туда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 02:06 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
База в принципе не тестируема юнит-тестами в прямом понимании за исключением таблиц, представлений, и некоторых функций ввиду сильной связности программного кода с кодом и объектами данных. На базе почти всегда тесты интеграционные или функциональные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 11:01 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовБаза в принципе не тестируема юнит-тестами в прямом понимании за исключением таблиц, представлений, и некоторых функций ввиду сильной связности программного кода с кодом и объектами данных. На базе почти всегда тесты интеграционные или функциональные. Это не совсем так. Вы сами уже упомянули VS + SQL Data Tools, так же в топике был упомянут tSQLt, который вполне нормально уживается с тестированием средствами VS. Вполне нормально тестуруется ф-ционал хранимых процедур, триггеров и.т.п., с эмуляцией необходимых данных в затрагиваемых таблицах. Но требует некоторых танцев с бубном при настройке всей этой радости, и достаточных ресурсов на поддержание и наполенение тестами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 12:49 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Zandr, Вы забыли упомянуть сложности и объем работ, с которыми столкнется разработчик при создании mock-объектов, а также невозможность проверить код, например, использующий вложенные транзакции с откатами по ошибке или использование Srvice Brocker. Возникшие проблемы в свое время привели к отказу от использования tSQLt в связи с трудоемкостью и непокрытием всех кейсов эксплуатации MS SQL сервера. Переход к интеграционному уровню с использование системы SQL DataTools решил все проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 13:43 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовZandr, Вы забыли упомянуть сложности и объем работ, с которыми столкнется разработчик при создании mock-объектов, а также невозможность проверить код, например, использующий вложенные транзакции с откатами по ошибке или использование Srvice Brocker. Возникшие проблемы в свое время привели к отказу от использования tSQLt в связи с трудоемкостью и непокрытием всех кейсов эксплуатации MS SQL сервера. Переход к интеграционному уровню с использование системы SQL DataTools решил все проблемы. Я встречался с людьми, которые хотели с помощью юнит-тестов тестировать даже UI. Пытаюсь донести одну простую мысль -- с их помощью тестируют БИЗНЕС-ЛОГИКУ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 14:25 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовZandr, Вы забыли упомянуть сложности и объем работ Это от лени, большая часть кода прекрасно тестируется, у меня почти 5 мег унит тестов к базе. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. Вот простейшая структура, позволяющая покрывать логику в базе, не без ограничений конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 17:08 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Lepsik, нет, не от лени :) tSQLt не разруливает транзакционные ситуации, а это тупик. И привязанные к схеме объекты сложно мОчить, как я писал выше. Также эта система не может быть опубликована и использована не на боевой базе, а это большой недостаток. Нам пришлось вносить исправления в оригинальный код, чтобы развернуть тестовый проект в отдельной базе. На практике моки оказались не нужны, равно как и следовать культу карго мудульного тестирования. SSDT полностью покрывает потребности. Более того, интеграционное оказалось эффективнее при решении SQL задач. У меня было года полтора практики, так что мои утверждения не на пустом месте. В общем, больше проблем создаёт, чем решает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 17:23 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовLepsik, нет, не от лени :) tSQLt не разруливает транзакционные ситуации, а это тупик. И привязанные к схеме объекты сложно мОчить, как я писал выше. Также эта система не может быть опубликована и использована не на боевой базе, а это большой недостаток. Нам пришлось вносить исправления в оригинальный код, чтобы развернуть тестовый проект в отдельной базе. На практике моки оказались не нужны, равно как и следовать культу карго мудульного тестирования. SSDT полностью покрывает потребности. Более того, интеграционное оказалось эффективнее при решении SQL задач. У меня было года полтора практики, так что мои утверждения не на пустом месте. В общем, больше проблем создаёт, чем решает. @Владислав а можно 2-3 примера тестов - не код, а смысл того что они тестриуют на словах и как это запускалось - автоматом черзе жоб - каждые N часов ? и как и кому результат приходил. Т.е описание процесса целиком ибо задача встает уже не в 1-й раз - а приемлемого решения я так и не видел. допустим orpahns (провисшие записи) легко найти - скажем по всем таблицам у нас тут написали самописные 12 тестов ну и простую обертку для них но я пока не вижу практической пользы они покрывают те проблемы (баги) что УЖЕ БЫЛИ и были ПОФИКШЕНЫ. теортетически они могут появиться снова - ну тогда они будут опознаны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 17:54 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовtSQLt не разруливает транзакционные ситуации, а это тупик. . Транзакцийнные можно разруливать средствами TSQL но плохо, лучше этого не делать. Делать функциональными во внешнем приложнии. --И привязанные к схеме объекты сложно мОчить, как я писал выше какие обьекты в TSQL? - тут нет ООПа и виртуальных функций. Подход tsqlt.org на мой взгляд ущербен юнит тесты тестируют внутреннюю логику. запускатся должны на пустой базе. На боевых базах запускают только нагрузочные, иногда функциональные тесты. --- Нам пришлось вносить исправления в оригинальный код, чтобы развернуть тестовый проект в отдельной базе. У меня скрипт на питоне, он создает пустую базу, прогоняет 100500 тестов и я спокоен за покрытую логику. --У меня было года полтора практики, так что мои утверждения не на пустом месте. В общем, больше проблем создаёт, чем решает А у меня 5 лет успешной практики. Можно научится решать проблемы, а можно сказать что это бесполезно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 17:55 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
LepsikЭто от лени Что-то вроде этого я и имел ввиду, когда писал: "... достаточных ресурсов на поддержание и наполенение тестами.." LepsikМожно научится решать проблемы, а можно сказать что это бесполезно :) Вот, прям, соглашусь ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2018, 18:21 |
|
||
|
Тесты для MS SQL
|
|||
|---|---|---|---|
|
#18+
Lepsik, Если не вести проект "на коленке", а в решении SSDT, то tSQLt отделить от проекта из-за ссылок невозможно. Я вижу, что у вас другая практика разработки, которая как-то совместима с tSQLt. Возможно, Вы просто не используете функционал сиквела в более-менее полном объёме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 11:49 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39747913&tid=1688590]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
79ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 456ms |

| 0 / 0 |
