Определение минимального количества тестов, которые необходимо выполнить для развертывания 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 и связанные тестовые классы, но, как указано выше, использование такой стратегии для ограничения тестовых запусков имеет реальную вероятность того, что вы пропустите ошибки (т.е. положительные).

Другие вопросы по тегам