Подход к тестированию хранилища данных на базе MS SQL Server
1. Software quality assurance days
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
5. Подход к тестированию хранилища данных на базе MS SQL Server
Testing types
Интеграционное тестирование
Функциональное тестирование
Тестирование производительности
Регрессионное тестирование
Пользовательское приемочное тестирование
6. Подход к тестированию хранилища данных на базе MS SQL Server
??? Framework Choice ???
7. Подход к тестированию хранилища данных на базе MS SQL Server
tSQLt
Изолированный запуск тестов
Удобство копирования теста с нуля
Удобство анализа результатов
Сравнение целых таблиц
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
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
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 в начале проекта
Особое внимание уделить тестированию
производительности