ソフトウェア開発ライフサイクルでは、継続的インテグレーションおよび継続的デリバリー (CI/CD) パイプラインに統合された自動テストがソフトウェアの品質を確保するために重要です。自動テストは、エラーを迅速に発見し、手動作業を軽減し、テストの精度と範囲を向上させるのに役立ちます。 CI/CD パイプラインでは、通常、ビルドの完了後、コードがデプロイされる前に、単体テスト、UI テスト、統合テストなどの自動テストが実行されます。これらは実行を高速化するために並行して実行できます。統合テストは、アプリケーション コンポーネント間の相互作用をテストし、システム全体の機能を検証するため、CI/CD パイプラインでは特に重要です。
# 前回の記事では、アジャイル チーム向けの自動テスト ケースのさまざまな使用例について説明しました。 1 つのシナリオは、チームがテストをすべてのビルドと統合し、ビルド プロセスの一部として継続的統合を実装したい場合です。
この記事では、継続的インテグレーション/継続的デリバリー プラットフォームでの統合テストについて説明します。
基本的なことから始めましょう。
自動テストとは何ですか?
ソフトウェア テストとは、一連のテスト ケースに基づいてテストを実行し、実際の結果と予測された結果を比較することを指します。このプロセスでは、いくつかの手順とテスト手法に従う必要があります。製品の品質を保証するにはテストが不可欠です。このプロセスは通常、テスターのチームによって手動で行われます。ただし、自動テストでは、ソフトウェア ツールと技術を使用してプロセスが自動化されます。ここでは、手動の手順は不要になり、スクリプトが自動的に作成され、テスト ケースが実行されます。自動テストにより、人的エラー、カバレッジ、その他多くの問題が排除されます。また、時間が節約され、テスト実施の利便性が向上し、効率と有効性が向上します。
CI/CD パイプラインの自動テスト
自動テストは、高速実行テストが開発者に早期のフィードバックを提供するため、CI/CD パイプラインの中核部分です。早期に検出された問題やエラーは、より早く修正できる可能性があります。その結果、公開された製品はより正確になり、エラーがなくなりました。これにより製品全体の品質が向上し、顧客満足度が高まります。つまり、CI/CD パイプラインでの自動テストの利点は次のとおりです。
「高速ビルド、高速フェイル」という CI/CD の概念に沿って
手動作業の量を減らすことで、時間を節約し、エラーの可能性を減らします。
テスト ケースの数が増えると、テスト結果の精度が向上し、より広い範囲をカバーできるようになります。
つまり、継続的統合により、開発チームはコードを共有リポジトリに統合できます。これは、コードの品質を維持し、コードのローカル バージョンの潜在的な問題を早期に特定するのに役立ちます。
継続的デリバリーは、「継続的デプロイメント」とも呼ばれます。開発チームが継続的にマージしているものはすべて、常にライブ環境にデプロイされています。
ほとんどの開発者は並行して作業するため、コードを常にリポジトリに統合することは、マスター ブランチが新しい機能で常に更新されることを意味します。変更が急速に発生することによってコードの品質が損なわれないようにするには、テストを同じペースで実行する必要があります。
当然のことながら、この環境での手動テストは、この目標を達成するための最良の方法ではありません。自動テストは、CI/CD パイプラインでのテストを成功させるための鍵です。
9 継続的デリバリー フェーズ
Перебазирование и разрешение конфликтов. В реальном сценарии разработки несколько человек будут объединять свой код. Разработчикам необходимо следить за тем, чтобы их ветки всегда обновлялись. Обновление ветки последним объединенным кодом называется «перебазированием». После изменения положения могут возникнуть некоторые конфликты, которые необходимо разрешить. После этого снова запустите тест для измененного кода.
Коммит: после прохождения тестов код готов к фиксации всех изменений.
Сборка: разработанный исходный код затем собирается для создания артефакта развертывания, который можно запустить на экземпляре, например на сервере, где среда является локальной по отношению к среде. Теперь этот код готов к развертыванию в другой среде тестирования.
UAT: затем код развертывается на тестовом сервере, и тестировщики начинают тестировать функцию. Эти тесты могут быть автоматизированными или ручными.
Объединение: если тестируемый коммит одобрен тестировщиками, он будет объединен с основной веткой.
Развертывание в рабочей среде: после слияния кода он развертывается в рабочей среде.
Каждая сборка кодов разработчика должна пройти описанный выше процесс.
Какое место в конвейере CI/CD занимает автоматическое тестирование?
В идеале автоматическое тестирование происходит после завершения этапа сборки и возможности развертывания кода. На этом этапе можно запускать модульные тесты, тесты пользовательского интерфейса и интеграционные тесты. Эти тесты помогают убедиться, что код соответствует стандартам качества.
Этот этап может длиться от нескольких минут до нескольких часов, в зависимости от архитектуры автоматизации.
Тесты можно запускать параллельно, чтобы ускорить их выполнение. Если код дает сбой на этапе тестирования, сборку можно отклонить, не тратя дополнительное время на ручное тестирование.
Инструменты для CI/CD
Jenkins: Jenkins — это инструмент с открытым исходным кодом для непрерывной интеграции. Его можно использовать бесплатно, а задания можно настраивать через интерфейс и сценарии.
Travis CI: Этот инструмент бесплатен для проектов с открытым исходным кодом и размещен на GitHub.
Gitlab: Gitlab — это инструмент контроля версий с собственным облачным подходом к CI. Он поддерживается на нескольких платформах и имеет как бесплатную, так и платную версии.
Bamboo: Bamboo — это инструмент CI для Jira. Если ваша организация использует Jira, было бы полезно попробовать этот инструмент. Он также поддерживает автоматическое объединение при утверждении заявки.
Рекомендации по использованию конвейеров CI/CD для получения максимальной отдачи от автоматизации тестирования
Постепенные изменения: всегда рекомендуется Следуйте поэтапному подходу. Если функция действительно большая, лучше разбить ее на более мелкие и более быстрые для тестирования функции. Это важно для автоматизации, поскольку, если что-то пойдет не так, будет легче определить основную причину. Если ваши обязательства слишком велики, выяснить причину проблемы будет непростой задачей.
Определите, что можно автоматизировать. Команды обычно быстро погружаются в работу и говорят: «Давайте автоматизируем все», но это распространенная ошибка. Мы должны понять цель автоматизации и определить тестовые примеры, которые следует автоматизировать.
Параллельное тестирование. Тесты следует запускать параллельно, чтобы сделать тестирование более эффективным и своевременным. Это может значительно сократить время, необходимое для запуска тестов, и ускорить получение результатов. Но недостаточно просто выполнять эти тесты параллельно; важно также масштабировать размер сервера, на котором выполняются тесты, чтобы действительно увеличить скорость тестирования.
Заключение
Автоматическое тестирование — важная часть успешного развертывания проектов с соблюдением стандартов качества. Обеспечение выполнения тестов на каждом этапе обеспечивает хорошую прозрачность качества кода. Ошибки можно обнаружить на ранней стадии, и любые задержки, которые могут быть вызваны ими, могут быть оперативно устранены. Наличие конвейера CI/CD для интегрированного тестирования помогает ускорить процесс тестирования и развертывания.
以上がCI/CD パイプラインの自動テスト: タイプとステージの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。