Kaos testi nedir?

Kaos testi, beklenmedik arızalar veya kesintiler ortaya çıkararak yazılım sistemlerinin dayanıklılığını test etmek için kullanılan bir tekniktir. Kaos testi, kaos mühendisliği olarak da bilinir. Kaos testinin amacı zayıflıkları belirlemek ve uygulamanızın dayanıklılığını geliştirmektir.

Kaos testi, sistemlerin beklenmedik şekillerde başarısız olduğu fikrine dayanır. Geleneksel test yöntemleri, bu beklenmedik arıza modlarını ortaya çıkarmada genellikle yetersiz kalmaktadır. Kaos testini kullandığınızda, sunucu çökmeleri, ağ gecikmesi veya kaynak tükenmesi gibi gerçek dünya senaryolarının benzetimini yaparsınız. Bu davranışları simüle etmek, normal test koşulları altında belirgin olmayabilecek gizli sorunların ve zayıflıkların ortaya çıkarılmasına yardımcı olur.

Kaos testiyle ilgili dikkat edilmesi gereken bazı önemli noktalar şunlardır:

  • Proaktif olun. Kaos testi, hataların oluşmasını beklemek yerine, sistemin nasıl yanıt verdiğini görmek için proaktif olarak arızaları kasıtlı olarak oluşturur. Kaos testi, sorunları büyük sorunlara dönüşmeden önce tanımlamanızı ve çözmenizi sağlar.
  • İçgörüler elde edin. Kaos testinin amacı hatalardan ders almaktır. Bunları tanıtarak, sistemin stres altında nasıl davrandığı hakkında değerli içgörüler elde edebilir ve bu bilgileri kullanarak geliştirebilirsiniz.
  • Ekip çalışmasını teşvik edin. Kaos testi, işbirliği içinde yaptığınızda en etkilidir. Geliştiricilerden, test edicilerden, operasyonlardan ve diğer paydaşlardan görüş almak istersiniz. Birlikte çalışarak, test edilecek en önemli alanları belirleyebilir ve herkesin bilgilendirilmesini sağlayabilirsiniz.
  • Küçük başlayın ve giderek ilerleyin. Kaos testine ilk başladığınızda, küçük başlamak ve testlerinizin karmaşıklığını kademeli olarak artırmak iyi bir fikirdir. Küçük bir başlangıç yapmak, güven oluşturmanıza ve sistemin farklı koşullar altında nasıl davrandığını daha iyi anlamanıza yardımcı olur.

Özetle, kaos testi, uygulamalarınızın dayanıklılığını artırmanıza yardımcı olabilecek güçlü bir tekniktir. Hataları proaktif bir şekilde kullanıma sunarak ve onlardan öğrenerek, sorunları önemli sorunlara dönüşmeden önce belirleyebilir ve düzeltebilirsiniz.

Uygulamanızın çağırmış olduğu API'ler için kaos testi

Kaos testi genellikle altyapıya odaklanır: sunucular, ağlar ve kapsayıcılar. Uygulamanız API'lere bağlıysa, kullanıcılarınızın fark ettiği bazı hatalar şu API'lerden gelir: bir ödeme sağlayıcısından 500, GitHub veya OpenAI'den 429 ya da 80 milisaniye yerine 8 saniye süren bir yanıt. Bu bağımlılıklara, tek tek API yanıtları düzeyinde aynı kaos testi fikirlerini uygulayabilirsiniz:

  • Hata. 5xxHataları rastgele döndürün ve uygulamanızın yeniden denenmesi güvenli olanları yeniden deneyip denemediğini ve geri kalanlar için yararlı bir ileti gösterip göstermediğini denetleyin.
  • Kısıtlama. Bir 429 üst bilgisiyle Retry-After döndürün ve uygulamanızın tekrar çağrı yapmadan önce beklediğini denetleyin.
  • Gecikme süresi. Yanıtları geciktirin ve zaman aşımlarınızı, spinner'larınızı ve yanıtlar farklı sırada geldiğinde ne olduğunu denetleyin.
Approach Bulduklarınız Kaçırdığınız şeyler
Üretim için bekleyin Gerçek hatalar Bir kullanıcı ona tıklayana kadar her şey
Testlerinizde API'yi taklit edin veya kodlama aracınızın mock'u yazmasına izin verin Hata dallarınızın çalışıp çalışmadığını kontrol edin API'nin gerçek hata biçimleri, SDK'nızın yeniden deneme ilkesi ve çalışan uygulamanın davranışı. Uygulamanızın mock nesnesine ulaşmak için yalnızca test amaçlı bir anahtara da ihtiyacı vardır.
Gerçek altyapıyı bozma (örneğin, bir hizmeti sonlandırma veya ağ trafiğini engelleme) Sisteminiz kesintilerle nasıl başa çıkıyor? Belirli bir hata kodu veya Retry-After üst bilgi gibi API düzeyinde hatalar
Uygulamanızın gerçek trafiğini yakalayın ve API hataları ekleyin Seçtiğiniz hızda gerçek URL'lerde hatalar, kısıtlama ve gecikme süresi Altyapı arızaları. Bunlar için altyapı kaos araçlarını kullanın.

Uygulamanızda deneyin

Dev Proxy, gerçek URL'leri çağırmaya devam ederken uygulamanızda API hatalarına neden olur. Kodunuzu değiştirmeden herhangi bir teknoloji yığınında her tür uygulamayla çalışır. Örneğin, bir API'ye yapılan isteklerin yarısının rastgele hatalarla başarısız olmasını sağlamak için Uygulamamı rastgele hatalarla test et bölümünü izleyin; bunları yavaşlatmak için bkz. Yavaş API yanıtlarını benzetme. CI işlem hattınızda aynı testleri çalıştırmak için bkz. CI/CD'de Geliştirme Proxy'si kullanma.

Sonraki adım