Я сейчас работаю со своим вторым ISV-сервером Force.com и, таким образом, имею достаточный опыт выпуска продуктов на платформе (видел 4 выпуска отдельных продуктов, 1 из которых включал 3 версии, а 1 - еще одно обновление версии).
- Если возможно, вы должны попытаться удалить все шаги до / после установки, которые пользователь должен выполнить. Это звучит жестко, и это так, но это главная причина, по которой люди не принимают продукт. Идея состоит в том, что его можно быстро и легко установить, одним щелчком мыши, и любые дополнительные усилия ухудшают пользовательский опыт. Обеспечение независимости вашей системы от данных - это хороший способ обойти упомянутые вами проблемы безопасности данных, и, очевидно, вы можете предложить консультацию для выполнения работы по обновлению. Разумная идея может состоять в том, чтобы иметь список всех объектов и полей, на которые влияет установка ваших продуктов, а затем выполнить проверку организации клиента перед установкой. Я также сказал бы, что установка в песочнице и проведение пользовательского тестирования в течение нескольких недель может очень эффективно выявить любые проблемы, которые могут возникнуть в будущем.
- Это неправда, что полная автоматизация тестирования за пределами модульных тестов не может произойти и на самом деле очень проста. Ключ имеет необходимую настройку фреймворка. Таким образом, у вас будет центральная система контроля версий, в которой хранится ваш код (ключевая гибкая часть). Затем вы создаете сценарий, чтобы при фиксации кода он выполнял установку в организации SFDC, запуская все тесты и отчитываясь. Затем вы можете заставить этот сценарий запускать набор классов Apex или загружать кучу CSV-файлов для ввода данных с помощью либо более полных тестов Apex для запуска функциональности, либо для запуска Selen для набора тестов. Затем вы также можете использовать эти тестовые данные и сценарий для выведения из строя демонстрационных сред для продавцов.
- Ограничения регулятора и фоновой обработки немного ограничены, но они продолжают увеличиваться. Может быть, вам стоит интегрироваться с Heroku или подобным, чтобы выполнить более масштабную внешнюю обработку? Я скажу, хотя я думаю, что это улучшает способности программирования в целом, заставляя вас думать о том, что вы делаете, и о том, как лучше всего это сделать. Это приводит к более приятному восприятию конечным пользователем. Область пакетных заданий является хорошим способом выполнения этой обработки, и вы можете использовать объект asyncapexjob, чтобы сообщать пользователям о состоянии выполнения.
Надеюсь, что это помогает и дает вам другую перспективу!
Пол