Данные модульного тестирования?
Наше программное обеспечение управляет большим количеством потоков данных из различных источников: реплицированные базы данных в режиме реального времени, файлы, автоматически передаваемые по FTP, запланированный запуск хранимых процедур базы данных для кэширования моментальных снимков данных со связанных серверов и множество других методов получения данных.
Нам нужно проверить и подтвердить эти данные:
- импорт даже случился
- являются ли данные разумными (нулевые значения, количество строк и т. д.)
- данные согласовываются с другими значениями (возможно, у нас есть несколько источников для похожих данных)
- это из данных, а импорт требует вручную
Во многих отношениях это похоже на модульное тестирование: существует много типов проверки, просто добавьте новую проверку в список и просто повторно запустите каждый класс теста в ответ на конкретное событие. Уже есть хорошие графические интерфейсы для запуска тестов, возможно, даже возможность запланировать их.
Это хороший подход? Существуют ли лучше аналогичные обобщенные шаблоны для проверки данных?
Мы магазин.NET, станет ли Windows Workflow (WF) лучшим, более гибким решением?
2 ответа
Модульное тестирование не является аналогом того, что вам нужно сделать. Это больше похоже на интеграционное тестирование или приемочное тестирование. Но это не относится к делу.
Ваша система предъявляет строгие требования к проверке данных, поступающих в систему. Данные поступают в систему различными способами, и я предполагаю, что их необходимо проверять разными способами.
Рабочий процесс хорош для проектирования и управления бизнес-процессами (логикой), которые могут изменяться или требуют вмешательства человека. Это агностик, когда дело доходит до предмета проверки. Тем не менее, размещение вашего процесса проверки в качестве рабочего процесса может быть хорошей идеей, так как рабочие процессы разработаны так, чтобы быть гибкими, долгосрочными и способными к вмешательству человека. Размещение вашего процесса проверки в структуре конечного автомата рабочего процесса позволит вам определить стратегии проверки для различных типов импорта данных во время выполнения.
Вам необходимо спроектировать структуру валидации, которая в значительной степени зависит от композиции, а не от наследования. Разбейте все различные способы, которыми данные могут быть импортированы в систему и проверены на атомарные этапы. Сгруппируйте эти шаги по ответственности и создайте интерфейсы с самыми минимальными свойствами и методами, необходимыми для реализации каждым из реализующих объектов. Создайте базовые классы, которые состоят из этих различных интерфейсов. Из этой среды вы можете смешивать и сопоставлять реализации, которые соответствуют определенному этапу импорта или проверки.
Одна последняя вещь. Рабочие процессы сериализуются в xaml для длительного хранения. Ваши классы также должны быть сериализуемыми xaml, чтобы переход от активности к репозиторию и обратно был как можно более плавным и простым.
Проверка этих данных на достоверность представляется разумной. Вы можете или не можете называть это модульным тестированием, это ваш выбор. Я бы не стал. Используйте инструмент, который вы найдете лучше всего для этой работы - я не знаю, что вы подразумеваете под WF (WebForms?).
Наибольшую пользу вы получите, протестировав это автоматически. Все, что является автоматическим и работает для вас, хорошо.