Модульное тестирование потока данных в пакете ssis - PullRequest
5 голосов
/ 26 января 2009

Есть ли способ модульного тестирования потока данных в пакете ssis.

Пример: проверка сортировки - убедитесь, что сортировка выполнена успешно.

Ответы [ 5 ]

4 голосов
/ 29 января 2009

Существует инфраструктура модульного тестирования для SSIS - см. SSISUnit .

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

Один из подходов, который вы можете использовать, - это перепроектировать ваш пакет и разбить ваш компонент DataFlow на несколько компонентов DataFlow, которые можно протестировать индивидуально. Однако это повлияет на производительность вашего пакета, поскольку вам придется сохранять данные где-то между каждой задачей потока данных.

Вы также можете принять этот подход, используя NUnit или аналогичную инфраструктуру, используя API служб SSIS для загрузки пакета и выполнения отдельной задачи.

1 голос
/ 28 февраля 2014

SSISTester может подключаться к потоку данных между двумя компонентами и сохранять данные в файл. Выход можно получить в модульном тесте. Для получения дополнительной информации посмотрите ssistester.bytesoftwo.com. Ниже приведен пример использования SSISTester:

[UnitTest("DEMO", "CopyCustomers.dtsx", DisableLogging=true)]
[DataTap(@"\[CopyCustomers]\[DFT Convert customer names]\[RCNT Count  customers]", @"\[CopyCustomers]\[DFT Convert customer names]\[DER Convert names to upper string]")]
[DataTap(@"\[CopyCustomers]\[DFT Convert customer names]\[DER Convert names to upper string]", @"\[CopyCustomers]\[DFT Convert customer names]\[FFD Customers converted]")]
public class CopyCustomersFileAll : BaseUnitTest
{
    ...
    protected override void Verify(VerificationContext context)
    {
        ReadOnlyCollection<DataTap> dataTaps = context.DataTaps;

        DataTap dataTap = dataTaps[0];
        foreach (DataTapSnapshot snapshot in dataTap.Snapshots)
        {
            string data = snapshot.LoadData();
        }

        DataTap dataTap1 = dataTaps[1];
        foreach (DataTapSnapshot snapshot in dataTap1.Snapshots)
        {
            string data = snapshot.LoadData();
        }
    }
}
0 голосов
/ 30 января 2009

Мне нравится использовать средства просмотра данных, когда мне нужно увидеть, как данные перемещаются из компонента в компонент.

0 голосов
/ 29 января 2009

Я бы автоматизировал тестирование, имея заведомо хороший файл для соответствующих входных данных, который в двоичном виде сравнивается с внешней программой.

0 голосов
/ 27 января 2009

Краткий ответ - не легко. Более длинный ответ: да, но для этого вам понадобится много внешних инструментов. Одним из возможных тестов было бы взять небольшую выборку набора данных, выполнить ее через сортировку и выгрузить в файл Excel. Возьмите тот же набор данных, скопируйте его в электронную таблицу Excel и вручную отсортируйте его. Запустите двоичный инструмент сравнения различий результата SSIS и вашего отсортированного вручную примера. Если все подтвердится, это правильно.

OTOH, модульное тестирование сортировки в SSIS не должно быть необходимым, если только вы действительно не тестируете выбор критериев сортировки. Сорт должен был проверен MS перед отправкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...