понедельник, 18 ноября 2013 г.

Формирование тестовых данных, хранящихся в базе данных MS SQL Server

   Хотелось бы немного поговорить на тему формирования тестовых данных для автотестов. 
  Дальше будут написаны довольно очевидные вещи насчет независимости тестов друг от друга, поэтому те, кто знаком с этой информацией, могут пропустить этот абзац :) Итак, ни для кого не секрет, что тесты у нас должны быть независимыми друг от друга. Рассмотрим простой пример. Предположим, у нас есть 2 теста - один проверяет добавление пользователя, другой редактирование информации о пользователе. В тесте на редактирование нельзя использовать в качестве тестовых данных (начальных данных) результат, полученный после теста на добавление пользователя. Допустим, если тест на добавление создает пользователя "flower", то в тесте на редактирование мы должны редактировать, например, свойства пользователя "fruit", а не "flower". Почему так? Во-первых, если вы решите в тесте на редактирование использовать пользователя "flower" в качестве тестовых данных, то вы не сможете выполнить этот тест отдельно, вам всегда придется сначала выполнять тест на добавление пользователя. Во-вторых, если добавление пользователя по каким-то причинам не будет работать, вы также не сможете выполнить тест на редактирование. Отсюда следует вывод, что для теста на редактирование вам нужны тестовые данные.
  При архитектуре приложения "клиент-сервер-бд" ваши тестовые данные хранятся в базе данных. Я в своей работе использую MS SQL Server, поэтому речь будет дальше идти об этой СУБД. У вас может быть 2 основных способа формирования набора тестовых данных перед выполнением ваших тестов. Первый способ - это хранение бэкапа базы данных, заполненной тестовыми данными, и разворачивание бд из бэкапа перед началом выполнения ваших тестов. Второй способ - это хранение sql-скрипта, который будет заполнять чистую базу данных тестовыми данными перед началом выполнения ваших тестов.
   Как создавать эти тестовые данные - это дело каждого. Вы можете создавать их через пользовательский интерфейс вашего приложения, через какие-то программные средства - все зависит от вашего приложения и доступных вам средств.
     Хочу рассказать про один из известных мне способов создания sql-скрипта для заполнения чистой бд тестовыми данными с использованием MS Visual Studio 2010 (к  сожалению, в 2012 и 2013 студии эта функциональность пока не реализована). Фактически все сводится к сравнению данных двух баз - чистой и заполненной данными, и формированию sql-скрипта.
    Открываем окно "Server Explorer" и подключаем две базы данных - одну чистую, другую заполненную тестовыми данными.




   Сравниваем данные двух баз:


      И формируем sql-скрипт:


   Вот и все, в редакторе у вас откроется sql-скрипт, который вы можете сохранить в файл и положить под source control.
    Если вы пользуетесь какими-либо инструментами как для генерации, так и для формирования тестовых данных, можете смело писать в комментариях, интересно будет послушать.

Комментариев нет:

Отправить комментарий