テストカバレッジ

Test Platform 部門は特定のシナリオのテストをサポートするカバレッジを有しています。

オフライン環境 / エアギャップ GitLab QA シナリオ

Test Platform 部門は、オフライン環境 / エアギャップテストをサポートする GitLab QA シナリオを持っています。 シナリオ Test::Instance::AirgappedGitLab QA テストシナリオの一部です。このスイートは、特定のポートへのアクセスを許可しつつその他のトラフィックを iptables でドロップするよう設定された Gitaly Cluster を含むテスト環境に対して実行されます。

テスト実行スケジュール

これは gitlab-org/gitlab ナイトリースケジュールパイプライン でトリガーされ、CE および EE のほぼすべてのテストスイートが実行されます(外部ソースからのデータインポートなど、ネットワーク接続に依存する製品機能のテストは除外されます)。gitlab-org/gitlab ナイトリースケジュールパイプラインの結果は Allure レポート で確認でき、失敗などのテスト状態でフィルタリングできます。 ナイトリーパイプラインは gitlab-org/gitlab ナイトリースケジュールパイプライン ページ(内部のみ)で確認できます。 オフライン環境 / エアギャップテストのジョブ名は ce:airgapped および ee:airgapped です。

その他の参考ガイド

Secure ステージには、アナライザーがオフラインで実行できることをテストするための追加テストがあります。 セキュアテスト(内部のみ)の詳細情報をご参照ください。

オフライン環境のテスト設定については、オフライン GitLab インストールのはじめかた ガイドに従ってください。セキュアスキャナーの操作手順は オフライン環境 ガイドに記載されています。

GitLab アップグレード

GitLab アップグレードテストカバレッジの目的は、アップグレードパス に従うお客様が成功できることを確保することです。

最良のカバレッジを達成するため、Test Platform はテストピラミッドアプローチに従い、マージリクエストにおけるビルド環境なしのユニットテストへシフトレフトし、実際の環境を構築するシステムレベルテストに進みます:

  1. 下位レベルテスト - マルチバージョンマイグレーションアップグレードジョブ
  2. システムレベルテスト - シングルノード/Docker アップグレード
  3. システムレベルテスト - マルチノード/セルフマネージドアップグレード

マルチバージョンマイグレーションアップグレードジョブ

アップグレードパスシナリオ
最新アップデートストップ → GitLab マージリクエスト16.7.7 → MR in 16.11

db:migrate:multi-version-upgrade は、最新の必須アップグレードストップから作業ブランチへのマルチバージョンアップグレードでマイグレーションが通過することを検証します。環境を構築せずにユニットレベルでマイグレーションエラーを早期発見できます。テストジョブはテストデータを含む最新の既知 GitLab バージョンストップから作成された PostgreSQL ダンプに対してデータベースマイグレーションを実行します。

GitLab QA アップデートシナリオ

アップグレードパスの説明アップグレードパスジョブ名ジョブリンク例
前メジャーバージョンの最新アップデートストップからブランチ/MR でビルドされた現在のパッケージへMajor-1 → アップデートストップ → pre-packageupdate-major15.11.13 → 16.1.6 → 16.3.7 → 16.7.7 → 16.11-pre
最新マイナーリリースからブランチ/MR でビルドされた現在のパッケージへMinor-1 → pre-packageupdate-minor16.10.1 → 16.11-pre
現在のパッチバージョンからブランチ/MR でビルドされた現在のパッケージへPatch-1 → pre-packageupdate-patch17.7.6 → 17.7.7-pre
ブランチ/MR でビルドされた現在のパッケージから次の安定 GitLab リリースへpre-package → N+1update-from-patch-to-stable17.7.7-pre → 17.8.4
現在の内部パッチバージョンからブランチ/MR でビルドされた現在のパッケージへInternal Patch-1 → pre-packageupdate-patch-from-internal-to-internal17.7.7-internal0-0 → 17.7.7-pre

GitLab QA には Test::Omnibus::UpdateFromPrevious シナリオがあり、前(メジャー|マイナー|パッチ)バージョンから現在の GitLab バージョンへのアップデートを検証します(シナリオコード)。

また、Test::Omnibus::UpdateToNext GitLab QA シナリオは開発バージョンから次の安定リリースへのアップグレードパスのテストをサポートします。

テスト実行スケジュール
  1. Test::Omnibus::UpdateFromPrevious シナリオは以下で実行されます:
  2. Test::Omnibus::UpdateToNext シナリオは以下で実行されます:
    • MR 内でビルドされた pre-release パッケージから安定リリースへのアップグレードをテストする バックポート マージリクエスト
リリースパイプラインでのテスト実行
  1. Test::Omnibus::UpdateFromPrevious シナリオは以下で実行されます:
    • 月次およびパッチリリースパイプラインで、現在の最新リリースバージョンから次のバージョンへのアップグレードをテスト

パフォーマンス環境のナイトリーアップグレード

Framework および Performance Enablement チームは、Reference Architecture ページに記載されているテストパフォーマンス環境をサポートしています。これらの環境は GitLab Environment Toolkit で構築され、環境に応じて毎日または毎週最新のナイトリーイメージにアップグレードされます。

詳細なプロセスは パフォーマンスとスケーラビリティ ページに記載されています。

Upgrade Tester

アップグレードパスシナリオ
最新アップデートストップ → GitLab ナイトリー16.7.7 → nightly
最新 GitLab リリース → GitLab ナイトリー16.10.1 → nightly
カスタムパスシナリオ15.0.0, 15.0.5, 15.4.6, 15.11.13, 16.1.6, 16.3.7, 16.7.7, 16.10.0

Reference Architectures を使用して様々なアップグレードパスをビルドおよびテストすることに特化した Upgrade Tester パイプラインは、指定したバージョンから始まり最新のナイトリーパッケージまたは特定のバージョンで終わる環境をビルドおよびアップグレードします。各アップグレードで使用するパスは開始バージョンと終了バージョンによって異なります。例えば、バージョン 16.0.0 から開始する場合、アップグレードパスは 16.0.0, 16.1.6, 16.3.7, 16.7.7, nightly となります。

スケジュールおよびテストに使用される Reference Architecture タイプの詳細は Upgrade Tester プロジェクト を参照してください。テスト結果は Slack の #qa-upgrade-results チャンネルに報告され、Self-Managed Platform チームがモニタリングします。

作業中

Test Platform チームは GitLab アップグレードカバレッジの改善に取り組んでおり、この取り組みは epic#12458 で追跡されています。