Регистрация  |  Вход

Что делать с новыми ВалРулами, "ломающими" старые тесты?

Это собственно не проблема, а просто рабочая ситуации. Уверен, что она знакома многим из вас.

есть большое рабочее приложение. но время от времени клиенты просят добавить новые ВалРулы, которые делают проверку значений полей. В результате падают старые тесты, которые выполняют ДМЛ оперции с записью, ничего не зная о новых ВалРулам.
Мы не можем запретить БА внедрять новые ВалРулы - это все бизнес процессы.

Но как правильно организовать внедрение новых требований к записям?

Я вижу только один путь:
(1) объяснить проблему БА и попросить их предупреждать тебя каждый раз, когда они внедряют новый ВалРул.
(2) проверять каждый новый ВалРул на то может ли он сломать старые тесты, и по необходимости вносить правки во все старые тесты...

долгий путь, может у вас есть лучшие варианты?

Это собственно не проблема, а просто рабочая ситуации. Уверен, что она знакома многим из вас.

есть большое рабочее приложение. но время от времени клиенты просят добавить новые ВалРулы, которые делают проверку значений полей. В результате падают старые тесты, которые выполняют ДМЛ оперции с записью, ничего не зная о новых ВалРулам.
Мы не можем запретить БА внедрять новые ВалРулы - это все бизнес процессы.

Но как правильно организовать внедрение новых требований к записям?

Я вижу только один путь:
(1) объяснить проблему БА и попросить их предупреждать тебя каждый раз, когда они внедряют новый ВалРул.
(2) проверять каждый новый ВалРул на то может ли он сломать старые тесты, и по необходимости вносить правки во все старые тесты...

долгий путь, может у вас есть лучшие варианты?

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

Так же ты можешь мониторить создание чего-лтбо нового через метадату. И соответственно будешь в курсе происходящего еще до падения тестов.

Остальные пути существенно сложнее.

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

Так же ты можешь мониторить создание чего-лтбо нового через метадату. И соответственно будешь в курсе происходящего еще до падения тестов.

Остальные пути существенно сложнее.

Wilder прав.

Чтобы избежать больших проблем нужно:
- запускать тесты по расписанию (CI/cron + salesforce-ant) с уведомлением о результатах;
- иметь единый класс для создания тестовых данных (DummyDataFactory), т.е. придется править код только в 1 месте;
- использовать View Setup Audit Trail, чтобы вычислить виновного, можно написать свою обертку над ним и тоже мониторить изменения.

Wilder прав.

Чтобы избежать больших проблем нужно:
- запускать тесты по расписанию (CI/cron + salesforce-ant) с уведомлением о результатах;
- иметь единый класс для создания тестовых данных (DummyDataFactory), т.е. придется править код только в 1 месте;
- использовать View Setup Audit Trail, чтобы вычислить виновного, можно написать свою обертку над ним и тоже мониторить изменения.


спасибо, это хорошие идеи

спасибо, это хорошие идеи

еще как вариант , можно заставить БА привязывать свои новые ВалРулы к определенному РТ(-ам), что вполне логично.
а при создании тестовых записей использовать специально созданный "тестовый" РТ, к которому не применяются никакие ВалРулы

еще как вариант , можно заставить БА привязывать свои новые ВалРулы к определенному РТ(-ам), что вполне логично.
а при создании тестовых записей использовать специально созданный "тестовый" РТ, к которому не применяются никакие ВалРулы

ну, так что, нет возражений по поводу такой схемы:

(1) создается специальный рекорд тайп для использования только в тестах.

(2) все тестовые записи создаются под этим рекорд тайпом.

(3) во всех ВалРулах используется дополнительный кондишн: если НЕ тестовый рекорд тайп.

при таком раскладе БА могут делать с ВалРулами, что угодно.

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

ну, так что, нет возражений по поводу такой схемы:

(1) создается специальный рекорд тайп для использования только в тестах.

(2) все тестовые записи создаются под этим рекорд тайпом.

(3) во всех ВалРулах используется дополнительный кондишн: если НЕ тестовый рекорд тайп.

при таком раскладе БА могут делать с ВалРулами, что угодно.

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

Den Brown
ну, так что, нет возражений по поводу такой схемы:
(1) создается специальный рекорд тайп для использования только в тестах.

Это как минимум неправильно:
- теряется смысл тестов
- логика зависит от тестов

[quote="Den Brown"]ну, так что, нет возражений по поводу такой схемы:
(1) создается специальный рекорд тайп для использования только в тестах.[/quote]
Это как минимум неправильно:
- теряется смысл тестов
- логика зависит от тестов

Было у меня такое. БА на встречу идти не хотели. Приходилось тесты все время вручную править.

Было у меня такое. БА на встречу идти не хотели. Приходилось тесты все время вручную править. 

Gres
- теряется смысл тестов
- логика зависит от тестов

я тоже так думал: тесты не воссоздают реальную ситуацию, реальную логику, а "варятся в собственном соку"

но тогда остается только вносить регулярные правки в тест-дата-фабрику...

[quote="Gres"]- теряется смысл тестов 
- логика зависит от тестов[/quote]

я тоже так думал: тесты не воссоздают реальную ситуацию, реальную логику, а "варятся в собственном соку"

но тогда остается только вносить регулярные правки в тест-дата-фабрику...

Den Brown
но тогда остается только вносить регулярные правки в тест-дата-фабрику...

Правильно! Падают тесты => логика изменилась => проверяешь логику на валидность => либо адаптируешь тесты, либо ищешь ошибку в логике => тесты выполяют свою функцию

[quote="Den Brown"]но тогда остается только вносить регулярные правки в тест-дата-фабрику...[/quote]
Правильно! Падают тесты => логика изменилась => проверяешь логику на валидность => либо адаптируешь тесты, либо ищешь ошибку в логике => тесты выполяют свою функцию