Сегодня у меня возникла идея написать фреймворк для модульного тестирования хранимых процедур в MySQL. Полная идея написана в недавнем посте в моем блоге. Короче говоря, это выглядит так: я хочу автоматизировать тестирование процедур, я хочу использовать стандартизированный способ тестирования своих процедур. Модульное тестирование широко задокументировано, и существует огромное количество фреймворков XUnit, почему бы не написать одну для MySQL (или любой другой базы данных). Конечно, это будет открытый исходный код. Что вы думаете? Это глупо, глупо, ненужно что ли? Или еще одна идея - написать общую структуру базы данных на SQL. Хм, очень хочу с кем-нибудь это обсудить, собраться с мыслями и идеями.
Написание среды модульного тестирования для тестирования хранимых процедур SQL.
Ответы (7)
Уже существует одна среда тестирования для Sql Server - TSQLUnit. Может быть, вам удастся почерпнуть из него какую-нибудь полезную информацию.
Да, отличная идея. Я добился значительных успехов с pgTAP. Я использовал его в ряде проектов, как для разработки баз данных на основе тестов и написать тесты для существующих процедур, чтобы иметь возможность эффективно реорганизовать их.
Меня часто спрашивали, есть ли что-то подобное для MySQL. Может, вы уже что-то написали?
Модульные тесты уже существуют. Помимо dbUnit и sqlUnit, попробуйте:
MyTAP: https://github.com/hepabolu/mytap
datacharmer.org: http://datacharmer.blogspot.com/2006/01/mysql-5-general-purpose-routine_27.html
Я предпочитаю модульное тестирование уровня доступа к данным, это всегда головная боль, потому что вам нужно настроить правильную базу данных с правильными данными. Существуют генераторы данных, которые могут помочь (например, генератор данных RedGate) упростить процесс настройки.
Я считаю, что просто тестирование DAL заключается в том, что вы, по сути, тестируете сами хранимые процедуры с добавленным кодом .Net DB, и я не думаю, что нам нужно беспокоиться о модульном тестировании. Таким образом, вы можете использовать все инструменты и процессы, которые у вас уже есть, для модульного тестирования. Кажется, нужно приложить много усилий, чтобы разработать отдельную структуру для чего-то, что (ИМХО) может быть одинаково хорошо выполнено с существующими инструментами.
Однако у меня есть непредвзятый разум. Если есть преимущества, которые я упускаю из виду, пожалуйста, сообщите мне.
Ура, V
Одним из преимуществ будет то, что тест будет написан в той же среде, в которой написаны и выполняются хранимые процедуры, и будет обслуживаться специализированным разработчиком базы данных вне основного приложения. Разработчику приложения не нужно быть мастером программирования реляционной базы данных, а разработчику базы данных - владеть современным языком разработки приложений. Теперь у вас есть тест для всего. Почему бы не иметь их для базы данных, написанной на sql и выполненной вне любого приложения, разработанного внутри компании.
Если вы разрабатываете многоуровневое приложение, имеет смысл разделить каждую часть и протестировать ее отдельно.
Попробуйте TST: http://tst.codeplex.com
В базе данных не должно быть достаточно логики, чтобы тестирование было целесообразным.
IN и т. Д., Намного быстрее, чем первая реализация программиста, более без ошибок и с гораздо меньшим объемом программной работы со стороны пользователя. (Это не всегда так; иногда БД является узким местом, которое может преодолеть тщательное алгоритмическое программирование.) В общем, то, что в БД недостаточно логики, чтобы сделать тестирование целесообразным, просто неправда.
- person Dan Nissenbaum; 07.09.2015