“Cuma Dağıtımı” Kaygısı
<p>Her geliştirici bu duyguyu bilir. Tüm hafta boyunca büyük bir yeni özellik üzerinde çalıştınız. Yerel makinenizde mükemmel çalışıyor. Kodunuzu birleştiriyorsunuz, Cuma öğleden sonra üretim ortamına dağıtıyorsunuz ve aniden müşteri destek kuyruğu patlıyor. Gösterge tablosunu güncellerken kullanıcı kayıt akışını bozmuşsunuz.</p>
<p>Dağıtım stratejiniz, üretime geçmeden önce uygulamanızda “çalıştığından emin olmak için” tıklayıp kontrol etmenize dayanıyorsa, ölçeklenebilir bir SaaS inşa etmiyorsunuz; büyük bir teknik yük inşa ediyorsunuz demektir.</p>
<h2>Manuel Testlerin Gerçek Maliyeti</h2>
<p>Manuel testlerin ölçeklenebilirliği yoktur. Laravel arka ucunuzda 150 rota var ve Flutter uygulamanızda 40 farklı ekran bulunuyor; küçük bir kod değişikliğinden sonra her bir kenar durumunu regresyon testi yapmak insan için matematiksel olarak imkansız hale gelir. Bu durum, geliştiricilerin eski kodları yenilemekten korkmasına yol açar ve sonunda ürünü öldüren teknik borçlar yaratır.</p>
<p>Hızlı hareket etmek ve her şeyi bozmamak için otomatik bir test akışı tasarlamanız gerekir.</p>
<h2>Pest ve GitHub Actions'a Giriş</h2>
<p>Laravel için, Postman'daki manuel API testlerini bir kenara bırakıyoruz ve bunun yerine <strong>Pest PHP</strong> kullanıyoruz. Pest, tüm uygulamanızı milisaniyeler içinde test eden insan okunabilir, otomatik doğrulamalar yazmamıza olanak tanır.</p>
<pre><code>// Faturalama API’mizin güvenliğini sağlayan basit bir Pest testi
test(‘unauthenticated users cannot view invoices’, function () {
$response = $this->getJson(‘/api/invoices’);
$response->assertStatus(401);});
test(‘premium users can generate pdfs’, function () {
$user = User::factory()->premium()->create();
$this->actingAs($user)
->postJson('/api/invoices/generate')
->assertStatus(200);});
<h2>CI/CD Kapı Bekçisi</h2>
<p>Test yazmak yeterli değildir; bunları zorunlu kılmalısınız. Altyapımızı, bir insanın bozuk kod dağıtımına kesinlikle <em>izin vermeyecek</em> şekilde tasarlıyoruz. GitHub Actions kullanarak, sürekli entegrasyon (CI) boru hattı oluşturuyoruz.</p>
<p>Bir geliştirici `main` dalına kod gönderdiğinde, sanal bir sunucu oluşur, bağımlılıklarımızı kurar, taze bir PostgreSQL test veritabanı oluşturur ve tüm Pest test kümesini çalıştırır. Eğer bir test bile başarısız olursa, boru hattı durdurulur ve dağıtım engellenir.</p>
<h2>Sonuç</h2>
<p>Otomatik testler, büyük ekipler için "güzel bir şey" değildir; küçük ekiplerin ve tek kurucuların daha iddialı bir şekilde çalışmasını sağlayan nihai güvenlik ağını temsil eder. Test yazmaya zaman ayırarak ve katı bir CI/CD boru hattı inşa ederek, dağıtım kaygısını mutlak mühendislik güveni ile değiştirmiş olursunuz.</p>Kaynak: Orijinal Makale


