Исследование методики раннего тестирования

Завершено

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

Схема принципов тестирования DevOps.

Какие тесты должны быть частью тестирования влево?

Разработка программного обеспечения включает широкий спектр типов тестов, но к ним относятся:

  • Модульные тесты: эти тесты сосредоточены на наименьших тестируемых частях кода приложения, таких как отдельные функции или методы. Цель заключается в том, чтобы установить, может ли каждая единица кода успешно выполнять свою предназначенную операцию в изоляции от остальной части базы кода и внешних зависимостей. Такие тесты должны быть полностью автоматизированы, быстро (завершены в течение 30 секунд) и предоставлять полный охват кода (в основном это означает, что все модульные тесты должны коллективно тестировать всю базу кода). Модульное тестирование подходит для подхода влево. Мы рекомендуем применять его ко всему коду как можно раньше в цикле разработки, предпочтительно в начале этапа программирования.

    Схема, показывающая представление о тестировании и модульных тестах.

  • Тесты дыма: эти тесты предназначены для оценки основных функциональных возможностей приложения в тестовой среде. Хотя они проверяют фактическое приложение (а не отдельные, изолированные компоненты, как модульные тесты), их цель — определить, достаточно ли сборка или развертывание приложения достаточно стабильна, чтобы обеспечить более подробное тестирование. Однако они не проверяют взаимодействие между приложениями. Как и в случае с модульными тестами, они должны быть полностью автоматизированы и относительно быстры (взаимодействие с пользователем можно имитировать с помощью средств автоматизации браузера и платформ автоматизации пользовательского интерфейса). Термин дымового теста предназначен для передачи идеи дыма, указывающей на основную проблему (пожар), которая должна быть решена как можно скорее. Дымовое тестирование также должно быть реализовано в начале цикла разработки, желательно как только доступна версия программного обеспечения, предоставляющая его основную функциональность. Это относится как к этапам сборки приложения, так и к этапам развертывания.

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

  • Тесты принятия: эти тесты определяют, соответствует ли продукт программного обеспечения бизнес-требованиям и готов к доставке потребителям. Приёмочное тестирование не подходит для стратегии сдвига влево, но возможно интегрировать некоторые его элементы на ранних этапах жизненного цикла разработки программного обеспечения. Например, критерии принятия и истории пользователей, которые являются важными компонентами приемочного тестирования, должны быть введены в начале процесса разработки. Это упрощает совместную работу между командами разработчиков, владельцами продуктов и заинтересованными лицами проекта. Кроме того, потребители программного обеспечения и заинтересованные лица проектов должны участвовать в предыдущих этапах тестирования, чтобы поделиться своими отзывами. Это может включать использование таких методов, как альфа-тестирование или бета-тестирование, тестирование удобства использования или ранние выпуски перед формальным приемным тестированием.