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 yerinetest:artifacts, taze tüketici kurulum davranışı için isetest:installkullanı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.33kö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.phptests/Feature/ComposerPackageMetadataTest.phptests/Feature/PackageServiceProviderBootstrapTest.phptests/Feature/PackageConsumerInstallCommandTest.phptests/Feature/Admin/SystemUpdatesTest.phptests/Unit/System/Updates/UpdateMigrationRunnerTest.phptests/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.phptests/Feature/PackageConsumerInstallAuthTest.phptests/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.phptests/Unit/System/Updates/UpdateMigrationRunnerTest.phptests/Unit/System/Updates/UpdatePackageExtractorTest.phptests/Unit/System/Updates/UpdateServerClientTest.phptests/Unit/System/InstalledVersionStoreTest.phptests/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.phptests/Feature/CmsApiTokensUpdateMigrationTest.phpgibi paket güncelleme migration testleritests/Feature/Admin/SystemBackupsTest.phptests/Feature/System/SystemBackupRestoreManagerTest.phptests/Feature/Console/SystemBackupRestoreCommandTest.phptests/Unit/System/BackupRestoreArchiveInspectorTest.phptests/Unit/System/DatabaseRestoreRunnerMysqlTest.phptests/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.phptests/Feature/CoreProjectBoundaryTest.phptests/Feature/PackageWrapperCleanupTest.phptests/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.phptests/Feature/Admin/AdminSidebarNavigationTest.phptests/Feature/Admin/SharedAdminPartialPackageViewTest.phptests/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.phptests/Feature/PublicMediaBlocksTest.phptests/Feature/PublicSharedSlotRenderingTest.phptests/Feature/PublicRichContentTest.phptests/Feature/MediaVisualBlockContractsTest.phptests/Feature/BlockTypePhaseThreeContractsTest.phptests/Feature/Integrity/BlockTranslationIntegrityTest.phptests/Feature/Admin/PageBuilderExperienceTest.phptests/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.phpscripts/build-root-managed-bridge-archive.shtarafı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.