Тестирование базы данных
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Тестирование базы данных обычно состоит из многоуровневого процесса, включающего уровень пользовательского интерфейса (UI), бизнес-уровень, уровень доступа к данным и саму базу данных. Уровень пользовательского интерфейса занимается проектированием интерфейса базы данных, а бизнес-уровень включает базы данных, поддерживающие бизнес-стратегии .
Цели [ править ]
Базы данных , совокупность взаимосвязанных файлов на сервере, хранящие информацию, не могут иметь дело с одним и тем же типом данных, т.е. базы данных могут быть разнородными . В результате в больших системах баз данных могут возникать многие виды ошибок реализации и интеграции , которые негативно влияют на производительность, надежность, согласованность и безопасность системы. Таким образом, важно провести тестирование , чтобы получить систему базы данных, которая удовлетворяет свойствам ACID (атомарность, согласованность, изоляция и долговечность) системы управления базами данных . [1]
Одним из наиболее важных уровней является уровень доступа к данным, который работает с базами данных непосредственно во время процесса связи. Тестирование базы данных в основном происходит на этом уровне и включает в себя такие стратегии тестирования, как контроль качества и обеспечение качества баз данных продуктов. [2] Тестирование на этих разных уровнях часто используется для поддержания согласованности систем баз данных, что чаще всего можно увидеть в следующих примерах:
- Данные имеют решающее значение с точки зрения бизнеса. Такие компании, как Google или Symantec , которые связаны с хранением данных , должны иметь надежную и согласованную систему баз данных. Если операции с базой данных, такие как вставка, удаление и обновление, выполняются без предварительного тестирования базы данных на целостность, компания рискует привести к сбою всей системы.
- Некоторые компании имеют разные типы баз данных, а также разные цели и миссии. Чтобы достичь уровня функциональности, соответствующего указанным целям, им необходимо протестировать свою систему баз данных.
- Возможно, потребуется нечто большее, чем нынешний подход к тестированию, при котором разработчики формально тестируют базы данных. Однако этот подход недостаточно эффективен, поскольку разработчики баз данных могут замедлить процесс тестирования из-за пробелов в коммуникации. Представляется целесообразным создать отдельную группу тестирования баз данных.
- Тестирование баз данных в основном занимается поиском ошибок в базах данных и их устранением. Это улучшит качество базы данных или веб-системы.
- Тестирование базы данных следует отличать от стратегий решения других проблем, таких как сбои базы данных, неправильная вставка, удаление или обновление. В данном случае рефакторинг базы данных является эволюционным методом, который может применяться.
Виды тестирования и процессы [ править ]
На рисунке показаны области тестирования, задействованные при различных методах тестирования баз данных, таких как тестирование «черного ящика» и тестирование «белого ящика» .
Черный ящик [ править ]
Тестирование «черного ящика» включает в себя тестирование интерфейсов и интеграцию базы данных, которая включает в себя:
- Сопоставление данных (включая метаданные )
- Проверка входящих данных
- Проверка исходящих данных из функций запроса
- Различные методы, такие как метод построения графиков причинно-следственных связей, разделение эквивалентности и анализ граничных значений .
С помощью этих методов можно тщательно протестировать функциональность базы данных.
Плюсы и минусы тестирования «черного ящика» включают в себя: Генерация тестовых примеров при тестировании «черного ящика» довольно проста. Их создание полностью независимо от разработки программного обеспечения и может выполняться на ранней стадии разработки. Как следствие, программист лучше знает, как проектировать приложение базы данных, и тратит меньше времени на отладку. Стоимость разработки тест-кейсов «черного ящика» ниже, чем разработка тест-кейсов «белого ящика». Главный недостаток тестирования методом «черного ящика» заключается в том, что неизвестно, какая часть программы тестируется. Кроме того, некоторые ошибки не могут быть обнаружены. [3]
Белый ящик [ править ]
Тестирование белого ящика в основном касается внутренней структуры базы данных. Детали спецификации скрыты от пользователя.
- Оно включает в себя тестирование триггеров базы данных и логических представлений, которые будут поддерживать рефакторинг базы данных .
- Он выполняет модульное тестирование функций базы данных, триггеров, представлений, SQL- запросов и т. д.
- Он проверяет таблицы базы данных, модели данных, схему базы данных и т. д.
- Он проверяет правила ссылочной целостности .
- Он выбирает значения таблицы по умолчанию для проверки согласованности базы данных.
- Методы, используемые в тестировании белого ящика, — это покрытие условий, покрытие решений, покрытие операторов, цикломатическая сложность .
Основное преимущество тестирования белого ящика при тестировании базы данных заключается в том, что выявляются ошибки кодирования, что позволяет устранить внутренние ошибки в базе данных. Ограничением тестирования «белого ящика» является то, что операторы SQL не рассматриваются.
Подход WHODATE
При создании тестовых примеров для тестирования базы данных семантика оператора SQL должна быть отражена в тестовых примерах. Для этой цели используется метод, называемый Техникой приложения базы данных WHite bOx «(WHODATE)». Как показано на рисунке, операторы SQL независимо преобразуются в операторы GPL, после чего проводится традиционное тестирование «белого ящика» для создания тестовых примеров, включающих семантику SQL. [4]
Четыре этапа [ править ]
- Установить приспособление
- Тестовый запуск
- Проверка результата
- Срывать
Установленная фикстура описывает исходное состояние базы данных перед входом в тестирование. После установки фикстур поведение базы данных проверяется для определенных тестовых случаев. В зависимости от результата тестовые примеры либо изменяются, либо сохраняются как есть. Этап «сноса» либо приводит к прекращению тестирования, либо к продолжению других тестовых случаев. [5]
Для успешного тестирования базы данных обычно выполняется следующий рабочий процесс, выполняемый каждым отдельным тестом:
- Очистите базу данных. Если тестируемые данные уже присутствуют в базе данных, ее необходимо очистить.
- Настройка приспособления: такой инструмент, как PHPUnit, затем будет перебирать приспособления и выполнять вставки в базу данных.
- Запустите тест, проверьте результат, а затем снесите: после сброса базы данных до пустой и вывода списка приборов запускается тест и проверяются выходные данные. Если выходные данные соответствуют ожиданиям, следует процесс разборки, в противном случае тестирование повторяется. [ нужна ссылка ]
Основные техники [ править ]
- Анализатор запросов SQL — полезный инструмент при использовании Microsoft SQL Server . [ нужна ссылка ]
- Одна часто используемая функция, [ нечеткий ]
create_input_dialog["label"]
, используется для проверки вывода с пользовательскими данными. - Разработка форм для автоматизированного тестирования баз данных, как внешних, так и внутренних, полезна для специалистов по обслуживанию баз данных.
- данных Тестирование загрузки :
- Для тестирования нагрузки данных необходимы знания об исходной базе данных и целевой базе данных.
- Рабочие проверяют совместимость исходной базы данных и целевой базы данных с помощью пакета DTS .
- При обновлении исходной базы данных работники обязательно сравнивают ее с целевой базой данных.
- Нагрузочное тестирование базы данных измеряет способность сервера базы данных обрабатывать запросы, а также время ответа сервера базы данных и клиента. [6]
- При тестировании базы данных часто рассматриваются такие вопросы, как атомарность, согласованность, изоляция, долговечность, целостность, выполнение триггеров и восстановление.
- Установка для тестирования баз данных является дорогостоящей и сложной в обслуживании, поскольку системы баз данных постоянно меняются с ожидаемыми операциями вставки, удаления и обновления.
- Дополнительные издержки необходимы для определения состояния транзакций базы данных.
- После очистки базы данных необходимо разработать новые тестовые примеры. [ нужна ссылка ]
- Генератор SQL необходим для преобразования операторов SQL и включения семантики SQL в тестовые примеры базы данных.
См. также [ править ]
Ссылки [ править ]
- ^ Корт, Генри (2010). Концепции системы баз данных . Макгроу-Хилл. ISBN 978-0-07-352332-3 .
- ^ Эмблер, Скотт (2003). Методы гибкой работы с базами данных: эффективные стратегии для гибкого разработчика программного обеспечения . Уайли. ISBN 978-0-471-20283-7 .
- ^ Прессман, Роджер (1994). Тестировщик программного обеспечения: подход практикующего специалиста . Макгроу-Хилл Образование. ISBN 978-0-07-707732-7 .
- ^ Чжан, Яньчунь (1999). Кооперативные базы данных и приложения '99: материалы Второго международного симпозиума по кооперативным системам баз данных для передовых приложений (CODAS '99), Вуллонгонг, Австралия, 27–28 марта 1999 г. Спрингер. ISBN 978-981-4021-64-7 .
- ^ Кан, Стивен. Метрики и модели в инженерии качества программного обеспечения . Пирсон Образование. ISBN 978-81-297-0175-6 .
- ^ «ИнфоМир» . ИнфоУорлд Медиа Групп, Инк . 15 января 1996 г.
- Эмблер, Скотт В. (2006). «Тестирование базы данных: как провести регрессионное тестирование реляционной базы данных» . Гибкие данные . Проверено 4 декабря 2011 г.
- Зейчик, Алан; и др. (14 августа 1989 г.). Как мы тестировали интегрированные пакеты программного обеспечения . Инфомир . Проверено 4 декабря 2011 г.
Внешние ссылки [ править ]
- Глава 8. Тестирование базы данных из руководства PHPUnit.
- Создание наборов данных для тестирования реляционных баз данных
- Покрытие SQL-тестов
- Acolyte Framework для макетирования JDBC для тестирования на устойчивость