Вопрос

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

Нам нужно проверить и валидировать эти данные:

  • произошел ли вообще какой-то импорт
  • являются ли данные разумными (нулевые значения, количество строк и т.д.)
  • согласуются ли данные с другими значениями (возможно, у нас есть несколько источников для получения аналогичных данных)
  • закончились ли данные и требуется ли запрос на импорт вручную

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

Хороший ли это подход?Существуют ли лучшие, аналогично обобщенные шаблоны для проверки данных?

Мы являемся магазином .NET, будет ли Windows Workflow (WF) лучшим и гибким решением?

Это было полезно?

Решение

Модульное тестирование не является аналогом того, что вам нужно сделать.Это больше похоже на интеграционное тестирование или приемочное тестирование.Но это к делу не относится.

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

Workflow хорош для проектирования и контроля бизнес-процессов (логики), которые могут изменяться или требуют вмешательства человека.Он является агностиком, когда речь заходит о предмете валидации.Однако размещение процесса проверки в виде рабочего процесса может быть хорошей идеей, поскольку рабочие процессы спроектированы так, чтобы быть гибкими, долговечными и допускающими вмешательство человека.Размещение вашего процесса проверки в среде конечного автомата рабочего процесса позволило бы вам определять стратегии проверки для различных типов импорта данных во время выполнения.

Вам нужно разработать систему проверки, которая в своей логике в значительной степени опирается на композицию, а не на наследование.Разделите все различные способы импорта данных в систему и проверки их достоверности на атомарные этапы.Сгруппируйте эти шаги по степени ответственности и создайте интерфейсы с самыми простыми, минимальными свойствами и методами, необходимыми реализующему объекту для выполнения каждого из них.Создайте базовые классы, которые состоят из этих различных интерфейсов.С помощью этой платформы вы можете смешивать и сопоставлять реализации, соответствующие конкретному этапу импорта или проверки.

И последнее.Рабочие процессы сериализуются в xaml для долгосрочного хранения.Ваши классы также должны быть сериализуемыми в xaml, чтобы сделать переход от activity к репозиторию и обратно как можно более плавным и простым.

Другие советы

Проверка достоверности этих данных представляется разумной.Вы можете называть это модульным тестированием, а можете и не называть, это ваш выбор.Я бы не стал.Используйте инструмент, который, по вашему мнению, лучше всего подходит для этой работы - я не знаю, что вы подразумеваете под WF (WebForms?).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top