Test Stratejisi

WebBlocks CMS sürüm doğrulaması risk temelli olmalıdır. Tam test paketi kullanılabilir olmaya devam eder, ancak rutin acil düzeltmeler (hotfix), değiştirilen yüzeyi koruyan en küçük odaklı betikle başlamalıdır.

Yerleşik Composer komutlarını kullanın:

composer test:release-fast
composer test:package
composer test:update
composer test:install
composer test:artifacts
composer test:admin-smoke
composer test:full

Composer Betikleri

  • composer test:release-fast: küçük, paket-yerlisi acil düzeltmeler için varsayılan toplu kapı. Paket güncelleme migration yönlendirmesini, paket çıkarmayı, mevcut System Updates davranışını, paket kurulum komutu davranışını, paket sağlayıcı önyüklemesini ve paket köklü sürüm çıktısı sınırlarını bilinçli olarak örnekler.
  • composer test:package: odaklı paket çalışma zamanı ve kaynak yetkisi sınırı kapsamı. Paket sağlayıcısı, paket rota/görünüm dilimleri, sarmalayıcı temizliği, Composer meta verileri veya paket durumu tanılamaları için kullanın. Sürüm ZIP biçimi ve paket genel varlık arşivi denetimleri için bunun yerine test:artifacts, taze tüketici kurulum davranışı için ise test:install kullanın.
  • composer test:update: odaklı paket-yerlisi güncelleyici kapsamı. System Updates, güncelleme sunucusu istemci ayrıştırması, migration çalıştırıcı davranışı, kurulu sürüm kalıcılığı, yedekleme hazırlığı, paket çıkarma veya paket güncelleme migration'ları için kullanın.
  • composer test:install: odaklı taze Composer tüketici kurulum kapsamı. webblocks:install, taze kurulum şeması, ilk yönetici kurulumu, tüketici kimlik doğrulaması ve kurulum sonrası yönetici/genel rota duman testi için kullanın.
  • composer test:artifacts: odaklı sürüm paketi arşivi ve kaynak çıkışı (checkout) sınırı kapsamı. .gitattributes, paket genel varlıkları, paket composer meta verileri, güncelleyici destek dosyaları, yerleşik sürüm betikleri veya yayıncı paket biçimi değiştiğinde kullanın.
  • composer test:admin-smoke: hafif yönetici rota/yerleşim duman testi kapsamı. Ortak yönetici yerleşimi, kenar çubuğu, sabit CMS marka kabuğu ve ortak yönetici parçacığı (partial) değişiklikleri için kullanın.
  • composer test:legacy-bridge: emekliye ayrılmış 1.31.53 -> 1.32.33 kök yönetimli köprü yolu için manuel arşiv kapsamı. Bunu rutin bir paket-yerlisi sürüm kapısı olarak kullanmayın.
  • composer test:full: manuel eski köprü testleri hariç, tam paket-yerlisi test paketi. Büyük sürümlerden, geniş kapsamlı kesişen değişikliklerden önce veya odaklı sonuçlar daha geniş bir riske işaret ettiğinde kullanın.

Biçimlendirme Denetimleri

Küçük odaklı acil düzeltmeler için varsayılan biçimlendirme kapısı olarak composer format:changed kullanın. Mümkün olduğunda değiştirilen dosyaları origin/main...HEAD ile karşılaştırır, hazırlanmış (staged) ve çalışma ağacındaki düzenlemeleri ekler, Pint'i yalnızca değiştirilen PHP dosyalarında çalıştırır ve değiştirilen PHP veya Blade dosyalarında proje girinti korumasını çalıştırır. Değiştirilen PHP veya Blade dosyası yoksa, açık bir işlem yapılmadı mesajı yazdırır ve başarıyla sonlanır.

Bir değişiklik geniş kapsamlıysa, sürüm açısından kritikse veya biçimlendirme araçlarına dokunuyorsa, tam depo biçimlendirme taban çizgisi için composer format:test kullanın. Girinti dışı PHP stili için Laravel Pint'i ve bakımı yapılan kaynak, paket, rota, görünüm, betik ve test kökleri genelinde projeye özgü 2 boşluklu PHP girinti kuralı için scripts/check-php-indentation.php betiğini çalıştırır. Pint'in girintiye özgü düzelticileri pint.json içinde devre dışı bırakılmıştır; böylece özel 2 boşluklu koruma yetkili kalır.

Sürüm Açısından Kritik

Temsili testler:

  • tests/Feature/ReleasePackageBoundaryTest.php
  • tests/Feature/ComposerPackageMetadataTest.php
  • tests/Feature/PackageServiceProviderBootstrapTest.php
  • tests/Feature/PackageConsumerInstallCommandTest.php
  • tests/Feature/Admin/SystemUpdatesTest.php
  • tests/Unit/System/Updates/UpdateMigrationRunnerTest.php
  • tests/Unit/System/Updates/UpdatePackageExtractorTest.php

Küçük paket-yerlisi acil düzeltmeler için composer test:release-fast ile çalıştırın. Sürüm; geniş yönetici/içerik davranışını, şema sözleşmelerini, içe/dışa aktarma taşınabilirliğini veya genel görüntülemeyi (rendering) değiştiriyorsa composer test:full ekleyin.

test:release-fast bilinçli olarak toplu bir kapıdır; bu nedenle test:update, test:install ve test:artifacts ile hafifçe örtüşür. Değiştirilen yüzey daha darsa, uygulama sırasında aşağıdaki odaklı betikler tercih edilir.

Paket Kurulumu Açısından Kritik

Temsili testler:

  • tests/Feature/PackageConsumerInstallCommandTest.php
  • tests/Feature/PackageConsumerInstallAuthTest.php
  • tests/Feature/PackageFreshInstallMigrationTest.php

Taze Composer tüketici kurulumu, taze şema, paket rota önyüklemesi, ilk yönetici kurulumu ve kurulum sonrası kimlik doğrulama veya yönetici/genel duman testi değişiklikleri için composer test:install ile çalıştırın. Değişiklik ayrıca paket kaynak yetkisine dokunuyorsa composer test:package, sürüm çıktısı biçimine dokunuyorsa composer test:artifacts kullanın.

Paket Güncellemesi Açısından Kritik

Temsili testler:

  • tests/Feature/Admin/SystemUpdatesTest.php
  • tests/Unit/System/Updates/UpdateMigrationRunnerTest.php
  • tests/Unit/System/Updates/UpdatePackageExtractorTest.php
  • tests/Unit/System/Updates/UpdateServerClientTest.php
  • tests/Unit/System/InstalledVersionStoreTest.php
  • tests/Feature/PageTranslationParentKeyUpdateMigrationTest.php

Güncelleyici istemci ayrıştırması, paket arşivi çıkarma, paket-yerlisi migration yürütmesi, yedekleme ön denetimi, kurulu sürüm kalıcılığı ve paket güncelleme migration değişiklikleri için composer test:update ile çalıştırın.

Yönetici, API, genel görüntüleme, komutlar, middleware veya herhangi bir çalışma zamanı kod yolu tarafından kullanılan bir tablo veya sütun eklerken, bir paket güncelleme migration regresyon testi ekleyin veya güncelleyin. Paket-yerlisi şema eklemeleri için tests/Feature/CmsApiTokensUpdateMigrationTest.php benzeri odaklı testler kullanın ve tam olarak o test sınıfını artı composer test:update komutunu çalıştırın. Yalnızca taze kurulum şeması kapsamı yeterli değildir; çünkü paket-yerlisi System Updates, ana makine/kök (host/root) migration'larını çalıştırmaz.

Migration / Yedekleme / Geri Yükleme Açısından Kritik

Temsili testler:

  • tests/Feature/PageTranslationParentKeyUpdateMigrationTest.php
  • tests/Feature/CmsApiTokensUpdateMigrationTest.php gibi paket güncelleme migration testleri
  • tests/Feature/Admin/SystemBackupsTest.php
  • tests/Feature/System/SystemBackupRestoreManagerTest.php
  • tests/Feature/Console/SystemBackupRestoreCommandTest.php
  • tests/Unit/System/BackupRestoreArchiveInspectorTest.php
  • tests/Unit/System/DatabaseRestoreRunnerMysqlTest.php
  • tests/Unit/System/DatabaseRestoreRunnerSqliteTest.php

Yalnızca migration içeren bir acil düzeltme için tam olarak ilgili migration test sınıfını çalıştırın; migration System Updates üzerinden çalışıyorsa ardından composer test:update çalıştırın. Arşiv biçimi, veritabanı dökümü, geri yükleme veya güncelleme öncesi yedekleme değişiklikleri için yedekleme ve geri yükleme sınıflarını ekleyin.

Yeni çalışma zamanı kodunun hemen beklediği şema için doğrulama, kurulum matrisinin her iki tarafını da kanıtlamalıdır: taze/paket tüketici kurulum şeması ve mevcut paket-yerlisi güncelleme migration'ı. Ayrıca eksik şemanın ham bir veritabanı istisnası yerine kontrollü kurulum/güncelleme yönlendirmesi üretmesi gerektiğinde, odaklı yönetici/API/çalışma zamanı kapsamı ekleyin.

Sürüm Çıktısı Sınırı

Temsili testler:

  • tests/Feature/ReleasePackageBoundaryTest.php
  • tests/Feature/CoreProjectBoundaryTest.php
  • tests/Feature/PackageWrapperCleanupTest.php
  • tests/Feature/Console/PackageStatusCommandTest.php

Mevcut paket-yerlisi sürüm paketi içeriği, paket köklü ZIP yerleşimi, public/cms varlık dahil etme, project/ hariç tutma, GitHub iş akışı arşiv davranışı ve paket sarmalayıcı temizlik sınırları için composer test:artifacts ile çalıştırın. Bu kapı, emekliye ayrılmış kök yönetimli köprü arşiv biçimini bilinçli olarak doğrulamaz.

Yönetici Duman Testi

Temsili testler:

  • tests/Feature/Admin/AdminDashboardRouteTest.php
  • tests/Feature/Admin/AdminSidebarNavigationTest.php
  • tests/Feature/Admin/SharedAdminPartialPackageViewTest.php
  • tests/Feature/Admin/PagePreviewTest.php

Yerleşim, kenar çubuğu, ortak yönetici parçacığı, paket yönetici rota önyükleme değişiklikleri ve yönetici önizleme rota/bağlantı duman testi kapsamı için composer test:admin-smoke ile çalıştırın. Değiştirilen alan rota/yerleşim duman testinden daha derinse, özel yönetici özellik testleri ekleyin.

Genel Görüntüleme / İçerik

Temsili testler:

  • tests/Feature/PublicEditorialBlocksRenderingTest.php
  • tests/Feature/PublicMediaBlocksTest.php
  • tests/Feature/PublicSharedSlotRenderingTest.php
  • tests/Feature/PublicRichContentTest.php
  • tests/Feature/MediaVisualBlockContractsTest.php
  • tests/Feature/BlockTypePhaseThreeContractsTest.php
  • tests/Feature/Integrity/BlockTranslationIntegrityTest.php
  • tests/Feature/Admin/PageBuilderExperienceTest.php
  • tests/Feature/Admin/PagePreviewTest.php

Blok görüntüleme, genel kabuk, medya, zengin metin, ortak slotlar, çeviri bütünlüğü, yönetici önizleme görüntülemesi veya sayfa oluşturucu değişiklikleri için odaklı sınıfları veya metot filtrelerini çalıştırın. Önizleme çalışmaları; kimliği doğrulanmış yönetici önizlemesinin taslak/incelemede/yayında sayfaları, genel rota davranışını, ziyaretçi raporlamasını, yayınlama durumunu veya arama/dizinleme varsayımlarını değiştirmeden görüntüleyebildiğini kanıtlamalıdır.

Emekliye Ayrılmış Eski / Kök Yönetimli Köprü

Manuel arşiv testleri:

  • tests/Unit/System/Updates/LegacyRootManagedUpdateCompatibilityTest.php
  • scripts/build-root-managed-bridge-archive.sh tarafından kapsanan köprü arşivi davranışı

Eski kök yönetimli köprü yolu, yalnızca tamamlanmış 1.31.53 -> 1.32.33 bridge -> 1.32.34+ package-rooted geçişinin tarihsel/manuel doğrulaması için mevcuttur. Mevcut proje politikası, rutin sürüm doğrulamasında desteklenecek eski kök yönetimli kurulum kalmadığı yönündedir.

Rutin paket-yerlisi kapılar legacy PHPUnit grubunu hariç tutar ve LegacyRootManagedUpdateCompatibilityTest testine bağımlı değildir. composer test:legacy-bridge komutunu yalnızca arşivlenmiş köprü betiğini bilinçli olarak denetlerken, tarihsel güncelleme belgelerini değiştirirken veya paket-yerlisi öncesi bir kurtarma senaryosunu araştırırken çalıştırın. Normal paket-yerlisi sürümleri bu emekliye ayrılmış köprü kapsamına bağlı olarak engellemeyin.

Yavaş / Yalnızca Tam Paket Adayları

Bu sınıflar yüksek değerli ancak geniş kapsamlı, maliyetli veya içerik yoğundur. Uygulama sırasında odaklı metot filtrelerini tercih edin ve ilgili olduğunda bunları tam paket veya özellik alanı doğrulamasına dahil edin:

  • tests/Feature/Admin/PageBuilderExperienceTest.php: çok geniş sayfa oluşturucu ve içerik yönetimi iş akışı kapsamı.
  • tests/Feature/SiteExportImportTest.php: tam dışa/içe aktarma yeniden oluşturma ve taşınabilirlik akışları.
  • tests/Feature/ContactFormModuleTest.php: geniş iletişim formu, posta, ayarlar ve bildirim davranışı.
  • tests/Feature/PublicSharedSlotRenderingTest.php: genel sayfalar genelinde ortak slot görüntüleme ve geçiş davranışı.
  • tests/Feature/MediaVisualBlockContractsTest.php: medya ağırlıklı blok sözleşmeleri ve görüntüleme davranışı.
  • tests/Feature/Admin/MediaManagementTest.php: yönetici medya iş akışları.
  • tests/Feature/Admin/PageEditorialWorkflowTest.php: editoryal iş akışı durum davranışı.

Temizlik Adayları

Test dosyası Neden eski veya yinelenmiş olabilir Aynı risk için daha yeni kapsam Önerilen eylem
tests/Unit/System/Updates/LegacyRootManagedUpdateCompatibilityTest.php Eski 1.31.53 kök yönetimli güncelleyici davranışını korur. Desteklenecek eski kök yönetimli kurulum kalmamıştır. SystemUpdatesTest, UpdateMigrationRunnerTest, UpdatePackageExtractorTest ve ReleasePackageBoundaryTest içindeki paket-yerlisi güncelleme kapsamı. Yalnızca legacy grubunda ve composer test:legacy-bridge içinde tutulur; rutin paket-yerlisi kapılardan hariç tutulur.
tests/Feature/ReleasePackageBoundaryTest.php içindeki köprü doğrulamaları Sürüm çıktısı testi, mevcut paket köklü sınırları kök yönetimli köprü betiği doğrulamalarıyla karıştırıyordu. Paket köklü sürüm biçimi aynı sınıfça kapsanır; köprü davranışı tarihseldir. ReleasePackageBoundaryTest paket-yerlisi kalsın diye LegacyRootManagedUpdateCompatibilityTest içine taşındı.
Geniş --filter=Package sürüm doğrulama alışkanlığı İlgisiz, adında paket geçen testleri çalıştırır ve maliyetli arşiv/kurulum denetimlerini yineler. composer test:package, hedeflenen paket kapısını açıkça adlandırır. Rutin kullanımı betik tabanlı kapılarla değiştirin.
tests/Feature/PackageConsumerInstallAuthTest.php ile PackageConsumerInstallCommandTest.php İkisi de taze kurulum durumunu sınar; biri komut taban çizgisine, diğeri rota/kimlik doğrulama duman testine odaklanır. Birlikte, artık composer test:install altında, kurulum sürümleri için yararlı olmaya devam ederler. Şimdilik ikisini de tutun; kurulum doğrulaması çok yavaşlarsa rota matrisini küçültmeyi değerlendirin.
tests/Feature/PackageServiceProviderBootstrapTest.php Geniş paket kaynak yetkisi doğrulamaları, sarmalayıcı temizliği ve paket durumu testleriyle örtüşebilir. PackageWrapperCleanupTest ve PackageStatusCommandTest daha dar dilimleri kapsar. Paket geçişi yeniyken sürüm açısından kritik olarak tutun; paket-yerlisi yapı oturduktan sonra yeniden değerlendirin.

PHPUnit Grupları

Test paketi şu anda yalnızca emekliye ayrılmış kök yönetimli köprü kapsamı için dar bir legacy PHPUnit grubu kullanır. Rutin composer betikleri bu grubu hariç tutar; composer test:legacy-bridge ise onu bilinçli olarak çalıştırır. package, update, release, artifact, admin-smoke ve slow gibi daha geniş gruplar, betik sınırları oturduktan sonra ileride yine de eklenebilir.