Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Testin geçiyor. Hiçbir şeyi test etmiyor.
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Testin geçiyor. Hiçbir şeyi test etmiyor.

Yazılım

Testin geçiyor. Hiçbir şeyi test etmiyor.

teknomers
Son güncelleme: 20 Temmuz 2026 21:21
teknomers
Paylaş
Paylaş

Doğru Test Stratejilerini Kullanmak

140 testiniz var. Hepsi geçiyor. Pipeline yeşil, kaplama oranı %78’de ve “kolay” bir his veriyor.

Bir kullanıcı, siparişin oluşturulduğu ama onay e-postasının hiç ulaşmadığını rapor ediyor. Testin store metodunun mevcut olduğunu görüyorsunuz, geçiyor ve hiçbir şey sorun çıkarmıyor.

Neden? Çünkü e-postaya bakmadı. Sadece HTTP durum koduna baktı.

Yanlış Test Olarak Geçen Senaryolar

Böylesi testleri daha önceden yazdınız. Bu durumda:

public function test_cria_pedido()
{
    $user = User::factory()->create();

    $response = $this->actingAs($user)->post('/pedidos', [
        'produto_id' => 1,
        'quantidade' => 2,
    ]);

    $response->assertStatus(200); // 🎉 yeşil!
}

Şimdi rahatsız edici bir alıştırma: kontrolü gidin ve e-posta gönderme satırını yorumlayın.

Test hala geçiyor.

İndirim hesaplama satırını yorumlayın. Geçiyor.

Stok düşürme satırını yorumlayın. Geçiyor.

Bu test, sipariş oluşturmayı test etmiyor. Sadece rotanın mevcut olup olmadığını ve Laravel’in yolda patlak vermediğini test ediyor. Bu, çok fazla şeyin doğru olduğunu gösteren bir test. Gerçekte, bu testin anlamı yoktur.

Testlerin Gerçek Değerleri

Testlerin geçerli olup olmadığını anlamanın tek yolu, kodu bozduğunuzda testin maviye dönüşüp dönüşmediğidir. Bir test, davranış değiştiğinde başarısız olmalıdır.

Geçen bir test, kodun ne yaptığına dair bir güvence sağlamıyor, sadece güzel bir kaplama sunuyor ve aynı zamanda zaman alıyor. Bu tür testler, “test geçerdi” demenin ötesine geçmiyor.

Özelliklerin Gerçek Yeteneklerini Test Etmek

Bir sipariş oluşturmanın iş anlamı nedir? Muhtemelen: veritabanına kaydetmek, stok düşürmek, bir e-posta göndermek. Bu nedenle, testin şunları ifade etmesi gerekiyor:

public function test_cria_pedido()
{
    Mail::fake();

    $user = User::factory()->create();
    $produto = Produto::factory()->create(['estoque' => 10]);

    $response = $this->actingAs($user)->post('/pedidos', [
        'produto_id' => $produto->id,
        'quantidade' => 2,
    ]);

    $response->assertRedirect('/pedidos');

    // Sipariş gerçekten var, doğru verilerle
    $this->assertDatabaseHas('pedidos', [
        'user_id' => $user->id,
        'produto_id' => $produto->id,
        'quantidade' => 2,
    ]);

    // Stok azaldı
    $this->assertEquals(8, $produto->fresh()->estoque);

    // E-posta, doğru kişiye gitti
    Mail::assertSent(PedidoConfirmado::class, fn ($mail) => $mail->hasTo($user->email));
}

Şimdi geri dönüp e-posta satırını yorumlayın. Kırmızı. Stok satırını yorumlayın. Kırmızı.

Bu test, sistemin ne yaptığını bilmektedir. Bu nedenle, bir anlamı vardır.

Laravel’in Sağladığı Faydalar

Gördüğüm zayıf testlerin yarısı, kişinin doğrulama yapabileceğini bilmediğinden kaynaklanmaktadır. Laravel neredeyse her şeyi hazır sunar:

Mail::fake();   Mail::assertSent(BoasVindas::class);
Queue::fake();  Queue::assertPushed(ProcessarPagamento::class);
Event::fake();  Event::assertDispatched(PedidoCriado::class);
Bus::fake();    Bus::assertChained([...]);
Storage::fake('s3'); Storage::disk('s3')->assertExists('nota.pdf');
Http::fake();   Http::assertSent(fn ($req) => $req->url() === 'https://api.exemplo.com/cobranca');

Her bir satır, testiniz için görünmez olan yan etkileri ortaya çıkarır.

Test Kapsamı Bilmecesi

Yalnızca doğru yolları test etmekle kalmayın. Sadece veri girişleri ile aynı temel senaryoları yazmak, hataların genellikle yolda bulunmadığını göz önüne almanız anlamına gelir. Hatalar genellikle negatif senaryolarda gizlenir. Bu nedenle, kodu test etmeli ve başarısız olmasını sağlamalısınız.

public function test_nao_cria_pedido_sem_estoque()
{
    $produto = Produto::factory()->create(['estoque' => 1]);

    $response = $this->actingAs(User::factory()->create())
        ->post('/pedidos', ['produto_id' => $produto->id, 'quantidade' => 5]);

    $response->assertSessionHasErrors('quantidade');
    $this->assertDatabaseCount('pedidos', 0); // ve hiçbir şey yaratmadı
}

Unutmayın, sadece hata almanız yeterli değil — hiçbir şeyin gerçekleşmediğini de onaylamanız gerekir.

Mocklama Hataları

Bir diğer aşırı durum da, her şeyin mock edilmesi. Bu da yanıltıcı olabilir çünkü sophisticated görünür:

$repo = Mockery::mock(PedidoRepository::class);
$repo->shouldReceive('criar')->once()->andReturn(new Pedido());
$this->app->instance(PedidoRepository::class, $repo);

Her şeyi mockladıysanız, geriye ne kaldı ki test edebilesiniz? A metodunun B metodunu çağırdığını onaylamışsınız. B bozukken, test hala yeşil kalmaya devam eder.

Kapsama Oranı ve Kalite

%78 kapsama, testler sırasında %78’inin çalıştırıldığını gösterir. Ancak doğrulandıklarını göstermez. İlk testiniz, assertStatus(200) sadece controller’ın tamamını çalıştırır. Güzel bir kapsama ama hiçbir algılama yeteneği yok.

Doğru bir metrik arıyorsanız, mutation testing yöntemini uygulayın. PHP’de, Infection kullanarak kodunuzu kasıtlı olarak değiştirir (bir >yi >= ile değiştirir, bir booleanu tersine çevirir) ve hangi testlerin durumu algıladığını kontrol eder.

Sonuç Olarak

Şimdi en önemli testinizi belirleyin. O testi kontrol eden kodda bir iş kuralı satırını silin.

Yeşil mi geçti? Güvenlik ağlarınız hakkında önemli bir şey keşfettiniz.

Ve hangi hatanın tüm testleri atladığını ve üretimde patladığını düşünüyorsunuz? Yorumlarda paylaşın — ben başlıyorum: Mail::fake() bıraktığım bir testle geldi. Bir daha asla. 😅

Kaynak: Orijinal Makale

Contents
  • Doğru Test Stratejilerini Kullanmak
  • Yanlış Test Olarak Geçen Senaryolar
  • Testlerin Gerçek Değerleri
  • Özelliklerin Gerçek Yeteneklerini Test Etmek
  • Laravel’in Sağladığı Faydalar
  • Test Kapsamı Bilmecesi
  • Mocklama Hataları
  • Kapsama Oranı ve Kalite
  • Sonuç Olarak
Laracon EU 2026: Amsterdam’ın Laravel’in Geleceği Hakkında Bize Anlattıkları
Gerçek Açık Kaynak Katkılarım Beni Mutlu Etti
Laravel Yerelleştirme: Çok Dilli Web Sitesi – DEV Community
En İyi 3 Güvenilir Chime Hesap Sağlayıcısı
2026 İçin Nihai Laravel Öğrenme Yol Haritası ve Kaynaklar Listesi
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Dino Avcıları İçin Yeni Kodlar İle Maceraya Hazırlanın
Sonraki Makale Adobe’nun doğal görünüm sunan kamera uygulaması üretken AI ile tanışıyor

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Michigan’da Kamu Sağlığı Krizi: Abdul El-Sayed’in Çözüm Önerileri
Genel
Modern Warfare 4’te Efsanevi Desert Eagle ile Yeni Dönem Başlıyor
Oyun
Aimeos e-ticaret projelerini bir fork oluşturmadan nasıl özelleştirilir
Yazılım
Intel, Veri Merkezi Grubu’nda İşten Çıkarma Yapacak
Donanım
ABD’nin Çinli AI’ya Karşı Shock Yaşamasını Bırakması Gerek
Liste
Palworld 1.0’daki Su Sulama İçin En İyi Dostlar
Oyun
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?