テストカバレッジ
オフライン環境 / エアギャップ GitLab QA シナリオ
Test Platform 部門は、オフライン環境 / エアギャップテストをサポートする GitLab QA シナリオを持っています。
シナリオ Test::Instance::Airgapped は GitLab 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 はテストピラミッドアプローチに従い、マージリクエストにおけるビルド環境なしのユニットテストへシフトレフトし、実際の環境を構築するシステムレベルテストに進みます:
- 下位レベルテスト - マルチバージョンマイグレーションアップグレードジョブ
- システムレベルテスト - シングルノード/Docker アップグレード
- システムレベルテスト - マルチノード/セルフマネージドアップグレード
マルチバージョンマイグレーションアップグレードジョブ
| アップグレードパスシナリオ | 例 |
|---|---|
| 最新アップデートストップ → GitLab マージリクエスト | 16.7.7 → MR in 16.11 |
db:migrate:multi-version-upgrade は、最新の必須アップグレードストップから作業ブランチへのマルチバージョンアップグレードでマイグレーションが通過することを検証します。環境を構築せずにユニットレベルでマイグレーションエラーを早期発見できます。テストジョブはテストデータを含む最新の既知 GitLab バージョンストップから作成された PostgreSQL ダンプに対してデータベースマイグレーションを実行します。
GitLab QA アップデートシナリオ
| アップグレードパスの説明 | アップグレードパス | ジョブ名 | ジョブリンク例 |
|---|---|---|---|
| 前メジャーバージョンの最新アップデートストップからブランチ/MR でビルドされた現在のパッケージへ | Major-1 → アップデートストップ → pre-package | update-major | 15.11.13 → 16.1.6 → 16.3.7 → 16.7.7 → 16.11-pre |
| 最新マイナーリリースからブランチ/MR でビルドされた現在のパッケージへ | Minor-1 → pre-package | update-minor | 16.10.1 → 16.11-pre |
| 現在のパッチバージョンからブランチ/MR でビルドされた現在のパッケージへ | Patch-1 → pre-package | update-patch | 17.7.6 → 17.7.7-pre |
| ブランチ/MR でビルドされた現在のパッケージから次の安定 GitLab リリースへ | pre-package → N+1 | update-from-patch-to-stable | 17.7.7-pre → 17.8.4 |
| 現在の内部パッチバージョンからブランチ/MR でビルドされた現在のパッケージへ | Internal Patch-1 → pre-package | update-patch-from-internal-to-internal | 17.7.7-internal0-0 → 17.7.7-pre |
GitLab QA には Test::Omnibus::UpdateFromPrevious シナリオがあり、前(メジャー|マイナー|パッチ)バージョンから現在の GitLab バージョンへのアップデートを検証します(シナリオコード)。
また、Test::Omnibus::UpdateToNext GitLab QA シナリオは開発バージョンから次の安定リリースへのアップグレードパスのテストをサポートします。
テスト実行スケジュール
Test::Omnibus::UpdateFromPreviousシナリオは以下で実行されます:- GitLab
masterに対して 2時間ごとのスケジュールパイプライン から実行されるe2e:test-on-omnibus-ee/e2e:test-on-omnibus-ceジョブ - GitLab
masterに対して ナイトリースケジュールパイプライン から実行されるe2e:test-on-omnibus-nightlyジョブ - MR 内でビルドされた pre-release パッケージへの安定リリースからのアップグレードをテストする バックポート マージリクエスト
- GitLab
Test::Omnibus::UpdateToNextシナリオは以下で実行されます:- MR 内でビルドされた pre-release パッケージから安定リリースへのアップグレードをテストする バックポート マージリクエスト
リリースパイプラインでのテスト実行
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 で追跡されています。
