Kaos Testi Nedir ve Nasıl Uygulanır?

Ashley Goolam

Ashley Goolam

23 December 2025

Kaos Testi Nedir ve Nasıl Uygulanır?

Çoğu test stratejisi arızaları önlemeyi amaçlar. Amaçları, sistemlerin beklenen koşullar altında doğru çalıştığını doğrulamaktır. Kaos Testi ise tam tersi bir yaklaşım sergiler; sisteminizin arızalara dayanabileceğini kanıtlamak için bilerek arızalar yaratır. Bu sezgisel olmayan yöntem, gerçek dünya çalkantılarına dayanabilecek dayanıklı bulut tabanlı uygulamalar oluşturmak için vazgeçilmez hale gelmiştir.

button

Kaos Testi Tam Olarak Nedir?

Kaos Testi, beklenmedik kesintiler sırasında hizmetin kullanılabilirliğini ve veri bütünlüğünü sürdürme yeteneğini doğrulamak için bir sisteme kasıtlı olarak hata enjekte etme uygulamasıdır. "Bu özellik çalışıyor mu?" diye sormak yerine, "Bir veritabanı düğümü çöktüğünde, ağ gecikmesi arttığında veya tüm bir bölge çevrimdışı kaldığında sistemimiz hayatta kalabilir mi?" diye sorar.

Bu konsept, Netflix'te 2010 yılında, üretim sunucularını rastgele sonlandıran bir araç olan Chaos Monkey ile ortaya çıktı. Felsefe basitti: eğer düzenli olarak kasıtlı olarak bir şeyleri bozarsanız, zayıflıkları bir kesintiye dönüşmeden önce keşfedersiniz. Bugün, Kaos Testi, özel platformlar, kontrollü deneyler ve ölçülebilir dayanıklılık metrikleri ile sofistike bir disipline dönüşmüştür.

Kaos Testinin Kritik Önemi

Geleneksel testler mükemmel bir dünya varsayar; kararlı ağlar, sağlıklı sunucular ve öngörülebilir yükler. Üretim gerçekliği ise karmaşıktır. Kaos Testi, varsayımlarımız ile gerçeklik arasındaki boşlukları ortaya çıkarır:

  1. Basamaklı Arızaları Önler: Tek bir mikro hizmet arızası, domino etkisi yaratabilir. Kaos deneyleri, bu bağımlılıkları kesintilere neden olmadan önce ortaya çıkarır.
  2. İzleme ve Uyarıyı Doğrular: Eğer uyarı sisteminiz bir kaos deneyini fark etmezse, gerçek bir arızayı da fark etmeyecektir.
  3. Güven Oluşturur: Düzenli olarak hata pratiği yapan ekipler, paniklemek yerine gerçek olaylar sırasında sakin tepki verirler.
  4. Kurtarma Süresini İyileştirir: Tekrarlanan hata pratiği, ortalama kurtarma süresini (MTTR) saatlerden dakikalara düşürür.
  5. Maliyet Tasarrufu: Bir saatlik planlı kaos testi, günlerce sürecek planlanmamış kesinti maliyetlerini önler.

Kaos Testi Nasıl Yapılır: Bilimsel Yöntem

Etkili Kaos Testi, rastgele yıkım yerine yapılandırılmış bir yaklaşım izler:

Adım 1: Kararlı Durumu Tanımlayın

Normal sistem davranış metriklerini belirleyin: yanıt süresi, hata oranı, verim. Bu temel seviye, kaos enjekte etmeden önce sistemin sağlıklı olduğunu kanıtlar.

Adım 2: Bir Hipotez Oluşturun

Ne beklediğinizi belirtin: "Eğer bir veritabanı replikasını öldürürsek, gecikme %10'dan az artacak ve hiçbir veri kaybedilmeyecektir."

Adım 3: Hata Enjekte Edin

Kontrollü hatalar tanıtın:

Adım 4: İzleyin ve Ölçün

Sistem davranışını gerçek zamanlı olarak gözlemleyin. Zarifçe mi yoksa felaketle mi bozuluyor?

Adım 5: Analiz Edin ve İyileştirin

Bulguları belgeleyin, zayıflıkları giderin ve iyileştirmeleri doğrulamak için deneyleri tekrarlayın.

Kaos Testi Araçları ve Çerçeveleri

Modern Kaos Testi platformları, kontrollü, güvenli hata enjeksiyonu sağlar:

Gremlin

Web kullanıcı arayüzü ve API'ye sahip kurumsal düzeyde bir kaos mühendisliği platformu. Bulut altyapısına CPU artışları, ağ gecikmesi, disk hataları ve daha fazlasını enjekte edin.

# Gremlin CLI örneği: API çağrılarına 100ms gecikme ekle
gremlin attack latency --delay 100 --duration 60s --targets api-server
Gremlin
Gremlin

Chaos Monkey

AWS örneklerini rastgele sonlandırmak için orijinal araç. Şimdi Simian Army paketinin bir parçası.

kaos maymunu
Chaos Monkey

Litmus

Kubernetes yerel kaos mühendisliği, pod'lar, düğümler ve ağ politikaları için önceden oluşturulmuş deneylerle.

# Pod silme için Litmus kaos deneyi
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
  name: pod-delete-chaos
spec:
  appinfo:
    appns: default
    applabel: app=api-server
  chaosServiceAccount: pod-delete-sa
  experiments:
  - name: pod-delete
    spec:
      components:
        env:
        - name: TOTAL_CHAOS_DURATION
          value: '30'
Litmus
Litmus

Chaos Mesh

Platform düzeyinde hata enjekte eden bir başka Kubernetes odaklı araç.

kaos ağı
Chaos Mesh

API Düzeyinde Kaos Testi için Apidog

Altyapı kaos araçları sunucuları ve ağları hedeflerken, Apidog API düzeyinde kaosla ilgilenir—blok zinciri ve mikro hizmet uygulamaları için kritik bir konudur:

apidog ile test etme

API Yanıt Kaosu:

// Apidog testi: API'nin rastgele 500 hataları döndürmesini simüle edin
Test: GET /api/balance - Kaos Modu
Ne Zaman: İstek gönderildiğinde
Kural 1: Yanıt 500 ise, 3 deneme içinde yeniden deneme başarılı olmalıdır
Kural 2: Sistem hata kaydı tutmalı ve uyarı vermelidir
Kural 3: Kullanıcı arayüzü kullanıcı dostu bir mesaj göstermelidir

Performans Kaosu:

// Apidog: Gecikme altında API davranışını test edin
Test: POST /api/transactions - Yavaş Ağ
Ne Zaman: İstek 2000ms gecikme simülasyonu ile gönderildiğinde
Kural 1: Zaman aşımı 5 saniye sonra tetiklenmelidir
Kural 2: İşlem kopyalanmamalıdır
Kural 3: Kullanıcı "yeniden dene" uyarısı görmelidir

Veri Kaosu:

// Apidog: Bozuk blok zinciri verileriyle API'yi test edin
Test: API geçersiz işlem karmasını yönetir
Ne Zaman: Yanlış biçimli karma gönderildiğinde (0x123 yerine 0x123...64)
Kural 1: Belirli bir doğrulama hatasıyla 400 Durumu
Kural 2: Hata mesajı doğru biçimi açıklar
Kural 3: Sistem denemeyi kaydeder ancak çökmez

Apidog'un avantajı, bu kaos test senaryolarını OpenAPI spesifikasyonunuzdan otomatik olarak oluşturması ve ardından kopma noktalarını hızla bulmak için bunları paralel olarak yürütmesidir.

apidog ile test etme
button

Kaos Testi vs Diğer Test Türleri

Test Türü Odak Noktası Tetikleyici Amaç Sıklık
Yük Testi Normal yük kalıpları Simüle edilmiş kullanıcılar Kapasite limitlerini bulmak Yayın öncesi
Stres Testi Aşırı yük Kaynakları maksimuma çıkarmak Kopma noktasını bulmak Yayın öncesi
Yük Devretme Testi Tek bileşen arızası Manuel kapatma Yedeklemenin çalıştığını doğrulamak Üç aylık
Kaos Testi Rastgele, gerçek dünya arızaları Otomatik enjeksiyon Dayanıklılık oluşturmak Sürekli

Kaos Testi, sürekli ve öngörülemez olması nedeniyle farklılık gösterir. Yük testi Kara Cuma trafiğini yönetebileceğinizi doğrular, kaos testi ise ödeme işlemcinizin veritabanı Kara Cuma sırasında çöktüğünde hayatta kalmanızı sağlar.

Kaos Testi için En İyi Uygulamalar

Hazırlık Ortamında Başlayın: Kaos deneylerine asla üretimde başlamayın. Önce üretim dışı ortamda dayanıklılığı kanıtlayın.

  1. Küçük Başlayın: Tüm bölge kesintilerini simüle etmeden önce tek örnekli arızalarla başlayın.
  2. Bir Acil Durum Düğmesi Bulunsun: Her deney anında geri alınabilir olmalıdır. Deneyleri iptal etmeyi pratiğe dökün.
  3. Her Şeyi Ölçün: Gecikme, hata oranları, kurtarma süresi ve veri bütünlüğü metriklerini toplayın.
  4. Oyun Günleri: Ekiplerin koordineli deneyler yaptığı ve olaylara müdahale pratiği yaptığı düzenli "kaos oyun günleri" planlayın.
  5. Sorumluluktan Muaf Kültür: Kaos deneyleri zayıflıklar bulduğunda, bunları başarısızlıklar olarak değil, öğrenme fırsatları olarak değerlendirin.

Sıkça Sorulan Sorular

S1: Kaos Testi tehlikeli mi? Üretimi bozabilir mi?

Cevap: Sadece pervasızca yapılırsa. Hazırlık ortamında başlayın, patlama yarıçapı limitleri kullanın ve her zaman bir acil durum düğmesi bulundurun. Kaos mühendisliği, rastgele yıkım değil, kontrollü bir deneydir.

S2: Kaos Testi, sadece bir şeyleri bozmaktan nasıl farklıdır?

Cevap: Kaos Testi bilimseldir. Bir hipotezle başlar, belirli hataları enjekte eder, somut sonuçları ölçer ve bulguları iyileştirmek için kullanır. Rastgele hatalar, ölçüm ve analiz olmadan hiçbir şey öğretmez.

S3: Kaos Testine başlamak için özel araçlara ihtiyacım var mı?

Cevap: Başlangıçta hayır. Hataları manuel olarak simüle edebilirsiniz (bir hizmeti durdurmak, ağ gecikmesi oluşturmak gibi). Ancak ölçekte, Gremlin veya Litmus gibi araçlar, manuel kaosun eşleşemeyeceği güvenlik kontrolleri, otomasyon ve ölçüm sağlar.

S4: Kaos Testi geleneksel Kalite Güvenceyi değiştirebilir mi?

Cevap: Hayır. Kaos Testi, işlevsel testleri tamamlar. Her ikisine de ihtiyacınız vardır: işlevsel testler özelliklerin çalıştığını doğrular; kaos testleri özelliklerin arızalardan sonra hayatta kaldığını doğrular.

S5: Apidog Kaos Testine nasıl yardımcı olur?

Cevap: Apidog, API'lerinizin yavaş yanıtları, hataları ve yanlış biçimlendirilmiş verileri nasıl işlediğini doğrulayan test senaryoları oluşturarak API düzeyinde kaos testini otomatikleştirir. Bu, blok zinciri düğümlerine veya harici hizmetlere bağımlı olan mikro hizmetler için çok önemlidir.

Sonuç

Kaos Testi, Netflix'in agresif sunucu öldürme pratiğinden, kontrollü arıza yoluyla güven oluşturan disiplinli bir mühendislik uygulamasına dönüşmüştür. Sisteminizin çalkantılı koşullara dayanabileceğini sistematik olarak kanıtlayarak, hafta sonlarını ve itibarları mahveden sabah 3'teki çağrıları önlersiniz.

Anahtar, küçük başlamak, her şeyi ölçmek ve her başarısız deneyi, bir kesintiye dönüşmeden önce bir zayıflığı ortaya çıkaran bir hediye olarak görmektir. Gremlin ve Litmus gibi araçlar altyapı kaosunu yönetirken, Apidog API düzeyinde dayanıklılık testini otomatikleştirir - özellikle API bağımlılıklarının basamaklı arıza riskleri yarattığı blok zinciri ve mikro hizmet mimarileri için değerlidir.

Kaos yolculuğunuza bugün başlayın. Kritik olmayan tek bir hizmeti seçin. Kararlı durumunu tanımlayın. Küçük bir hata enjekte edin. Gözlemleyin. Öğrenin. İyileştirin. Tekrarlayın. Gerçek dünya dayanıklılığı için blok zinciri uygulamalarını ve herhangi bir dağıtılmış sistemi böyle test edersiniz.

button

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin