Oracle Unit-тестирование за 16 минут

  Рет қаралды 5,242

Oracle Database Developer

Oracle Database Developer

Күн бұрын

В этом видео, я расскажу что такое Unit-тестирование на уровне СУБД, как воспользоваться фреймворком для тестирования, рассмотрим примеры.
Материал будет полезен всем кто хочет повысить уровень надежности приложений в СУБД Oracle.
github.com/kivilev/oracle_dbd... - репозиторий с примерами
utplsql.org/ - официальный сайт фреймворка
Содержание:
0:00 - Введение
0:32 - Что такое Unit-тестирование?
0:50 - Принципы создания тестов
1:10 - Фреймворк utPL/SQL
2:31 - Установка фреймворка utPL/SQL
3:31 - Организация Unit-тестирования
4:29 - Аннотации фреймворка
5:23 - Пример использования
12:48 - Запуск тестирования
14:46 - Отчет покрытия тестами (code coverage)
15:30 - Домашнее задание
15:42 - Выводы
-------
Подписывайтесь на мой телеграм-канал: t.me/oracle_dbd
Все о разработке в СУБД "Oracle". Теория, практика, SQL, PL/SQL, задачки, сертификация и многое другое.
Если вам нужны консультации, есть вопросы, хотите пройти обучение, то пишите в телеграм - t.me/denis_dbd

Пікірлер: 20
@gusev_ae
@gusev_ae 4 жыл бұрын
Спасибо тебе за столь подробное видео. Очень был удивлен, что наткнулся именно на твой канал =) Счас как раз пытаемся применить у себя в команде. Думаю с какой стороны подойти к этому. Ждем полноценного обучающего курса по фреймворку.
@OracleDBD
@OracleDBD 4 жыл бұрын
Приятно слышать ;-) Можете написать в личку в телеграмме @denis_dbd , если нужны консультации.
@OracleDBD
@OracleDBD 3 жыл бұрын
Саша, я даже не сразу сообразил, что это ты :) Магниту привет, если ты еще там :)
@gusev_ae
@gusev_ae 3 жыл бұрын
@@OracleDBD да ещё тут. Передам. Удачи в развитии канала. Контент у тебя стоющий! Продолжай в том же духе!
@alexbr326
@alexbr326 3 жыл бұрын
Отличное видео, спасибо!
@BiPGiMun
@BiPGiMun 3 жыл бұрын
Видео огонь! очень хочу начать практиковать тесты в базе, но до этого не знал как правильно подступиться!. Спасибо!!
@OracleDBD
@OracleDBD 3 жыл бұрын
Хорошее начинание, если что задавайте вопросы в телегу.
@JashKa
@JashKa 3 жыл бұрын
@@OracleDBD Видео отличное, спасибо! В телегу не совсем понимаю куда писать. В личку лезть как-то неудобно. Наверное в канале было обсуждение по ролику, но полгода назад, искать как-то лень. Напишу вопрос сюда. utPLSQL пока кажется вполне юзабельным. Установил тут уже немного и попробовал. Как в тестах работу с таблицами БД вести - понятно. В %before добавил данных для теста, отработал тест, в %after снёс. А что делать если в коде используется скажем рассылка писем через utl_smtp.open_connection() и прочее utl_smtp.mail() и т.д.? Как это мокировать? В документации ничего про такое не нашёл, хотя прочёл вроде бы всю. Я так понимаю можно вообще не тестировать эту логику. Но ведь хочется скажем само формирование писем протестировать, проверить что тело письма при таких-то данных в таких-то таблицах должно быть равно тому-то. Вижу вариант: отключать на время тестов вызовы utl_smtp. Например через условную компиляцию (устанавливать для тестов "set alter session plsql_ccflag" во что-то и в зависимости от него вообще не компилить вызовы utl_smtp, оставить только логику создания тел писем). По-моему вариант. Но может быть есть другие варианты? Коллеги, подскажите.
@OracleDBD
@OracleDBD 3 жыл бұрын
@@JashKa Привет! Я не звездная персона, вполне переживу сообщение в личку в телеге - @denis_dbd =) Что касаемо вопроса. Да замокировать как в middleware (Java/Kotlin) не получится. К сожалению. Что можно сделать? Зависит от реализации, возможности/наличия времени править код и необходимости тестировать именно этот кусок с внешними зависимостями. Например: 1. Сделать обертку над utl_smtp. Смотреть на переменную контекста (sys_context). Для тестов её ставить в "1". по умолчанию "0". Для "1" utl_smtp не дергать. 2. Разбить тестируемые функционал на более мелкие модули. Аля если была бооольшая функция отправки, в которой формировалось сообщение, подгребались адресаты, ..., затем отправка. Разбить её на логические куски и тестить их отдельно. Наверняка, есть и другие варианты решения.
@JashKa
@JashKa 3 жыл бұрын
@@OracleDBD Через sys_context тоже вариант, но тогда получится что в боевом коде будут как бы куски тестировочного кода. Не совсем правильно по-моему. А в общем да, направление мысли примерно одинаковое у нас. Ну как ещё? Чудес не бывает. Хотя... А вдруго кто из коллег чего-нибудь более хитрое подскажет? Подождём.
@OracleDBD
@OracleDBD 3 жыл бұрын
@@JashKa условная комп/контекст или другие способы. Может быть, кто-то подскажет более элегантные варианты - "одну и ту же задачу, можно решить разными способами"
@pavelmiroshnyk2575
@pavelmiroshnyk2575 3 жыл бұрын
спасибо!
@MIIBFavourite
@MIIBFavourite 2 жыл бұрын
Отличное видео! А как можно писать юнит тесты на логику зашитую в сложных селектах/апдейтах ?
@OracleDBD
@OracleDBD 2 жыл бұрын
Все, конечно же, зависит от конкретной ситуации. Unit-тестирование хорошо подходит для отдельных конечных функциональностей. Если возвращаться к вопрос. У нас есть функция "A", в которой выполняется сложный запрос, который собирает какие-то данные и выплевывает ответ. Если возможно, нужно создать такие данные, на которых бы она вернула предсказуемый ответ и сравнить ожидаемое и фактическое значения. Это не всегда представляется возможным.
@SvyatoyVitaliy
@SvyatoyVitaliy 3 жыл бұрын
Как поживает ваш курс?
@OracleDBD
@OracleDBD 3 жыл бұрын
Все силы и время брошены на курс по PL/SQL для новичков.
Pipelined или конвейерные функции в PL/SQL
15:00
Oracle Database Developer
Рет қаралды 4,9 М.
Little girl's dream of a giant teddy bear is about to come true #shorts
00:32
A little girl was shy at her first ballet lesson #shorts
00:35
Fabiosa Animated
Рет қаралды 12 МЛН
Mama vs Son vs Daddy 😭🤣
00:13
DADDYSON SHOW
Рет қаралды 39 МЛН
Python Unit Tests: Введение в Тестирование
13:49
Аве Кодер
Рет қаралды 6 М.
Чего ожидать от HTTP/3 + Go
51:07
Нина Пакшина
Рет қаралды 6 М.
Oracle как посмотреть план запроса 8 способов
11:32
Oracle Database Developer
Рет қаралды 10 М.
Парсим админку Мегамаркета с помощью скрытых API
30:56
Алексей Куличевский
Рет қаралды 67 М.
Oracle блокировки. Select for update за 8.5 минут
8:33
Oracle Database Developer
Рет қаралды 4,7 М.
Telefonu Parçaladım!😱
0:16
Safak Novruz
Рет қаралды 27 МЛН
iPhone 15 Pro в реальной жизни
24:07
HUDAKOV
Рет қаралды 458 М.
iPhone 15 Pro Max vs IPhone Xs Max  troll face speed test
0:33
Здесь упор в процессор
18:02
Рома, Просто Рома
Рет қаралды 420 М.
S24 Ultra and IPhone 14 Pro Max telephoto shooting comparison #shorts
0:15
Photographer Army
Рет қаралды 10 МЛН