17 апреля 2020

Краткий путеводитель по тестированию баз данных: часть 1

Не GUI единым! Постоянный автор нашего блога Анастасия делится переводом краткой инструкции о тестировании фундамента любого приложения — базы данных.

DB testing Noveo translation

Как правило, и при тестировании, и при разработке мы уделяем довольно много внимания GUI-части, потому что именно пользовательский интерфейс регулярно оказывается у всех на виду. Тем не менее, очень важно проверять информацию, которая поступает в часть, которая по праву может считаться сердцем приложения, — базу данных.

Давайте представим, что нам необходимо тестировать банковский продукт, основная функция которого — хранение, отслеживание и отображение транзакций, произведенных пользователем. Тогда, с точки зрения тестирования баз данных, нам важно обратить внимание на следующее:

  1. Приложение хранит информацию о проведенных транзакциях и корректно отображает ее пользователю;
  2. В процессе не происходит утечек данных или потерь информации;
  3. В приложении не хранится информация об отмененных или частично выполненных операциях;
  4. Информация не может попасть в руки пользователей, неавторизованных на доступ к ней.

Убедиться, что все условия выше соблюдены, на ранних этапах разработки можно с помощью тестирования баз данных.

Что такое тестирование БД?

Тестирование БД — это проверка схем, таблиц, триггеров, операций получения/добавления информации и других частей и функций тестируемой БД. Оно может включать создание сложных запросов для нагрузочного/стрессового тестирования базы данных и проверки скорости её ответа. Единообразие данных, помещаемых в базу, также считается частью такого тестирования.

Чтобы лучше познакомиться с тестированием БД, мы должны поговорить о следующем:

  • Разница между тестированием GUI и БД.
  • Виды тестирования БД.
  • Тестирование структуры:
    • тестирование схемы БД,
    • тестирование таблиц БД,
    • тестирование хранимых процедур,
    • тестирование триггеров,
    • тестирование сервера БД.

Фундаментальные различия между тестированием пользовательского интерфейса и БД

Тестирование UI vs BD

Виды тестирования БД

type of DB tests

Тестирование БД можно условно поделить на 3 вида:

  1. Тестирование структуры.
  2. Функциональное тестирование.
  3. Нефункциональное тестирование.

Давайте подробнее взглянем на каждый из видов тестирования и их подвиды.

Тестирование структуры

Тестирование структуры данных включает проверку элементов, которые используются в первую очередь для хранения информации и доступ на изменение которых не может быть выдан обычным пользователям. Проверка серверов БД также очень важна. Успешное прохождение этой стадии зависит от того, насколько хорошо тестировщик владеет SQL.

Тестирование структуры включает такие виды проверок, как:

  • тестирование схемы,
  • тестирование базы данных и колонок,
  • тестирование ключей и индексов,
  • тестирование хранимых процедур,
  • тестирование триггеров,
  • тестирование сервера БД.

Тестирование схемы/маппинга

Главная цель тестирования схемы БД в том, чтобы убедиться, что маппинг схемы между фронтендом и бэкендом консистентен. Исходя из этого, тестирование схемы можно назвать также тестированием маппинга.

Что можно проверить:

  • Валидацию разных форматов схемы, связанных с базой данных. Бывает, что формат маппинга таблиц БД может быть несовместим с форматом маппинга, который необходим для реализации пользовательского интерфейса приложения.
  • Необходимо проверять таблицы и колонки, для которых маппинга нет (или он не предусмотрен).
  • Также нужно убедиться, что маппинг БД в окружении проекта совместим с маппингом самого приложения.

Какие инструменты могут помочь тестированию схем БД?

  • DBUnit — расширение JUnit, совместимое с Ant;
  • SQL Server — позволяет проверять схему БД и делать к ней запросы без непосредственной работы с кодом.

Например, если разработчики захотят изменить структуру таблицы (или вообще удалить её), тестировщику нужно будет убедиться, что все хранимые процедуры и виды, которые используют эту таблицу, совместимы с таким изменением. Другим примером тестирования структуры может быть ситуация, когда тестировщики хотят сравнить схемы двух разных БД.

Тестирование таблиц / колонок

  1. Совместим ли маппинг полей и колонок БД на стороне бэкенда с маппингом на стороне фронтенда;
  2. Соответствует ли длина и наименование полей и колонок БД требованиям;
  3. Проверка на присутствие неиспользуемых/несмапленных таблиц/колонок БД;
  4. Проверка совместимости типов данных, длины полей колонок со стороны бэкенда с аналогичными полями на стороне фронтенда;
  5. Может ли пользователь ввести нужные ему данные, которые впоследствии будут переданы в БД, и соответствует ли это бизнес-требованиям.

Тестирование ключей и индексов

  1. Убедиться, что ограничения для первичных и внешних ключей определены в нужных таблицах;
  2. Проверить, что обращения к внешним ключам корректны;
  3. Проверить, что тип данных у первичных ключей и соответствующих им внешних ключей совпадает;
  4. Проверить, что правила наименования ключей соблюдены во всех таблицах;
  5. Проверить размер и длину полей и индексов, обязательных к заполнению;
  6. Проверить, что кластеризованные и некластеризованные индексы были созданы в таблицах там, где это необходимо согласно требованиям.

Тестирование хранимых процедур

  1. Проверить, соблюдены ли договоренности о стиле кода и обработке исключений и ошибок для всех хранимых процедур во всех компонентах тестируемого приложения;
  2. Проверить с помощью ввода данных разного формата, корректно ли обрабатываются возможные условия и проходы по циклам;
  3. Проверить, корректно ли выполняются процедуры, когда данные приходят из разных таблиц в БД;
  4. Если выполнить хранимую процедуру вручную, получит ли конечный пользователь требуемый результат;
  5. Если выполнить хранимую процедуру вручную, корректно ли пройдут  изменения в затронутых таблицах;
  6. Приведет ли выполнение процедуры к неявному вызову требуемых триггеров;
  7. Проверить, существуют ли неиспользуемые хранимые процедуры;
  8. Проверить, есть ли в БД поля, которые не принимают Null;
  9. Проверить, выполняются ли все хранимые процедуры и функции, когда в БД нет информации;
  10. Проверить интеграцию модулей, содержащих хранимые процедуры.

Инструменты, с помощью которых можно выполнить тестирование хранимых процедур: LINQ, SP Test tool и другие.

Тестирование триггеров

  1. Соответствует ли код этой части общему стилю кода приложения;
  2. Проверить, удовлетворяют ли требованиям триггеры соответствующих DML-транзакций;
  3. Проверить работу Update/Insert/Delete-триггеров;
  4. Проверить, корректно ли они обновляют/изменяют данные в БД.

Тестирование сервера БД

  1. Проверить, что конфигурации сервера БД соответствуют требованиям;
  2. Проверить, что пользователи могут производить действия только с теми частями БД, на доступ к которым они авторизованы;
  3. Проверить, что сервер БД способен произвести максимально допустимое количество пользовательских транзакций (это количество определяется требованиями).

Продолжение следует!

Оригинал: https://www.guru99.com/data-testing.html

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте в нашем блоге

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: