Определение минимального количества тестов, которые необходимо выполнить для развертывания Salesforce
Я настроил действие GitHub, которое проверяет изменения кода по запросу на перенос. Я использую интерфейс командной строки Salesforce для проверки (в PR) или развертывания (в
main
объединить).
В документации есть несколько вариантов определения тестирования для этого развертывания.
NoTestRun
,,,
RunAllTestsInOrg
. Я сейчас использую
RunLocalTests
как так:
sfdx force:source:deploy -x output/package/package.xml --testlevel=RunLocalTests --checkonly
Мы работаем с некоторыми крупными организациями, полное тестирование которых занимает довольно много времени. Я хотел бы только
RunSpecifiedTests
для проверки, но я не уверен, как настроить действие GitHub, чтобы динамически знать, какие тесты нужно выполнить. Я не видел ничего в документации CLI, чтобы определить это.
1 ответ
На самом деле нет способа сделать это со 100% надежностью. Любое изменение в коде Apex может повлиять на любой другой код Apex. Широкий спектр декларативных изменений метаданных, включая, например, правила проверки, фильтры полей поиска, процессы и потоки, правила рабочего процесса и изменения схемы, могут повлиять на выполнение кода Apex.
Если вы хотите сократить время выполнения тестирования и развертывания, воспользуйтесь следующими ключевыми стратегиями:
- Убедитесь, что ваши тесты могут выполняться параллельно, что обычно на несколько порядков быстрее.
- Удалите все тесты, которые не обеспечивают значимой проверки вашего приложения.
- Разбейте приложение на пакеты, которые можно тестировать изолированно. Затем используйте интеграционные тесты (независимо от того, написаны ли они в Apex или в каком-либо другом инструментальном средстве, таком как Robot Framework), чтобы проверить взаимодействие между новыми версиями пакета.
Только это последнее может дать вам реальную возможность установить границы вокруг определенного поведения кода и протестировать его изолированно, хотя вам также всегда будут нужны интеграционные тесты.
В лучшем случае вы можете установить какое-то соглашение об именах, которое сопоставляет классы Apex и связанные тестовые классы, но, как указано выше, использование такой стратегии для ограничения тестовых запусков имеет реальную вероятность того, что вы пропустите ошибки (т.е. положительные).