Действительно ли поблочное тестирование подходит для разработки BPM?

Я в настоящее время работаю над большим проектом BPM на работе, которая использует Глобальные 360 наборов инструментов BPM под названием Процесс 360. Только дать некоторый фон; этот продукт работает как много других Решений BPM в этом, Вы разрабатываете несколько "карт процессов", которые определяют поток конкретного бизнес-процесса, который Вы пытаетесь смоделировать, и каждая карта процессов состоит из нескольких узлов задачи, соединенных вместе, которые выполняют конкретные функции (называющий веб-сервисы и т.д.).

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

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

Поскольку я упомянул ранее; нет пути, обеспеченного текущим набором инструментов для выполнения этого вида автоматизированного тестирования. Который на самом деле получил меня думающий почему? Будучи очень в новинку для целой сцены BPM, которой мое предположение было то, что это было просто функцией, недостающей продукта, но я также задаюсь вопросом, не сделано ли "поблочное тестирование" просто в мире BPM традиционно? Возможно, это просто не подходит хорошо к этому виду работы?

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

5
задан Dougc 23 January 2010 в 14:36
поделиться

3 ответа

Используйте другую подпись метода. Методы расширения подразумевают, что вы расширяете запечатанный класс с новыми функциональными возможностями и не переопределяете уже реализованные.

Методы расширения имеют семантику «скрытие по имени» с членами экземпляра в типе. Это означает, что любой доступный член экземпляра в типе всегда будет скрывать любые методы расширения с тем же именем, даже если метод расширения лучше подходит. В результате, если член экземпляра когда-либо добавляется к типу с тем же именем, что и метод расширения, то метод расширения может быть визуализирован как непригодный.

Для получения более подробной информации, посмотрите на этот пост: Методы расширения Передовые практики (методы расширения, часть 6)

-121--2644556-

Я оставляю определение «действительных» до драйвера ОС и файловой системы. Дайте пользователю ввести все, что он хочет, и передайте его. Обрабатывайте ошибки из ОС соответствующим образом. Исключение состоит в том, что я считаю разумным разделять ведущее и заднее места. Если люди хотят создать имена файлов со встроенными местами или ведущими дефисами или вопросительными знаками, и выбранная ими файловая система позволяет это сделать, вам не следует пытаться их предотвратить.

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

-121--2170521-

Я провел «единичное» тестирование с помощью K2.net 2003, другого коммерческого BPM. Я бы назвал это интеграционным тестированием, потому что это требует тестового сервера и это относительно медленно. Однако он автоматизирован.

Об этом хорошо говорится в книге Professional K2 blackpearl (она также относится к K2.net 2003).

Чтобы применить его к вашей платформе, набор инструментов должен иметь API, который разрешает запуск экземпляров процесса, получение рабочих предметов, завершение рабочих предметов и т.д. Вы пишете тесты, используя любой поддерживаемый язык (я использовал C #) и рамку тестирования (я использовал NUnit). Если API поддерживает синхронные вызовы, это проще сделать. Для каждого теста:

  1. Запустите тестовый процесс
  2. Выполните переход рабочего предмета к точке решения
  3. Установите соответствующие данные экземпляра процесса
  4. Завершите рабочий пункт
  5. Убедитесь, что рабочий предмет находится в ожидаемом действии
  6. Удалите или завершите экземпляр процесса

Базовые классы тестов или вспомогательные методы могут упростить это. Можно даже написать DSL для тестирования карт.

По существу, требуется полное «тестовое покрытие» процесса/карты - тестирование каждой точки принятия решения и обеспечение правильного филиала.

2
ответ дан 14 December 2019 в 13:36
поделиться

Частично достичь (1-уровня наследования) можно с помощью дженериков:

class PropertyBase<T>
{
    public static Type GetMyType() { return typeof (T); }
}

// the base class is actually a generic specialized by the derived class type
class ConcreteProperty : PropertyBase<ConcreteProperty> { /* more code here */ }

// t == typeof(ConcreteProperty)
var t = ConcreteProperty.GetMyType();
-121--1918133-

Бит подкласса не будет работать, поскольку статический метод привязан к типу. Это метод типа , а не метод экземпляра. Подтип не содержит статических методов базового типа, поскольку они являются различными типами и статический метод привязан к базовому типу. Даже если компилятор может позволить вызывать статический метод базового класса как через производный класс, он в действительности вызовет метод из базового класса. Это просто сахар из синтаксиса. По этой же причине невозможно «переопределить» статические методы в подклассах, поскольку это не имеет смысла.

-121--1918134-

Я видел что-то об этом, хотя и не связано с Global 360: используя bpelunit для тестирования процессов

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

3
ответ дан 14 December 2019 в 13:36
поделиться

Есть два аспекта BPM, которые связаны, но не идентичны.

Есть BPM, который отстаивают поставщики инструментов и технологий, и все это связано с функциями.

Существует также BPM, который пропагандируют Enterprise Architects и который направлен на создание центров передового опыта.

В первом случае компания покупает программное обеспечение.

В последнем случае компания вносит системные и неотъемлемые изменения в поведение своих ИТ-работников.

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

Я не знаю, насколько хорошо Global 360 поддерживает так называемую разработку через тестирование, но JBoss jBPM действительно предоставляет некоторую поддержку инструментов для простого написания тестов JUnit.

Однако этот инструмент не может и не будет заставлять разработчиков писать их или придерживаться принципов TDD.

1
ответ дан 14 December 2019 в 13:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: