API testlerini elle yazmadan elde etmenin bir yolunu aradıysanız, muhtemelen Keploy ile karşılaşmışsınızdır. Neredeyse kulağa fazla uygun gelen bir şey vadediyor: çalışan uygulamanıza yöneltin, gerçek trafiği izlemesine izin verin ve bir test paketiyle ayrılın. Peki Keploy perde arkasında aslında ne yapıyor ve test yığınızda nereye uyuyor?
Bu kılavuz, Keploy'un ne olduğunu, kaydet-ve-oynat motorunun eBPF ağ katmanında nasıl çalıştığını, sunduğu iki iş akışını, nasıl kurulacağını ve çalıştırılacağını ve onu benimsemeden önce bilmeniz gereken dürüst sınırlamaları açıklıyor.
Keploy Nedir
Keploy, API, entegrasyon ve uçtan uca testler için güvenli, izole üretim sanal alanları oluşturmaya yönelik açık kaynaklı (Apache-2.0 lisanslı) bir platformdur. Temel fikir, gerçek uygulamanızın zaten test etmek istediğiniz davranışı sergilemesidir. Keploy, bu davranışı test kodunda açıklamanızı istemek yerine, onu gözlemler ve tekrarlanabilir testlere dönüştürür.

Bunu yapmanın iki yolunu sunar:
- Kaydet ve tekrar oynat gerçek API etkileşimlerini ve bağımlılıklarını yakalar, ardından bunları deterministik olarak tekrar oynatır.
- Yapay zeka test üretimi, bir özellikten, bir koleksiyondan, bir cURL komutundan veya canlı bir uç noktadan doğrulanmış API test paketleri oluşturur.
Her ikisi de çalıştırılabilir testler ve canlı bağımlılıklara dokunmadan bunları çalıştırmak için gereken mock'ları üretir. Proje açık kaynaktır, böylece kodu okuyabilir ve kendi sunucunuzda barındırabilirsiniz. Depo github.com/keploy/keploy adresinde bulunur ve resmi belgeler keploy.io/docs adresindedir.
Keploy kaydı eBPF katmanında nasıl çalışır
Keploy'u farklı kılan kısım burasıdır. keploy record komutunu çalıştırdığınızda, sizden bir SDK eklemenizi veya uygulamanızın tek bir satırını değiştirmenizi istemez. Programların sistem olaylarını güvenli bir şekilde gözlemlemesine ve üzerinde hareket etmesine olanak tanıyan bir Linux çekirdek teknolojisi olan eBPF kullanarak trafiği ağ katmanında yakalar.
Bunun pratikte size sağladıkları şunlardır:
- Kodsız yakalama. Enstrümantasyon yok, test donanımı yok, işleyicilerinizde dekoratörler yok. Keploy, uygulamanızın altında oturur ve giren ve çıkan baytları izler.
- Dilden bağımsız yakalama. Yakalama, bir çalışma zamanının içinde değil de çekirdek ağ katmanında gerçekleştiği için, hizmetiniz Go, Python veya Rust ile yazılmış olsun, aynı şekilde çalışır.
- Bağımlılık yakalama. Keploy sadece gelen API çağrısını ve yanıtını kaydetmez. Aynı zamanda hizmetinizin veritabanı sorguları ve ağ veya akış olayları gibi bağımlılıklarına yaptığı giden çağrıları da kaydeder.
Bu son nokta önemlidir. Keploy bir isteği kaydettiğinde, tam resmi yakalar: API isteği, API yanıtı ve aradaki tüm bağımlılık çağrıları. Daha sonra bu tek gözlemlenen etkileşimden iki yapıt yazar:
- Beklenen istek ve yanıtı açıklayan bir test durumu.
- Canlı bir veritabanı veya aşağı akış hizmeti olmadan testin tekrar oynatılabilmesi için her bağımlılık çağrısı için mock'lar ve stub'lar.
Tekrar oynatma döngüyü kapatır. keploy test komutunu çalıştırdığınızda, kaydedilen istekleri uygulamanıza geri gönderir, yakalanan bağımlılık yanıtlarını oluşturulan mock'lardan sunar ve yeni yanıtları kaydedilenlerle karşılaştırır. Bir uyumsuzluk, bir şeyin değiştiği anlamına gelir. Yaklaşıma bu yüzden kaydet ve tekrar oynat denir: gerçek çalışma zamanı davranışını bir kez kaydedersiniz, ardından her değişiklikte bir regresyon testi olarak deterministik bir şekilde tekrar oynatırsınız.
İki Keploy iş akışı
Kaydet ve tekrar oynat
Çalışan bir uygulamanız olduğunda ve hızlı regresyon kapsamı istediğinizde bunu kullanın. Uygulamayı Keploy altında çalıştırırsınız, gerçek bir kullanıcı veya istemcinin yapacağı şekilde kullanırsınız (manuel çağrılar, mevcut bir entegrasyon testi veya canlı trafik) ve Keploy her etkileşimi bir test artı mock'ları olarak saklar. Daha sonraki çalıştırmalar bu etkileşimleri tekrar oynatır ve herhangi bir davranışsal sapmayı işaretler.
Yapay zeka test üretimi
Manuel kullanımınızın ürettiğinden daha geniş kapsam istediğinizde veya çalışan bir akıştan ziyade bir sözleşmeden başladığınızda bunu kullanın. Keploy, bir OpenAPI özelliğinden, bir Postman koleksiyonundan, bir cURL komutundan veya canlı bir uç noktadan doğrulanmış API test paketleri oluşturabilir. Bağımlılıkları otomatik olarak mock'lar ve gereksiz durumlarla kalmamanız için otomatik bir temizleme işlemi yapar.
İki iş akışı birbirini tamamlar. Kaydet ve tekrar oynat testleri gerçek gözlemlenen davranışlara dayandırır; yapay zeka test üretimi, özelliklerinizdeki boşlukları doldurur. Bir şemadan testler üreten araçları değerlendiriyorsanız, yapay zeka test durumu üreticileri hakkındaki derlememiz ve OpenAPI'den test betikleri oluşturma kılavuzu iyi yardımcılar olacaktır.
Keploy Kurulumu
Keploy bir yükleme betiği gönderir. Desteklenen bir sistemde şunu çalıştırırsınız:
curl --silent -O -L https://keploy.io/install.sh && source install.sh
Bu, ikili dosyayı getirir ve keploy komutunu kurar. Buradan her şeyi iki komut aracılığıyla yönetirsiniz.
Temel Keploy Komutları
En çok kullanacağınız iki komut vardır. İlki kaydeder:
keploy record -c "UYGULAMAYI_ÇALIŞTIR_KOMUTU"
Uygulamanızı başlatan tam komutu -c aracılığıyla iletirsiniz. Keploy uygulamanızı başlatır, siz onu kullanırken trafiği izler ve yakalanan test durumlarını ve mock'ları kaydeder.
İkincisi tekrar oynatır:
keploy test -c "UYGULAMAYI_ÇALIŞTIR_KOMUTU" --delay 10
--delay 10 bayrağı, Keploy'a kaydedilen istekleri göndermeye başlamadan önce on saniye beklemesini söyler, bu da daha yavaş bir hizmete tekrar oynatma başlamadan önce önyüklemeyi bitirmek için yeterli zaman verir. Uygulamanızın başlaması daha uzun sürerse, sayıyı artırın; hızlı başlıyorsa, azaltabilirsiniz.
Tipik bir ilk oturum şöyle görünür:
# 1. API'nize vururken kaydedin
keploy record -c "node server.js"
# 2. Yakalanan durumları tekrar oynatın ve sapmayı kontrol edin
keploy test -c "node server.js" --delay 10
Tüm döngü budur. Bilinen iyi bir derlemeye karşı bir kez kaydedin, ardından her değişiklikte CI'da keploy test komutunu çalıştırın.
Desteklenen diller, protokoller ve veri depoları
Yakalama ağ katmanında gerçekleştiği için Keploy geniş bir yüzeyi kapsar:
| Kategori | Desteklenen |
|---|---|
| Diller | Go, Java, Node.js, Python, Rust, C#, C/C++, TypeScript ve daha fazlası |
| Protokoller | HTTP/REST, gRPC, GraphQL, Kafka, RabbitMQ |
| Veri Depoları | PostgreSQL, MySQL, MongoDB, Redis |
Genişlik, eBPF tasarımının doğrudan bir sonucudur. Keploy ağ konuşmalarını okuyor, bu nedenle yeni bir dil veya çerçeve, bu protokollerden birini konuştuğu sürece yeni bir eklentiye ihtiyaç duymaz.
Keploy'u CI'da çalıştırma
Her iki komut da otomasyon için yapılmıştır. Bir işlem hattında, kaydedilen test durumlarını ve mock'ları kodunuzla birlikte commit edersiniz, ardından keploy test -c "..." komutunu bir adım olarak çalıştırırsınız. Mock'lar gerçek bağımlılıkların yerine geçtiği için, tekrar oynatma CI çalıştırıcısında canlı bir veritabanına veya aşağı akış hizmetine ihtiyaç duymaz, bu da işi hızlı ve deterministik tutar. Başarısız bir tekrar oynatma, bir birim testinin başarısız olması gibi derlemeyi başarısız kılar.
Dürüstçe Değerlendirilecek Sınırlamalar
Keploy yaptığı işte güçlüdür, ancak her durum için uygun değildir. Adil bir değerlendirme, ödünleri de içerir:
- Linux'a ve yükseltilmiş ayrıcalıklara eğilimlidir. eBPF bir Linux çekirdek özelliğidir ve o katmanda yakalama genellikle yükseltilmiş izinler gerektirir. Bu, onu nerede ve nasıl çalıştırabileceğinizi şekillendirir.
- Üretilen testler kürasyon gerektirir. Gerçek trafikten veya yapay zeka üretiminden oluşturulan testler bir başlangıç noktasıdır, bitmiş bir paket değildir. Bunları yine de gözden geçirir, gürültüyü budar ve hangi yakalanan davranışların aslında uygulanmaya değer sözleşmeler olduğuna karar verirsiniz.
- Bir test ve test üretme aracıdır, tam bir API yaşam döngüsü platformu değildir. Keploy, testleri yakalama, üretme ve tekrar oynatma üzerine odaklanır. API tasarımı, dokümantasyon, tüketiciler için mock sunucu yayınlama veya bir API özelliği etrafında ekip işbirliği gibi konuları ele almak için tasarlanmamıştır.
Bunların hiçbiri Keploy'a karşı bir eleştiri değildir. Bunlar, kategorisinin doğal sınırlarıdır. Bunları bilmek, sorununuzu mu yoksa sadece bir kısmını mı çözdüğüne karar vermenize yardımcı olur.
Apidog'un tasarlanmış test alternatifi olarak konumu
İhtiyacınız "gözlemlenen trafiği regresyon testlerine dönüştür" den daha genişse, tam yaşam döngüsü platformlarına bakmaya değer. Apidog, tasarım, hata ayıklama, mock oluşturma, dokümantasyon ve testi tek bir yerde kapsayan hepsi bir arada bir API platformudur. Felsefedeki fark, anlaşılması gereken anahtardır, çünkü Apidog ve Keploy farklı kategorilerde yer almaktadır.

Keploy, bağımlılık mock'ları dahil olmak üzere gerçek çalışma zamanı davranışını kodsuz olarak yakalar ve tekrar oynatır. Apidog ise tam tersi bir yol izler: bakımı yapılabilir test senaryolarını tasarlar ve yazarsınız, ardından bunları terminalden ve CI'dan Apidog CLI ile çalıştırırsınız. CLI, yazdığınız koleksiyonları CSV veya JSON aracılığıyla veri odaklı test, ortam değiştirme ve CLI, HTML ve JSON raporları ile çalıştırır. Apidog ayrıca, uygulamanın içinde yazılan API şemanızdan ve uç noktalarınızdan yapay zeka destekli test durumu üretimi sunar, bu da iki aracın çakıştığı noktadır.
Sınırı açıkça belirtmek gerekirse: Apidog, eBPF aracılığıyla canlı trafiği yakalamaz ve üretim çağrılarını ve bağımlılık mock'larını kaydederek testleri otomatik olarak üretmez. Bu gerçek trafikten kayıt yeteneği gerçekten Keploy'a aittir. Dürüst çerçeveleme, işe göre seçim yapmanız gerektiğidir. Sıfır kodla çalışma zamanı yakalama ve tekrar oynatma istediğinizde Keploy'a yönelin. API yaşam döngüsünün geri kalanını da halleden bir platformda tasarlanmış, bakımı yapılabilir test paketleri istediğinizde Apidog'a yönelin. Daha derinlemesine bir karşılaştırma için Apidog vs Keploy makalesine bakın ve geçiş yapmaya karar verdiyseniz, geçiş kılavuzu testlerinizi taşımayı kapsar.
Eğer bakımı yapılabilir, yazılmış API testleri arıyorsanız, Apidog'u indirebilir ve Apidog ile bir API'yi test etme kılavuzuyla başlayabilirsiniz.
Sıkça Sorulan Sorular
Keploy ücretsiz ve açık kaynak mı? Evet. Keploy, Apache-2.0 lisansı altında açık kaynaktır ve kodu GitHub'dadır. Kendi sunucunuzda barındırabilirsiniz.
Keploy uygulamamın kodunu değiştirmeyi gerektiriyor mu? Hayır. Kaydet-ve-tekrar oynat iş akışı, trafiği eBPF ağ katmanında yakalar, bu nedenle eklenecek bir SDK veya kod değişikliği yoktur. Bu aynı zamanda birçok dilde çalışmasının nedenidir.
keploy test içindeki --delay bayrağı ne işe yarar? Keploy'un kaydedilen istekleri göndermeden önce kaç saniye bekleyeceğini ayarlar, uygulamanızın önyükleme yapmasına zaman tanır. --delay 10 on saniye bekler; yavaş başlayan hizmetler için bunu artırın.
Keploy, testler sırasında veritabanımı mock'layabilir mi? Evet. Bir etkileşimi kaydettiğinde, bağımlılık çağrılarını (veritabanı sorguları gibi) da yakalar ve onlar için mock'lar yazar, böylece tekrar oynatmalar canlı bir veritabanı olmadan çalışır.
Keploy, bir API tasarım ve dokümantasyon aracının yerine geçer mi? Hayır. Keploy bir test ve test üretme aracıdır. API tasarımı, dokümantasyon, tüketiciler için mock oluşturma ve testle birlikte işbirliği için, Apidog gibi tam yaşam döngüsü platformu daha uygundur.
Kısa versiyon
Keploy, gerçek API davranışını testlere dönüştüren açık kaynaklı bir araçtır. Kaydet ve tekrar oynat motoru, eBPF kullanarak istekleri, yanıtları ve bağımlılık çağrılarını ağ katmanında kod değişikliği olmadan yakalar, ardından bunları deterministik regresyon testleri olarak tekrar oynatır. Yapay zeka test üretimi, bir spesifikasyondan veya uç noktadan paketler oluşturur. Linux'a eğilimli bir yakalama modeli, gözden geçirme gerektiren testler ve testle sınırlı bir kapsamın getirdiği ödünleşmelerle birlikte hızlıca benimsenebilir ve dilden bağımsızdır. Tam bir API platformu içinde yazılmış, bakımı yapılabilir test paketleri istiyorsanız, Apidog karşılaştırmak için alternatiftir.
