Software quality assurance days
18 Международная конференция
по вопросам качества ПО
sqadays.com
Москва. 27–28 ноября 2015
Юлия Крючкова
Kaspersky Lab. Москва, Россия
Подход к тестированию хранилища данных на
базе MS SQL Server
Подход к тестированию хранилища данных на базе MS SQL Server
IT DepartmentIT Department
DWH Development
Подход к тестированию хранилища данных на базе MS SQL Server
• Информационная БД
• Содержит данные, поступающие из
различных оперативных бд и внешних
источников
• Предназначена для подготовки отчётов и
бизнес-анализа
• Данные доступны только для чтения.
Data WareHouse
Подход к тестированию хранилища данных на базе MS SQL Server
Data Flow
Подход к тестированию хранилища данных на базе MS SQL Server
Testing types
 Интеграционное тестирование
 Функциональное тестирование
 Тестирование производительности
 Регрессионное тестирование
 Пользовательское приемочное тестирование
Подход к тестированию хранилища данных на базе MS SQL Server
??? Framework Choice ???
Подход к тестированию хранилища данных на базе MS SQL Server
tSQLt
 Изолированный запуск тестов
 Удобство копирования теста с нуля
 Удобство анализа результатов
 Сравнение целых таблиц
Подход к тестированию хранилища данных на базе MS SQL Server
2
3
2
4
=
Подход к тестированию хранилища данных на базе MS SQL Server
tSQLt. Integration
Для облегчения создания тестов необходима библиотека, на которую должна
быть ссылка в проекте тестов.
Подход к тестированию хранилища данных на базе MS SQL Server
tSQLt. Test method
[TestMethod]
public void DWH_Etl_Dictionaries_Test_add()
{
// Добавить новую запись в источник.
ApplyScript("DWH.Dictionaries.Test.source.add-source.sql");
// Добавить новую запись в ожидаемый набор
ApplyScript("DWH.Dictionaries.Test.expected.add-expected.sql");
// Запустить пакет
ExecSsis(packageName);
// Проверить, что новая запись в DWH появилась. RunTest("[UnitTests].
[Test_Add]");
}
Подход к тестированию хранилища данных на базе MS SQL Server
Procedure for a procedure
Хранимая процедура для вычисления
определённой сущности нуждается в
написании отдельной хранимой процедуры
для проверки полученного результата.
Подход к тестированию хранилища данных на базе MS SQL Server
DECLARE @Values TABLE (@Data,@ EXPECTED)
INSERT INTO @Values (@Data,@ EXPECTED) VALUES (тестовые
данные, созданные с помощью PICT Tool)
DECLARE date_cursor CURSOR FOR
SELECT (@Data,@ EXPECTED) FROM @Values
• • •
SELECT
@RES = [DWH.Stage].tmp_sales.GetSalesAccountingDate(@Data);
EXEC tSQLt.AssertEquals @expected = @EXPECTED, @Actual = @RES,
@message = @MES;
• • •
Procedure example
Подход к тестированию хранилища данных на базе MS SQL Server
Test Manager
Подход к тестированию хранилища данных на базе MS SQL Server
Run tests
Подход к тестированию хранилища данных на базе MS SQL Server
Performance Testing
 Определение предмета тестирования
 Согласование цифр:
 интервал времени запуска импорта;
 скорость импорта данных;
 объём исторических данных;
 объём изменяющихся данных.
Подход к тестированию хранилища данных на базе MS SQL Server
Test data via script
INSERT INTO [dbo].[ProductList]
([ProductID], [ModifiedDate])
SELECT TOP 5000000
ROW_NUMBER() OVER (ORDER BY s1.[object_id])
,GETUTCDATE()
FROM [sys].all_columns s1 CROSS JOIN [sys].all_columns s2
GO
INSERT INTO [dbo].[Sales]
([SalesGUID] ,[ProductID])
SELECT NEWID() ,[ProductID]
FROM [dbo].[ProductList]
GO
Подход к тестированию хранилища данных на базе MS SQL Server
Test data via ETL
Подход к тестированию хранилища данных на базе MS SQL Server
UAT
 Заказчик определяет Критерии приемки
 Заказчик определяет Сущности («разрез» данных)
приемки
 Заказчик определяет реестр приемлемых
расхождений
Подход к тестированию хранилища данных на базе MS SQL Server
Problems
В тесте возможно запустить пакет только из одного SSIS проекта.
<profiles>
<user name="kryuchkova"
ssis-packages-location =
"..........SourceEtlDWH.Etl.DictionariesbinDevelopmentDWH.Etl.Dictionaries.ispac“
ssis-packages-config="E:..........SourceEtlConfigurationsKryuchkova.dtsConfig“
connection="Data Source=testdb.ru;Initial Catalog=DWH;Integrated
Security=True;Pooling=False">
</user>
</profiles>
Подход к тестированию хранилища данных на базе MS SQL Server
The end …
Фиксация тест-кейсов
Автоматизация основной логики процесса
Ручные тесты имеют место быть
Согласование UAT в начале проекта
Особое внимание уделить тестированию
производительности
Подход к тестированию хранилища данных на базе MS SQL Server

Подход к тестированию хранилища данных на базе MS SQL Server

  • 1.
    Software quality assurancedays 18 Международная конференция по вопросам качества ПО sqadays.com Москва. 27–28 ноября 2015 Юлия Крючкова Kaspersky Lab. Москва, Россия Подход к тестированию хранилища данных на базе MS SQL Server
  • 2.
    Подход к тестированиюхранилища данных на базе MS SQL Server IT DepartmentIT Department DWH Development
  • 3.
    Подход к тестированиюхранилища данных на базе MS SQL Server • Информационная БД • Содержит данные, поступающие из различных оперативных бд и внешних источников • Предназначена для подготовки отчётов и бизнес-анализа • Данные доступны только для чтения. Data WareHouse
  • 4.
    Подход к тестированиюхранилища данных на базе MS SQL Server Data Flow
  • 5.
    Подход к тестированиюхранилища данных на базе MS SQL Server Testing types  Интеграционное тестирование  Функциональное тестирование  Тестирование производительности  Регрессионное тестирование  Пользовательское приемочное тестирование
  • 6.
    Подход к тестированиюхранилища данных на базе MS SQL Server ??? Framework Choice ???
  • 7.
    Подход к тестированиюхранилища данных на базе MS SQL Server tSQLt  Изолированный запуск тестов  Удобство копирования теста с нуля  Удобство анализа результатов  Сравнение целых таблиц
  • 8.
    Подход к тестированиюхранилища данных на базе MS SQL Server 2 3 2 4 =
  • 9.
    Подход к тестированиюхранилища данных на базе MS SQL Server tSQLt. Integration Для облегчения создания тестов необходима библиотека, на которую должна быть ссылка в проекте тестов.
  • 10.
    Подход к тестированиюхранилища данных на базе MS SQL Server tSQLt. Test method [TestMethod] public void DWH_Etl_Dictionaries_Test_add() { // Добавить новую запись в источник. ApplyScript("DWH.Dictionaries.Test.source.add-source.sql"); // Добавить новую запись в ожидаемый набор ApplyScript("DWH.Dictionaries.Test.expected.add-expected.sql"); // Запустить пакет ExecSsis(packageName); // Проверить, что новая запись в DWH появилась. RunTest("[UnitTests]. [Test_Add]"); }
  • 11.
    Подход к тестированиюхранилища данных на базе MS SQL Server Procedure for a procedure Хранимая процедура для вычисления определённой сущности нуждается в написании отдельной хранимой процедуры для проверки полученного результата.
  • 12.
    Подход к тестированиюхранилища данных на базе MS SQL Server DECLARE @Values TABLE (@Data,@ EXPECTED) INSERT INTO @Values (@Data,@ EXPECTED) VALUES (тестовые данные, созданные с помощью PICT Tool) DECLARE date_cursor CURSOR FOR SELECT (@Data,@ EXPECTED) FROM @Values • • • SELECT @RES = [DWH.Stage].tmp_sales.GetSalesAccountingDate(@Data); EXEC tSQLt.AssertEquals @expected = @EXPECTED, @Actual = @RES, @message = @MES; • • • Procedure example
  • 13.
    Подход к тестированиюхранилища данных на базе MS SQL Server Test Manager
  • 14.
    Подход к тестированиюхранилища данных на базе MS SQL Server Run tests
  • 15.
    Подход к тестированиюхранилища данных на базе MS SQL Server Performance Testing  Определение предмета тестирования  Согласование цифр:  интервал времени запуска импорта;  скорость импорта данных;  объём исторических данных;  объём изменяющихся данных.
  • 16.
    Подход к тестированиюхранилища данных на базе MS SQL Server Test data via script INSERT INTO [dbo].[ProductList] ([ProductID], [ModifiedDate]) SELECT TOP 5000000 ROW_NUMBER() OVER (ORDER BY s1.[object_id]) ,GETUTCDATE() FROM [sys].all_columns s1 CROSS JOIN [sys].all_columns s2 GO INSERT INTO [dbo].[Sales] ([SalesGUID] ,[ProductID]) SELECT NEWID() ,[ProductID] FROM [dbo].[ProductList] GO
  • 17.
    Подход к тестированиюхранилища данных на базе MS SQL Server Test data via ETL
  • 18.
    Подход к тестированиюхранилища данных на базе MS SQL Server UAT  Заказчик определяет Критерии приемки  Заказчик определяет Сущности («разрез» данных) приемки  Заказчик определяет реестр приемлемых расхождений
  • 19.
    Подход к тестированиюхранилища данных на базе MS SQL Server Problems В тесте возможно запустить пакет только из одного SSIS проекта. <profiles> <user name="kryuchkova" ssis-packages-location = "..........SourceEtlDWH.Etl.DictionariesbinDevelopmentDWH.Etl.Dictionaries.ispac“ ssis-packages-config="E:..........SourceEtlConfigurationsKryuchkova.dtsConfig“ connection="Data Source=testdb.ru;Initial Catalog=DWH;Integrated Security=True;Pooling=False"> </user> </profiles>
  • 20.
    Подход к тестированиюхранилища данных на базе MS SQL Server The end … Фиксация тест-кейсов Автоматизация основной логики процесса Ручные тесты имеют место быть Согласование UAT в начале проекта Особое внимание уделить тестированию производительности
  • 21.
    Подход к тестированиюхранилища данных на базе MS SQL Server